quran-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@quran-mcpwhat does the Quran say about patience?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
quran-mcp
The Quran, the major hadith collections and prayer times, for Claude and any other assistant that speaks the Model Context Protocol.
Ask "what does the Quran say about patience?", "give me Ayat al-Kursi in Arabic and French", "find the hadith about intentions in Bukhari" or "when is Isha in Brussels tonight?", and the assistant answers from the actual texts, with the exact reference for every quotation, instead of paraphrasing from memory.
Le Coran, les grands recueils de hadiths et les horaires de prière pour Claude et les autres assistants IA. Chaque citation revient avec sa référence exacte (sourate:verset, recueil et numéro), pour qu'une réponse puisse être vérifiée.
Tools
Tool | What it does |
| Arabic (Uthmani script) and translation of |
| Verses containing every word of the query, in the translation or in Arabic (vowel marks ignored) |
| The 114 surahs: name, meaning, Meccan or Medinan, verse count |
| About 440 translations in 90 languages (French: Hamidullah, Rashid Maash, ...) |
| Bukhari, Muslim, Abu Dawud, Tirmidhi, Nasa'i, Ibn Majah, Malik, Nawawi's 40, Qudsi; with grades when the collection has them |
| Computed locally from the sun's position: MWL, ISNA, Egypt, Umm al-Qura, Karachi, UOIF, Tehran; standard or Hanafi Asr; high latitude rule |
Related MCP server: hadith-mcp
Install
With uv installed, nothing else is needed:
claude mcp add quran -- uvx quran-mcpOr with pip: pip install quran-mcp, then claude mcp add quran -- quran-mcp.
Claude Desktop (claude_desktop_config.json):
{ "mcpServers": { "quran": { "command": "uvx", "args": ["quran-mcp"] } } }Texts are downloaded on first use (about 1.5 MB per Quran edition, a few MB per hadith
collection) into ~/.cache/quran-mcp and read from disk afterwards. Set
QURAN_MCP_CACHE to put them elsewhere.
Accuracy
Texts come from the open quran-api and hadith-api datasets. Nothing is generated or reworded by this server.
Prayer times match Aladhan to the minute for Fajr, sunrise, Dhuhr, Maghrib and Isha (tested in Brussels, Makkah, Casablanca and Sydney, summer and winter). Asr follows the exact shadow definition checked against the NOAA solar model, which can be one to three minutes earlier than Aladhan. Local mosques often add a few minutes of precaution: their timetable comes first.
The server gives sources, not rulings. Its instructions tell the assistant to quote references and to send fiqh questions to a qualified scholar.
Roadmap
Quran: verses, passages, surahs, Arabic search, 440 translations
Hadith: 10 collections, lookup and search
Prayer times, offline, 7 methods
Search by meaning (French "prière" should find Hamidullah's "Salât")
Tafsir Ibn Kathir and al-Jalalayn
Word-by-word Arabic, roots and transliteration
Hijri calendar and important dates
Qibla direction
Recitation audio links per verse
Comes from Isuramu, an offline Quran app for Android.
License
MIT for the code. The texts keep the terms of their sources.
Available Tools
7 toolsget_hadithARead-only
One hadith by its number in a collection (bukhari, muslim, abudawud, tirmidhi, nasai, ibnmajah, malik, nawawi, qudsi, dehlawi). Language: fra, eng, ara...
| Name | Required | Description | Default |
|---|---|---|---|
| number | Yes | ||
| language | No | fra | |
| collection | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety and locality are covered by structured data. The description adds the enumerable collection and language sets but says nothing about behavior beyond that, such as what happens with an out-of-range number or an unsupported collection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact clauses, front-loaded with the resource and the retrieval key, with no filler. The trailing ellipsis on the language list is the only minor blemish.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the collection enumeration covers the most important schema gap. Still missing are the semantics of 'number' and a complete language list, which matter for a 3-parameter lookup tool where two parameters are required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the load, and it does supply the ten valid collection identifiers that the schema lacks as enums. However it leaves 'number' completely unexplained (range, per-collection numbering scheme) and truncates the language list with 'fra, eng, ara...' rather than stating the full set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (fetch one hadith) plus the two-part retrieval key (collection + number), which cleanly separates it from the sibling search_hadith. It does not name the sibling explicitly, but the 'by its number' framing makes the exact-lookup vs. search distinction inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by its number in a collection' implies the precondition for use (you already know the collection and hadith number), but there is no explicit when-to-use statement, no guidance on falling back to search_hadith when the number is unknown, and no error guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_versesCRead-only
Arabic text and translation of a verse or a passage: '2:255', '2:255-257', or a surah number for the whole surah (up to 300 verses).
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes | ||
| translation | No | fra-muhammadhamidul |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint=true, openWorldHint=false), so the bar is lower, but the description adds almost nothing behavioral. The one useful hint is the 'up to 300 verses' payload-size warning for whole-surah requests; beyond that there is no mention of how translations are selected or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence front-loads the returned content and then the accepted reference forms. It is a fragment rather than a sentence, but nothing is wasted and the useful information comes first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value shape need not be described, and reference formats are covered. What is missing is guidance for the translation parameter and any routing signal against the four sibling retrieval tools, which an agent choosing among six tools genuinely needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load, and it does document the reference parameter well with three concrete format examples including ranges. However the 'translation' parameter is completely unaddressed — no mention of the code format or that list_translations supplies valid values — leaving half the surface undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (Quranic verses) and what is returned (Arabic text plus translation), and gives concrete reference shapes ('2:255', '2:255-257', whole surah). The retrieval verb is only implied by the tool name rather than stated, and nothing distinguishes it from sibling search_quran or list_surahs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains accepted reference formats but never says when to pick this tool over search_quran (keyword lookup) or list_surahs (enumeration). No exclusions, prerequisites, or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_surahsARead-only
The 114 surahs: number, name, meaning, place of revelation, verse count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds that the result is the full set of 114 surahs with specific fields, implying a static, parameter-free listing, but it does not disclose rate limits, auth needs, or other behavioral traits beyond what annotations and the output schema provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence fragment that wastes no words: the scope (114 surahs) comes first, followed by the exact fields returned. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (zero parameters, clear annotations, and an existing output schema), the description is nearly complete: it identifies the resource and its contents without needing to explain return values. The only meaningful gap is the absence of usage guidance relative to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to document. Per the rubric, a zero-parameter tool receives a baseline of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource ('The 114 surahs') and enumerates the returned metadata fields, making it clear this tool lists surah-level data rather than verses or translations. However, it lacks an explicit verb and does not name or contrast itself with siblings such as get_verses or search_quran, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no when-to-use guidance, no conditions for selecting this tool over alternatives, and no exclusions. An agent must infer its purpose entirely from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_translationsARead-only
Available translations of the Quran (about 440, in 90 languages), filtered by a language name such as 'french' or 'english'.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds useful scale context (440 translations across 90 languages) and the filtering dimension, but says nothing about whether an empty filter returns the full catalog or how large the response is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with the scale figures front-loaded and the parameter guidance trailing. No waste, though it is a noun phrase rather than a full sentence and could state its action verb more explicitly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is not required here. For a single optional-parameter listing tool with annotation coverage, the description supplies everything needed to call it correctly apart from the empty-filter semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter. It does: the 'language' field is explained as a language name with two concrete examples ('french', 'english'), which is more than the bare string schema provides. The empty-string default's 'return everything' behavior is left implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: 'Available translations of the Quran (about 440, in 90 languages)'. An agent can tell this is a catalog-listing tool rather than a verse or surah retriever, though it does not explicitly name any sibling as an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The filtering condition ('filtered by a language name such as french or english') implies when the parameter matters, but there is no statement of when to reach for this tool versus search_quran or get_verses, nor what to do with the results.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prayer_timesARead-only
Prayer times for a place and a day (YYYY-MM-DD, today by default), computed locally. timezone is an IANA name such as Europe/Brussels (the machine's zone by default). Methods: MWL, ISNA, Egypt, Makkah, Karachi, UOIF, Tehran. asr: standard or hanafi.
| Name | Required | Description | Default |
|---|---|---|---|
| asr | No | standard | |
| day | No | ||
| method | No | MWL | |
| latitude | Yes | ||
| timezone | No | ||
| longitude | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false; the description adds that results are 'computed locally', which independently confirms no network or external state is touched. It stops short of describing output shape or edge-case behavior (e.g., polar latitudes), but the output schema covers returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose, then defaults, then enum values. There is no filler and nothing that could be cut without losing invocation-critical detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter read-only computation tool with an output schema present, the description covers purpose, both defaults, and all enumerated values. Return format is covered by the output schema and safety by annotations, so nothing an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description carries the full burden and does so well: it gives the day format (YYYY-MM-DD, today by default), the timezone format (IANA name, machine zone by default), the full method enum (MWL, ISNA, Egypt, Makkah, Karachi, UOIF, Tehran), and the asr values (standard/hanafi). These are not present in the schema, so this is genuine added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise statement of what is produced (prayer times) for what inputs (a place and a day), and notes the computation happens locally. It is unmistakably distinct from every sibling (get_verses, list_surahs, search_hadith, etc.), so an agent can route to it without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through defaults (day defaults to today, timezone defaults to the machine zone), which tells the agent it can call with only lat/long. However, there is no explicit when-to-use versus when-not guidance, and no mention of alternatives or preconditions — though the sibling set contains no overlapping tool, so the omission is low-cost.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_hadithCRead-only
Hadiths of a collection containing every word of the query.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| language | No | fra | |
| collection | No | bukhari |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, covering the safety profile. The description adds one genuine behavioral fact beyond annotations: results must contain every word of the query (AND semantics, not fuzzy/OR matching). It says nothing about pagination, result ordering, or default scope, so this is adequate but thin against a lowered annotation bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no padding and the core matching semantics front-loaded, which is efficient. But the brevity is under-specification rather than disciplined conciseness, since none of the four parameters or the search scope is covered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. The gaps are on the input side: four undocumented parameters with non-obvious defaults, no language/collection value hints, and no indication of how matching behaves across languages. For a 4-parameter search tool this leaves the agent under-equipped.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters, so the description carries the full burden and largely fails: 'collection' is mentioned only in passing, and limit, language, and the default values (language='fra', collection='bukhari', limit=10) are never explained. An agent has no textual basis for choosing valid language or collection values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (hadiths) and implies a search operation via 'containing every word of the query', which conveys AND-matching semantics. However, no verb is stated and it never distinguishes itself from siblings like search_quran or get_hadith, so the agent must infer that this is the keyword-search entry point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus search_quran (scripture corpus) or get_hadith (single-record retrieval), nor any prerequisite or exclusion. The agent must infer usage purely from the corpus name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_quranARead-only
Find verses containing every word of the query, in the translation or in the Arabic (vowel marks and accents are ignored).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| translation | No | fra-muhammadhamidul |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds real behavioral value beyond that: AND-across-all-words matching and diacritic-insensitive Arabic search, which an agent cannot infer from the schema. It stops short of describing ranking or result ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, front-loaded on the matching rule, with the diacritic detail appended where it matters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, with three parameters at 0% schema coverage and a non-obvious translation-ID default, the description leaves an agent guessing about the most error-prone input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry parameter meaning. It only hints that a translation is involved; it never explains that the 'translation' param takes an identifier like the default 'fra-muhammadhamidul', nor what 'limit' controls. Two of three parameters remain effectively undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (find) and resource (verses) plus the matching semantics: every word of the query must appear, and matching covers both the translation text and the Arabic with vowel marks/accents normalized. This is enough to distinguish it from get_verses and search_hadith without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the description — keyword lookup of verses — but it never says when to prefer this over get_verses (known reference) or how it relates to list_translations. No explicit when/when-not guidance or named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.1.1- First observed
get_hadith - First observed
get_verses - First observed
list_surahs - First observed
list_translations - First observed
prayer_times - First observed
search_hadith - First observed
search_quran
TDQS
Scored across 7 tools
Each tool targets a distinct resource+action: reference lookup (get_verses) vs. full-text search (search_quran), hadith by number (get_hadith) vs. hadith search (search_hadith), plus distinct metadata (list_surahs, list_translations) and prayer_times. The lookup/search split is intuitive and well-communicated by the descriptions.
Six of seven tools follow a clear verb_noun pattern (get_verses, list_surahs, search_hadith, search_quran, list_translations, get_hadith). Only prayer_times deviates as a bare noun phrase, a minor but readable inconsistency.
Seven tools is well-scoped for a Quran/hadith reference server, covering retrieval, search, metadata, and prayer times without redundancy. Each tool earns its place.
The surface covers core workflows: verse retrieval, Quran search, translation listing, hadith retrieval/search, and prayer times. Gaps remain for tafsir/commentary and hadith-collection metadata, but the essential read-only lifecycle is covered.
Related MCP Connectors
Search and retrieve Quran ayahs, tafsir commentary, hadith, and detailed hadith records.
Curated Islamic MCP: Quran (Arabic + Pickthall), 440 du'as, 99 Names, crisis-aware.
Production-ready Muslim prayer reminder MCP with astronomical precision and theological disclosure.
Islamic prayer times & calendar MCP (Aladhan API). Keyless.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides AI assistants with comprehensive access to Islamic resources including Quran verses with translations, Tafsir commentary, Hadith collections, and audio recitations. Enables users to explore Islamic texts, get daily inspiration, and access scholarly interpretations through natural language queries.1829 npm10MIT
- AlicenseNot gradedqualityCmaintenanceEnables fetching and searching canonical hadith texts (Arabic and English) with cross-references and citation-safe URLs for assistants, built on FastMCP.3GPL 3.0
- AlicenseAqualityAmaintenanceConnects AI assistants to authentic Islamic content including Qur'an, Hadith, and resources in multiple languages via over 80 tools.732 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to retrieve canonical Quran text, translations, scholarly tafsir, full-text search, and word-level morphology from verified Quran data.-