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:
-
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
-
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
-
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)
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
Claude Prompt
Credits
- e-solat JAKIM - For the official prayer times
- WaktuSolat.app - Prayer Time by GPS
- Model Context Protocol - For the MCP framework
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.
Metadata
Release files for esolat-mcp 1.0.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| esolat_mcp-1.0.5.tar.gz | 12.3 kB | With provenance | Details for esolat_mcp-1.0.5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| esolat_mcp-1.0.5-py3-none-any.whl | Python 3 | none | any | Details for esolat_mcp-1.0.5-py3-none-any.whl |
Total release size: 25.0 kB
Release files / esolat_mcp-1.0.5.tar.gz
| Download URL | esolat_mcp-1.0.5.tar.gz |
|---|---|
| Size | 12.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
59d8ef61ea2b6184ef32f76cadc1d0e0687dcc1628519cb6b75ce7a793fe5a3e
|
|
BLAKE2b-256 checksum How to use checksums |
391f5e64b6f02982dcee971ecea7f4d755e423a806defaf9473560c20ed3ef8a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.
Transparency logRelease files / esolat_mcp-1.0.5-py3-none-any.whl
| Download URL | esolat_mcp-1.0.5-py3-none-any.whl |
|---|---|
| Size | 12.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0a7eb773f3af8d750e90c01efbf640c3bf324b48082976a805ac188ca58d92bc
|
|
BLAKE2b-256 checksum How to use checksums |
c982c3112ad43516fb6de200b392e19cfe1576ece790d210a13edd53dbfe9ee2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.
Transparency logSecurity for esolat-mcp 1.0.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for esolat_mcp-1.0.5.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 30, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.