Skip to main content

MCP server for prayer times (JAKIM/global), nearest mosque finder, and Islamic calendar events

Project description

eSolatMCP

GitHub Repo stars MCP Python Docker Buy

MCP server for accurate Malaysian prayer times (official JAKIM/e-Solat), nearest masjid and surau, and Islamic calendar events.

Gives AI assistants like Claude Desktop and Claude Code reliable, hallucination-free access to Islamic worship tools with smart Malaysia-first routing.

Features

  • Official JAKIM data for Malaysia (via Waktusolat.app API)
  • Dhuha time automatically calculated (+28 minutes after Syuruk)
  • Malay Hijri month names (Muharram, Safar, etc.)
  • Global fallback using Aladhan API
  • Nearest mosques/suraus with Google Maps + Waze deep links
  • Yearly Islamic events (Eid, etc.)
  • Dual mode: Local (stdio) + Remote (Docker + secure HTTP)
  • Health dashboard for upstream APIs

Tools

The server registers three powerful tools that Claude can discover and call automatically:

  1. get_monthly_prayer_times

    • Get full monthly prayer schedule (Fajr, Syuruk, Dhuha, Dhuhr, Asr, Maghrib, Isha)
    • Accepts place name or latitude/longitude
    • Returns both Gregorian and Hijri dates
  2. find_nearest_mosques

    • Find up to 15 nearest masjid/surau
    • Default radius: 5 km (configurable)
    • Malaysia uses official e-Solat data; global uses OpenStreetMap
    • Includes distance, coordinates, Google Maps & Waze links
  3. get_yearly_islamic_events

    • Major Islamic dates and holidays for a given year
    • Malaysia-aware routing

Quick Start

Option 1: Local / Stdio Mode (Recommended for Claude Desktop)

No clone needed:

uvx esolat-mcp

Claude Desktop config example:

{
  "mcpServers": {
     "esolat": {
      "command": "uvx",
      "args": ["esolat-mcp"]
    }
  }
}

Option 2: Docker / Remote HTTP Mode (Self-hosted)

1. Clone the repo and set up token:

git clone https://github.com/zubir2k/esolat-mcp.git
cd esolat-mcp
cp .env.example .env

2. Generate a strong token:

python -c "import secrets; print(secrets.token_urlsafe(32))"
# or: openssl rand -hex 32

3. Paste it into .env as MCP_WEBHOOK_TOKEN=your_token_here

4. Build and Start the container:

docker build -t esolat-mcp:latest .
docker compose up -d

5. Endpoints

- Streamable MCP HTTP Endpoint (main one for AI clients):

http://your-server-ip:8626/api/webhook/<MCP_WEBHOOK_TOKEN>/mcp

- Health Dashboard (useful for monitoring):

http://your-server-ip:8626/api/webhook/<MCP_WEBHOOK_TOKEN>

(GET request without /mcp — shows status of JAKIM, Aladhan, and Overpass APIs)

[!WARNING] Always keep your MCP_WEBHOOK_TOKEN secret. The token is part of the URL path for simple authentication. You can change the local port via the PORT environment variable.

For production: Consider using a reverse proxy (Nginx/Cloudflare) with HTTPS to prevent the token from being intercepted or leaked in access logs.

[!TIP] Prefer a simpler setup? If you want a no-server, no-Docker solution that runs on the edge, consider my Cloudflare Worker edition (free tier eligible). It automatically enforces HTTPS and avoids the self-hosting risks mentioned above.

👉 Head over to the repo: zubir2k/esolat-cfworker

Usage Examples (Claude)

Prayer Times

"What are today's prayer times in Kuala Lumpur?"
"Show me full prayer schedule for Penang this Ramadan."
"Prayer times for Kota Kinabalu next week."

Mosques

"Find the nearest mosque to me."
"Mosques within 10km of Petaling Jaya."
"Nearest surau from KLCC."

Events & Planning

"Major Islamic events in 2026 for Malaysia."
"Plan my trip to Johor Bahru: prayer times + nearest mosques + Eid dates."

Visual

Claude Config

Config

Claude Prompt

Prompt

Credits

License

This project is licensed under the MIT License.

Disclaimer & Data Source

Important Notice & Reliability Disclaimer

This integration pulls data directly from the official e-Solat JAKIM (Department of Islamic Development Malaysia) portal. However, please note:

  • No Liability: This integration is a community-driven project provided "as is" without any guarantees. The maintainer is not solely or legally responsible for any discrepancies, inaccuracies, delays, or omissions in prayer times or calendar dates.
  • Verify Important Times: Users are strictly advised to regularly check and verify times against the official JAKIM eSolat Portal or official local announcements, especially for critical obligations (e.g., fasting, community prayers).
  • Network & Upstream Dependencies: Synchronization depends on upstream API availability and local network connectivity. Discrepancies caused by unexpected server updates from JAKIM or local server downtime are outside the control of this software.

By using this tool, you acknowledge and agree that the developer holds no liability for missed schedules or data inaccuracies.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

esolat_mcp-1.0.2.tar.gz (11.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

esolat_mcp-1.0.2-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file esolat_mcp-1.0.2.tar.gz.

File metadata

  • Download URL: esolat_mcp-1.0.2.tar.gz
  • Upload date:
  • Size: 11.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for esolat_mcp-1.0.2.tar.gz
Algorithm Hash digest
SHA256 ce95844a7955b2819f6e0b1f58610e21dc2ddb36b75315957ee0db2055301b10
MD5 54c39ef7a2da5ddc8cb2f785e621d2ef
BLAKE2b-256 5c52def28928b1850147dd2c8d689b2167be3aba9abd461ec6aba7db049cdbcc

See more details on using hashes here.

Provenance

The following attestation bundles were made for esolat_mcp-1.0.2.tar.gz:

Publisher: publish.yml on zubir2k/esolat-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file esolat_mcp-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: esolat_mcp-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for esolat_mcp-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b8eb690b9e0fd8bcf691b146b0591f61db41d2d7ff8195cea1ee2be6931d9e09
MD5 f174e4422a838b09b8f2a0fe37f769d2
BLAKE2b-256 a6a533ef2fbd13fcee3f5a1216ae58447afd983fc78636e1a125b32c807bd72b

See more details on using hashes here.

Provenance

The following attestation bundles were made for esolat_mcp-1.0.2-py3-none-any.whl:

Publisher: publish.yml on zubir2k/esolat-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page