$git clone https://github.com/ahmedeltaher/azan-mcpAzan-MCP is an open-source Model Context Protocol (MCP) server that brings a comprehensive suite of Islamic utilities directly into AI assistants such as Claude Desktop. It enables any LLM client that supports MCP to answer Islamic questions
| 1 | # Azan-MCP |
| 2 | |
| 3 |  |
| 4 |  |
| 5 |  |
| 6 |  |
| 7 |  |
| 8 |  |
| 9 |  |
| 10 |  |
| 11 | |
| 12 | **Azan-MCP** is an open-source [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that brings a comprehensive suite of Islamic utilities directly into AI assistants such as Claude Desktop. It enables any LLM client that supports MCP to answer Islamic questions with accuracy, proper sourcing, and full awareness of the user's location, timezone, and madhab. |
| 13 | |
| 14 | |
| 15 | ### What it does |
| 16 | |
| 17 | - **Prayer Times** — Calculates the five daily prayers (Fajr, Dhuhr, Asr, Maghrib, Isha) plus Sunrise for any location on Earth using the full Meeus solar algorithm. Supports 10 internationally recognised calculation methods and both Hanafi and Shafi madhab for Asr. Also computes Qibla direction, monthly calendars, and Sunnah prayer windows (Duha, Awwabin, Tahajjud). |
| 18 | |
| 19 | - **Azan & Iqama** — Returns the full Azan text in Arabic and transliteration (with the Fajr Tatwidh variant), calculates Iqama times based on configurable per-prayer offsets, and provides a complete daily Azan schedule. |
| 20 | |
| 21 | - **Islamic Calendar** — Converts dates between Gregorian and Hijri calendars, lists named Islamic events with their Gregorian equivalents, and identifies recommended voluntary fasting days (Mondays/Thursdays, Ayyam al-Beed, 6 days of Shawwal, Day of Arafah). |
| 22 | |
| 23 | - **Du'a & Dhikr** — Provides sourced morning and evening adhkar, du'a collections across 15 topics (travel, eating, anxiety, protection, and more), and du'as for every position in salah. Every entry is traced to its hadith reference with a confidence rating. |
| 24 | |
| 25 | - **Zakat & Islamic Calculators** — Calculates Zakat due on cash, gold, silver, and trade goods; determines Nisab thresholds; computes Suhoor/Iftar times for Ramadan date ranges; and distributes inheritance according to Faraid (Quran 4:11-12) using exact fractional arithmetic with Aul handling. |
| 26 | |
| 27 | - **99 Names of Allah** — The complete Asma ul-Husna with Arabic text, transliteration, meaning, and explanation for all 99 names, fully searchable. |
| 28 | |
| 29 | --- |
| 30 | |
| 31 | |
| 32 |  |
| 33 | |
| 34 | |
| 35 | ### Design principles |
| 36 | |
| 37 | | Principle | How it is applied | |
| 38 | |-----------|------------------| |
| 39 | | **Accuracy** | Prayer engine implements the full Meeus astronomical algorithm (±2 min vs IslamicFinder). Hijri conversion uses the `hijridate` library. | |
| 40 | | **Authenticity** | Every Du'a and Dhikr entry carries a hadith source reference and a confidence level (`high` = Bukhari/Muslim, `medium` = Sunan books). | |
| 41 | | **Transparency** | All tool responses include a `meta` block stating the calculation method, madhab, source, and confidence used. | |
| 42 | | **Discoverability** | Tools like `list_dua_topics` and `list_calculation_methods` prevent the LLM from guessing invalid inputs. | |
| 43 | | **Safety** | Zakat, Faraid, and calendar tools include a "consult a qualified scholar" disclaimer in every response. | |
| 44 | | **Zero friction** | Installable with a single `uvx azan-mcp` command — no npm, no Docker, no manual setup. | |
| 45 | |
| 46 | ### Tech Stack |
| 47 | |
| 48 | Built with **Python 3.12+** and **FastMCP** (the official Anthropic MCP SDK). The prayer time engine is vendored directly from the Meeus algorithm using Python's standard library only (`math`, `datetime`, `zoneinfo`) — no stale third-party astronomical dependency. The Hijri calendar uses the actively maintained `hijridate` package. |
| 49 | |
| 50 | ### Folder Structure |
| 51 | ``` |
| 52 | src/azan_mcp/ |
| 53 | ├── server.py # FastMCP entry point — 34 tools across 6 modules |
| 54 | ├── config.py # UserConfig dataclass (loc |