Skip to main content
Glama
Azan-MCP
by bartest5

Azan-MCP

License Python MCP Tools Tests PyPI Hijri Methods

Azan-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 with accuracy, proper sourcing, and full awareness of the user's location, timezone, and madhab.

What it does

  • 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).

  • 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.

  • 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).

  • 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.

  • 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.

  • 99 Names of Allah — The complete Asma ul-Husna with Arabic text, transliteration, meaning, and explanation for all 99 names, fully searchable.


MCP Architecture

Design principles

Principle

How it is applied

Accuracy

Prayer engine implements the full Meeus astronomical algorithm (±2 min vs IslamicFinder). Hijri conversion uses the hijridate library.

Authenticity

Every Du'a and Dhikr entry carries a hadith source reference and a confidence level (high = Bukhari/Muslim, medium = Sunan books).

Transparency

All tool responses include a meta block stating the calculation method, madhab, source, and confidence used.

Discoverability

Tools like list_dua_topics and list_calculation_methods prevent the LLM from guessing invalid inputs.

Safety

Zakat, Faraid, and calendar tools include a "consult a qualified scholar" disclaimer in every response.

Zero friction

Installable with a single uvx azan-mcp command — no npm, no Docker, no manual setup.

Tech Stack

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.

Folder Structure

src/azan_mcp/
├── server.py          # FastMCP entry point — 34 tools across 6 modules
├── config.py          # UserConfig dataclass (location, timezone, method, madhab)
├── prayer_engine.py   # Vendored Meeus solar algorithm
├── tools/             # One module per epic: prayer_times, azan, calendar,
│                      #   dua_dhikr, calculators, asma
└── data/              # adhkar.json · duas.json · asma_ul_husna.json

Supported Calculation Methods

ID

Name

Fajr°

Isha

umm_al_qura

Umm al-Qura, Makkah

18.5

90 min after Maghrib

mwl

Muslim World League

18

17°

isna

ISNA

15

15°

egypt

Egyptian General Authority

19.5

17.5°

karachi

Univ. of Islamic Sciences, Karachi

18

18°

tehran

Univ. of Tehran

17.7

14°

kuwait

Kuwait

18

17.5°

uoif

UOIF (France)

12

12°

ithna_ashari

Ithna Ashari

16

14°

muhammadiyah

Muhammadiyah

20

18°

Related MCP server: Zmanim MCP Server

Tools

#

Tool

Category

Description

1

get_server_info

Core

Active config: location, timezone, calculation method, madhab

2

list_calculation_methods

Core

All 10 method IDs with Fajr/Isha angles

3

get_prayer_times

Prayer Times

All 5 prayers + Sunrise for a date and location

4

get_next_prayer

Prayer Times

Name and time of the next upcoming prayer

5

get_time_until_next_prayer

Prayer Times

Minutes until next prayer + human-readable countdown

6

get_qibla_direction

Prayer Times

Bearing in degrees + 16-point cardinal toward Makkah

7

get_monthly_prayer_calendar

Prayer Times

Full month prayer schedule (28–31 days)

8

get_sunnah_prayer_times

Prayer Times

Duha, Awwabin, and Tahajjud time windows

9

get_azan_text

Azan & Iqama

Full Azan text in Arabic and/or transliteration (Fajr variant included)

10

get_iqama_time

Azan & Iqama

Iqama time = adhan + configured offset

11

set_iqama_offset

Azan & Iqama

Update iqama delay (minutes after adhan) per prayer

12

get_daily_azan_schedule

Azan & Iqama

All 5 adhan + iqama times for today

13

get_hijri_date

Islamic Calendar

Today's or a given date's Hijri equivalent

14

convert_gregorian_to_hijri

Islamic Calendar

Gregorian → Hijri conversion

15

convert_hijri_to_gregorian

Islamic Calendar

Hijri → Gregorian conversion

16

get_islamic_events

Islamic Calendar

Named Islamic events for a Hijri year/month with Gregorian dates

17

get_ramadan_dates

Islamic Calendar

Gregorian start and end dates of Ramadan for a given year

18

get_eid_dates

Islamic Calendar

Eid al-Fitr and Eid al-Adha dates for a given year

19

get_voluntary_fasting_dates

Islamic Calendar

Mondays/Thursdays, Ayyam al-Beed, 6 Shawwal, Day of Arafah

20

get_morning_adhkar

Du'a & Dhikr

Complete morning adhkar with Arabic, transliteration, source

21

get_evening_adhkar

Du'a & Dhikr

Complete evening adhkar with Arabic, transliteration, source

22

list_dua_topics

Du'a & Dhikr

All available topic slugs (travel, eating, anxiety, …)

23

get_dua_by_topic

Du'a & Dhikr

All du'as for a given topic

24

search_dua

Du'a & Dhikr

Full-text search across Arabic, transliteration, translation

25

get_counter_recommendation

Du'a & Dhikr

Recommended repetition count and virtues for a dhikr

26

get_prayer_dua

Du'a & Dhikr

Du'as for ruku, sujood, tashahhud, and after salah

27

calculate_zakat

Zakat & Calculators

2.5% Zakat due on cash, gold, silver, or trade goods above nisab

28

calculate_gold_nisab

Zakat & Calculators

Nisab threshold = 85g × gold price per gram

29

calculate_silver_nisab

Zakat & Calculators

Nisab threshold = 595g × silver price per gram

30

calculate_fasting_times

Zakat & Calculators

Suhoor (Fajr) and Iftar (Maghrib) for a date range (max 31 days)

31

calculate_inheritance_basic

Zakat & Calculators

Faraid fixed shares with Aul handling (Quran 4:11-12)

32

get_asma_ul_husna

99 Names

All 99 Names of Allah with Arabic, transliteration, and meaning

33

get_name_of_allah

99 Names

Look up a name by number (1–99) or transliteration

34

search_asma_ul_husna

99 Names

Search names by meaning, transliteration, or Arabic text

Quickstart

uvx azan-mcp

Or with a config file:

AZAN_CONFIG=/path/to/azan-config.json uvx azan-mcp

Claude Desktop Setup

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "azan": {
      "command": "uvx",
      "args": ["azan-mcp"],
      "env": {
        "AZAN_CONFIG": "/path/to/your/azan-config.json"
      }
    }
  }
}

Configuration

Create an azan-config.json file (see examples/azan-config.example.json):

{
  "latitude": 21.3891,
  "longitude": 39.8579,
  "timezone": "Asia/Riyadh",
  "calculation_method": "umm_al_qura",
  "madhab": "shafi",
  "iqama_offsets": {
    "fajr": 20, "dhuhr": 10, "asr": 10, "maghrib": 5, "isha": 15
  }
}

Development

uv sync
uv run pytest tests/ -v --ignore=tests/test_integration.py

License

This project is licensed under the MIT License — see the LICENSE file for details.

MIT License

Copyright (c) 2026 Azan-MCP Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Available Tools

34 tools
calculate_fasting_timesB

Return Suhoor end (Fajr) and Iftar start (Maghrib) for each day in a date range (max 31 days). Dates in ISO 8601 format.

Inputs: end_date (required), start_date (required), latitude, longitude.

calculate_gold_nisabA

Return the Zakat Nisab threshold based on 85 grams of gold at the given price.

Inputs: gold_price_per_gram (required), currency.

calculate_inheritance_basicB

Calculate basic Faraid (Islamic inheritance) fixed shares. spouse: 'husband', 'wife', or None. Returns share fractions and amounts per heir.

Inputs: estate_value (required), sons, father, mother, +3 more.

calculate_silver_nisabA

Return the Zakat Nisab threshold based on 595 grams of silver at the given price.

Inputs: silver_price_per_gram (required), currency.

calculate_zakatC

Calculate Zakat due on wealth. wealth_type: cash, gold, silver, trade_goods. Provide gold or silver price per gram to determine nisab.

Inputs: amount (required), wealth_type (required), currency, gold_price_per_gram, +1 more.

convert_gregorian_to_hijriA

Convert a Gregorian calendar date to its Hijri equivalent.

Inputs: day (required), year (required), month (required).

convert_hijri_to_gregorianB

Convert a Hijri calendar date to its Gregorian equivalent.

Inputs: hijri_day (required), hijri_year (required), hijri_month (required).

get_asma_ul_husnaA

Return all 99 Names of Allah (Asma ul-Husna) with Arabic, transliteration, meaning, and explanation.

Inputs: no named parameters.

get_azan_textA

Return the full Azan text. prayer: fajr, dhuhr, asr, maghrib, isha. language: arabic, transliteration, or both.

Inputs: prayer (required), language.

get_counter_recommendationA

Return the recommended repetition count and virtues for a specific dhikr by its ID.

Inputs: dhikr_id (required).

get_daily_azan_scheduleA

Return today's complete Azan schedule: adhan time and iqama time for all 5 daily prayers.

Inputs: no named parameters.

get_dua_by_topicA

Return all du'a entries for a given topic. Use list_dua_topics to see available topics (e.g. travel, eating, anxiety, sleeping).

Inputs: topic (required).

get_eid_datesA

Return the Gregorian dates of Eid al-Fitr and Eid al-Adha for a given year.

Inputs: gregorian_year (required).

get_evening_adhkarA

Return the complete set of evening adhkar (Adhkar al-Masa) with Arabic, transliteration, translation, source, and recommended count.

Inputs: no named parameters.

get_hijri_dateB

Return today's (or a given ISO date's) equivalent in the Islamic Hijri calendar.

Inputs: date.

get_iqama_timeB

Return the Iqama time (adhan + configured offset) for a given prayer. prayer: fajr, dhuhr, asr, maghrib, isha.

Inputs: prayer (required), date.

get_islamic_eventsA

Return named Islamic events for a Hijri year. Optionally filter by hijri_month (1–12).

Inputs: hijri_year (required), hijri_month.

get_monthly_prayer_calendarB

Return a full month's prayer schedule. month is 1-12.

Inputs: year (required), month (required), latitude, longitude.

get_morning_adhkarA

Return the complete set of morning adhkar (Adhkar al-Sabah) with Arabic, transliteration, translation, source, and recommended count.

Inputs: no named parameters.

get_name_of_allahA

Look up a specific Name of Allah by number (1–99) or transliteration (e.g. 'Ar-Rahman' or 'rahman').

Inputs: identifier (required).

get_next_prayerC

Return the name and time of the next upcoming prayer from right now.

Inputs: latitude, longitude.

get_prayer_duaA

Return du'as for a specific position in salah. position: ruku, sujood, tashahhud, after_salah.

Inputs: position (required).

get_prayer_timesB

Return all 5 daily prayer times plus Sunrise for a given date and location. Date is ISO 8601 (YYYY-MM-DD); defaults to today. Location defaults to configured coordinates.

Inputs: date, latitude, longitude.

get_qibla_directionA

Return the Qibla bearing in degrees and 16-point cardinal direction toward the Kaaba in Makkah.

Inputs: latitude, longitude.

get_ramadan_datesB

Return the Gregorian start and end dates of Ramadan for a given year.

Inputs: gregorian_year (required).

get_server_infoA

Return the currently active server configuration: location, timezone, calculation method, madhab, and iqama offsets.

Inputs: no named parameters.

get_sunnah_prayer_timesA

Return Duha (Ishraq) and Tahajjud time windows for a given date.

Inputs: date, latitude, longitude.

get_time_until_next_prayerC

Return minutes until the next prayer and a human-readable countdown string (e.g. '2 hours 15 minutes').

Inputs: latitude, longitude.

get_voluntary_fasting_datesA

Return all recommended voluntary fasting days in a given Gregorian month: Mondays/Thursdays, Ayyam al-Beed, Day of Arafah, 6 days of Shawwal.

Inputs: gregorian_year (required), gregorian_month (required).

list_calculation_methodsA

List all 10 supported prayer time calculation methods with their Fajr/Isha angles.

Inputs: no named parameters.

list_dua_topicsA

List all available du'a topic slugs that can be used with get_dua_by_topic.

Inputs: no named parameters.

search_asma_ul_husnaA

Search the 99 Names of Allah by meaning, transliteration, or Arabic text.

Inputs: query (required).

search_duaA

Search across all du'a and adhkar by Arabic text, transliteration, translation, or topic. Returns matched entries with which fields matched.

Inputs: query (required), limit.

set_iqama_offsetA

Update the Iqama offset (minutes after adhan) for a prayer. Change is in-memory only and resets on server restart.

Inputs: prayer (required), offset_minutes (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 34 tool updatesv0.1.0
    • First observedcalculate_fasting_times
    • First observedcalculate_gold_nisab
    • First observedcalculate_inheritance_basic
    • First observedcalculate_silver_nisab
    • First observedcalculate_zakat
    • First observedconvert_gregorian_to_hijri
    • First observedconvert_hijri_to_gregorian
    • First observedget_asma_ul_husna
    • First observedget_azan_text
    • First observedget_counter_recommendation
    • First observedget_daily_azan_schedule
    • First observedget_dua_by_topic
    • First observedget_eid_dates
    • First observedget_evening_adhkar
    • First observedget_hijri_date
    • First observedget_iqama_time
    • First observedget_islamic_events
    • First observedget_monthly_prayer_calendar
    • First observedget_morning_adhkar
    • First observedget_name_of_allah
    • First observedget_next_prayer
    • First observedget_prayer_dua
    • First observedget_prayer_times
    • First observedget_qibla_direction
    • First observedget_ramadan_dates
    • First observedget_server_info
    • First observedget_sunnah_prayer_times
    • First observedget_time_until_next_prayer
    • First observedget_voluntary_fasting_dates
    • First observedlist_calculation_methods
    • First observedlist_dua_topics
    • First observedsearch_asma_ul_husna
    • First observedsearch_dua
    • First observedset_iqama_offset

TDQS

B3.2/5.0

Scored across 34 tools

Disambiguation2/5

Multiple tools have unclear boundaries: get_hijri_date and convert_gregorian_to_hijri do nearly the same thing, get_daily_azan_schedule overlaps with get_prayer_times and get_iqama_time, and get_islamic_events overlaps with get_ramadan_dates/get_eid_dates. Agents may struggle to pick the right tool despite descriptions.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (get_, calculate_, convert_, list_, search_, set_). Minor deviations like get_name_of_allah vs. get_asma_ul_husna and the vague get_counter_recommendation prevent a perfect score.

Tool Count2/5

34 tools is well above the 25+ threshold for 'too many'. While the domain is broad (prayer times, adhkar, dua, zakat, inheritance, etc.), this would be better split into focused servers to reduce cognitive load and selection errors.

Completeness4/5

The tool surface covers an impressively wide range of Islamic utilities: prayer times, qibla, azan, adhkar, dua, hijri calendar, zakat, inheritance, and names of Allah. Minor gaps remain, such as no config setters for location or calculation method beyond iqama offset, and no Zakat al-Fitr calculation.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides access to Malaysia prayer time data through Claude Desktop, enabling users to retrieve prayer times for specific zones, list available prayer zones, and check current prayer time status.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A comprehensive MCP server for calculating Jewish prayer times (zmanim) using the python-zmanim library, supporting multiple halachic opinions and global locations.
    6
    26 PyPI
    2
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Azan-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.
    34
    382
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server providing Malaysian/global prayer times (JAKIM + Aladhan fallback), nearest mosque/surau finder, and Islamic calendar events.
    4
    1
    MIT