Skip to the content.

Muslim Prayer Reminder MCP Logo

Privacy Policy

Last updated: 2026-10-02

Muslim Prayer Reminder is an open-source MCP server and application designed with a data-minimization architecture with pseudonymous operational analytics.

This policy clearly details every category of data processed, stored, or returned by this application across all endpoints and tools.


1. Data Categories & Processing

A. Input Data Processed Ephemerally

To compute astronomical prayer times and determine whether an obligatory prayer is currently due, the application accepts the following optional parameters:

Calculation inputs are processed in-isolate. Explicitly saved preferences and temporary deduplication markers have the retention described below.

B. Output Data Returned to Hosts and Models

The tools (get_prayer_status, get_today_prayer_times, get_next_prayer) return strictly prayer calculation results:

C. Zero Debug Telemetry & No Sensitive Echoing


2. Persistent Storage & Retention


3. Third-Party Sharing & Network Isolation


4. Host Environments & Platform Scope

When used within host platforms (such as ChatGPT, OpenAI Apps, Claude Desktop, Cursor, or Windsurf), the transmission of prompts and responses between your host client and the model is governed by the respective platform’s privacy policy.


5. User Rights & Data Deletion

Users retain full control over their preferences:


6. Publisher, Ownership & Open Source Verification

Operational analytics and location trust

Prayer queries require a supported city or end-user coordinates and timezone. Connector/server IP and Cloudflare edge geolocation never supply prayer location; missing inputs return location_required.

Each MCP tool call, initialize and tools/list request is logged as one row in a Cloudflare Durable Object (SQLite). A row holds: timestamp, registered tool name, success or error code, server time, client type (for example ChatGPT, Claude, Cursor), the language part of the host locale, the country the host reports for the end user (when provided), the end user’s local hour and weekday (derived from the host-reported timezone), the calculation authority used, and a flag showing whether the request came from one of OpenAI’s published IP ranges.

When the host sends anonymous subject and session identifiers, only a SHA-256 hash with the fixed public prefix mpr:v1:, truncated to 64 bits, is stored. These are pseudonymous identifiers, not a guarantee of anonymity. Raw identifiers, IP addresses, coordinates, city names and prayer results are never stored or returned. Dashboard user IDs show only the first 8 characters of a hash.

Event rows are deleted after 180 days. Per-user summary rows (first seen, last seen, call count) are deleted 400 days after the last call. Calls without a subject ID count as calls but not as users. Installs that never call a tool are not visible.

To mark traffic as coming from OpenAI, the Worker downloads OpenAI’s public IP list (https://openai.com/chatgpt-connectors.json) at most once a day. That request carries no user data.

The analytics dashboard (/analytics) and JSON report (/api/analytics) return aggregate figures and are protected by the ANALYTICS_TOKEN secret, or by AUTH_TOKEN when no analytics token is set. With neither configured they are public. The dashboard loads Chart.js from jsDelivr and fonts from Google Fonts; no analytics data is sent to either.