Skip to main content
Glama
mr-socialmedia

Mashhor Quran MCP Server

خادم MCP لمنصة مشهور قرآن

خادم Model Context Protocol واحد يعمل مع Claude وChatGPT وأي عميل آخر يدعم MCP — لا حاجة لبناء "بلجن" منفصل لكل منصة؛ هذا هو المعيار الحديث المشترك بينها. يوفّر للوكيل الذكي أدوات (tools) للقراءة فقط من بيانات القرآن الكريم العامة نفسها التي يستخدمها موقع quran.mashhor-hub.com: القراء، السور، البحث النصي في القرآن، مواقيت الصلاة، الإذاعات المباشرة، والتاريخ الهجري.

يعمل بطريقتين حسب حاجتك:

  • محليًا عبر stdio (src/server.mjs) — لا يحتاج حسابًا ولا مفتاح API ولا استضافة، يعمل مباشرة على جهازك مع Claude Desktop أو Claude Code.

  • عن بُعد عبر HTTP (src/http-server.mjs) — لاستخدامه كـ"موصل مخصص" (custom connector) في تطبيق Claude للجوال/الويب أو أي عميل MCP بعيد آخر، يحتاج استضافة تُشغّل عملية Node.js دائمة (انظر «الاستضافة عن بُعد (HTTP)» أدناه).

كلا الوضعين يتصلان بنفس الواجهات العامة (mp3quran.net، aladhan.com، quran-api) دون حاجة لمفتاح API أو قاعدة بيانات.

الأدوات المتاحة

الأداة

الوصف

list_surahs

أسماء سور القرآن الكريم الـ114 مع أرقامها

list_reciters

قائمة قراء القرآن مع رواياتهم (يمكن التصفية بجزء من الاسم)

get_surah_audio

رابط تلاوة سورة معيّنة بصوت قارئ محدد

search_quran

بحث نصي كامل في القرآن الكريم (يتجاهل التشكيل واختلاف الرسم)

get_ayah

نص آية محددة برقم السورة والآية

list_radio_stations

إذاعات القرآن الكريم المباشرة

get_prayer_times

مواقيت الصلاة لمدينة معروفة أو إحداثيات

get_hijri_date

التاريخ الهجري اليوم (أو لتاريخ ميلادي محدد)

غير متاح بعد: لا توجد أداة للتفسير (tafsir) رغم توفره في الموقع الرئيسي — لم تُبنَ بعد ضمن هذا الإصدار. أخبرني إن أردتها.

Related MCP server: Azan-MCP

التثبيت

cd mcp-server
npm install

الربط بـ Claude Desktop

أضف هذا إلى ملف الإعداد (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json، ويندوز: %APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "mashhor-quran": {
      "command": "node",
      "args": ["المسار-الكامل-لهذا-المجلد/mcp-server/src/server.mjs"]
    }
  }
}

أعد تشغيل Claude Desktop بعدها.

الربط بـ Claude Code

في مجلد أي مشروع تريد استخدام الأداة داخله، أنشئ/عدّل .mcp.json:

{
  "mcpServers": {
    "mashhor-quran": {
      "command": "node",
      "args": ["المسار-الكامل-لهذا-المجلد/mcp-server/src/server.mjs"]
    }
  }
}

أو عبر الأمر المباشر:

claude mcp add mashhor-quran -- node "المسار-الكامل-لهذا-المجلد/mcp-server/src/server.mjs"

الاستضافة عن بُعد (HTTP)

لاستخدام الخادم كموصل مخصص (custom connector) في تطبيق Claude للجوال/الويب، أو في ChatGPT عبر Connectors، أو أي عميل MCP بعيد آخر — هذه العملاء تتطلب رابط https:// حيًا وليس عملية محلية. src/http-server.mjs يوفّر هذا عبر نقل Streamable HTTP الرسمي، بلا حالة (stateless): كل طلب مستقل تمامًا، فلا حاجة لقاعدة بيانات أو تخزين جلسات.

متطلب أساسي: استضافة تُشغّل عملية Node.js دائمة التشغيل. Hostinger فعليًا يدعم هذا عبر ميزة "Node.js web app" في hPanel (على خطط Business Web Hosting أو Cloud Startup/Professional/Enterprise) — دليل خطوة بخطوة كامل ومخصص لهذا المشروع في HOSTINGER-DEPLOY.md، على نطاق فرعي منفصل (مثل mcp.mashhor-hub.com) بلا أي تأثير على الموقع الرئيسي الثابت. بدائل أخرى: VPS، أو منصة مثل Render/Railway/Fly.io.

التشغيل

cd mcp-server
npm install
npm run start:http
# أو: PORT=3939 ALLOWED_HOSTS=mcp.example.com node src/http-server.mjs

متغيرات البيئة (كلها اختيارية بقيم افتراضية معقولة):

المتغير

الافتراضي

الوصف

PORT

3939

منفذ الاستماع

MCP_PATH

/mcp

مسار نقطة الاتصال

ALLOWED_HOSTS

quran.mashhor-hub.com,mcp.mashhor-hub.com,localhost

رؤوس Host المسموحة (حماية من هجمات DNS rebinding) — عدّلها لتطابق النطاق الفعلي الذي ستستضيف عليه

ALLOWED_ORIGINS

https://claude.ai,https://claude.com,https://chatgpt.com,https://chat.openai.com,https://gemini.google.com

أصول CORS المسموحة

RATE_LIMIT_PER_MIN

60

أقصى عدد طلبات لكل عنوان IP في الدقيقة

TRUST_PROXY

1

عدد قفزات الوكيل العكسي أمام الخادم (Express trust proxy) — بدون هذا يرى الخادم عنوان الوكيل نفسه لكل الزوار فيُبطِل تحديد المعدّل لكل IP. اتركه 1 خلف وكيل واحد (حالة Hostinger المعتادة)، أو عدّله ليطابق بنيتك

يُفضَّل تشغيله خلف وكيل عكسي (reverse proxy) بـHTTPS حقيقي (Caddy، Nginx، أو ما توفره منصة الاستضافة تلقائيًا) بدل تعريضه مباشرة على منفذ HTTP خام — أضف اسم النطاق الذي سيُستخدم فعليًا إلى ALLOWED_HOSTS كي لا تُرفض الطلبات.

الإضافة في تطبيق Claude (موصل مخصص)

من إعدادات الموصلات (Connectors) في تطبيق Claude للجوال أو الويب → "إضافة موصل مخصص" → أدخل رابط الخادم كاملًا مع المسار، مثال: https://mcp.example.com/mcp (بلا حاجة لتفعيل "يتطلب تسجيل دخول"، فكل الأدوات للقراءة العامة فقط بلا مصادقة).

ملاحظة صادقة

بنيت هذا الملف واختبرته محليًا (مصافحة MCP كاملة + استدعاء أدوات حقيقية عبر HTTP، بما فيها أداة تعتمد على واجهة mp3quran.net الخارجية) وكلها نجحت. لكنني لا أملك وصولًا لأي حساب استضافة لأنشره بنفسي — اتبع HOSTINGER-DEPLOY.md لنشره فعليًا على Hostinger، وحدّث ALLOWED_HOSTS ليطابق النطاق الفرعي الذي تختاره.

اختبار سريع دون أي عميل خارجي

npx @modelcontextprotocol/inspector node src/server.mjs

يفتح واجهة ويب محلية لتجربة كل أداة يدويًا والتأكد من عملها قبل ربطها بأي عميل.

Available Tools

8 tools
get_ayahنص آية محددةA

يعيد نص آية واحدة بعينها من القرآن الكريم برقم السورة ورقم الآية.

ParametersJSON Schema
NameRequiredDescriptionDefault
ayahYesرقم الآية داخل السورة
surahYesرقم السورة

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It implies a read-only retrieval and states that the return is the verse text, but it omits error behavior for out-of-range numbers, response format, and any auth or rate-limit context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence states the operation and its two inputs with no filler or repetition. It is appropriately sized for a simple lookup tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and the schema fully documents both numeric parameters; the description states what is returned (verse text), so an agent can call it confidently. Minor gaps remain around invalid-range behavior and response format, but for this complexity level the description is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters carry their own Arabic descriptions with numeric ranges. The description repeats the surah/ayah inputs without adding format, counting, or edge-case semantics beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource: returns the text of one specific Quranic verse identified by surah and ayah numbers. The scoping phrase 'آية واحدة بعينها' implicitly differentiates it from search_quran and the audio/list siblings, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the required surah/ayah inputs; there is no explicit when-to-use, when-not, prerequisite, or routing guidance. It never tells the agent to prefer search_quran for discovery or what to do if the verse does not exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hijri_dateالتاريخ الهجري اليومA

يعيد التاريخ الهجري المقابل لليوم (أو لتاريخ ميلادي محدد) دون أي استدعاء شبكي.

ParametersJSON Schema
NameRequiredDescriptionDefault
gregorian_dateNoتاريخ ميلادي بصيغة YYYY-MM-DD، افتراضيًا اليوم

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses that the conversion is computed locally with no network call, which is real behavioral context, but says nothing about the calendar convention used (e.g. Umm al-Qura), timezone handling, or the returned date format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence, front-loaded with the core action and the default/optional input, with the offline trait appended. Nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple single-parameter read tool, but the absence of an output schema means the expected return shape and calendar convention are left undocumented. Some additional detail on the returned Hijri format would round it out.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter is fully documented in the schema, including its YYYY-MM-DD format and today-default. The description merely repeats the default, adding no syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it returns the Hijri date corresponding to today or a given Gregorian date. It is clearly distinguishable from Quran-audio/surah siblings, though it never names a sibling or contrasts with get_prayer_times.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage by noting the default (today) and the optional explicit Gregorian input, which is enough to know when to call it. There is no explicit when-not guidance or reference to alternatives among the siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_prayer_timesمواقيت الصلاةA

يعيد مواقيت الصلاة الخمس لمدينة أو إحداثيات معيّنة في تاريخ محدد (افتراضيًا اليوم). مرّر اسم مدينة من القائمة المعروفة (مكة المكرمة، المدينة المنورة، القاهرة، الكويت، الإمارات) أو إحداثيات latitude/longitude مباشرة لأي مكان آخر.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoاسم مدينة معروفة، مثل: الكويت
dateNoتاريخ بصيغة DD-MM-YYYY، افتراضيًا اليوم
methodNoرمز طريقة الحساب الفلكية (aladhan.com)، افتراضيًا 4
latitudeNo
longitudeNo

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses the default-date behavior and the important constraint that only a known set of city names is accepted, but says nothing about the effect of the calculation-method code, permissions, or failure behavior for unrecognized cities.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with what the tool returns followed by how to invoke it. No filler, though it could be marginally tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter, 0-required, no-output-schema tool, the description covers what is returned (the five prayer times) and both input paths. It does not describe return formatting or error responses, but nothing essential to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 60%; the description compensates by enumerating which city names are valid and clarifying that latitude/longitude are for any other location, which goes beyond the schema's single example. The method parameter's meaning is only in the schema, so it is not fully covered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: returns the five daily prayer times for a city or coordinates on a given date (default today). This is clearly distinguishable from all siblings (Quran audio, hijri date, radio stations), so an agent can select it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the two invocation modes clearly — pass a city from the known list (Makkah, Madinah, Cairo, Kuwait, UAE) or pass latitude/longitude for any other place — and notes the date defaults to today. It gives actionable context but no explicit when-not-to-use guidance or error/edge-case handling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_surah_audioرابط تلاوة سورة لقارئ معيّنA

يعيد رابط ملف الصوت المباشر لتلاوة سورة معيّنة بصوت قارئ محدد (استخدم list_reciters أولًا لمعرفة المعرّف reciter_id).

ParametersJSON Schema
NameRequiredDescriptionDefault
surahYesرقم السورة من 1 إلى 114
reciter_idYesمعرّف القارئ من list_reciters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully states that the return value is a direct audio-file link rather than audio content, but it does not mention permissions, rate limits, link expiration, or any other behavioral trait.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence with the output type front-loaded and the prerequisite placed in a parenthetical. Every phrase contributes, with no redundant explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter lookup with full schema coverage and no output schema, the description is nearly complete: it states the returned resource and the prerequisite lookup. Minor gaps remain around error cases or link validity, but no critical information is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema. The description repeats that reciter_id comes from list_reciters but adds no syntax, range, or format detail beyond the schema, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it returns a direct audio-file link for a specified surah and reciter. The title reinforces the same scope, and the sibling list_reciters is named, so an agent can distinguish this from text-lookup siblings like get_ayah or search_quran.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear prerequisite: use list_reciters first to obtain the reciter_id. It does not explicitly say when not to use this tool or name alternatives besides list_reciters, but the context for correct invocation is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_radio_stationsقائمة إذاعات القرآن الكريم المباشرةB

يعيد قائمة إذاعات القرآن الكريم المباشرة المتاحة مع روابط البث.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoجزء من اسم الإذاعة للتصفية (اختياري)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose that results include streaming links (useful output context). However it says nothing about result size, ordering, pagination, or whether the stream URLs are static or live-session bound — all relevant for a radio-streaming tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tight sentence that front-loads the action and resource, with the payload detail (streaming links) at the end. No filler, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-optional-parameter list tool with no output schema, the description covers purpose and payload sufficiently. The only real gap is that, absent an output schema, it could say more about the shape/ordering of the returned station list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'query' parameter is fully documented in-schema as a partial-name filter, so the baseline of 3 applies. The description adds nothing about filtering, but the schema already handles it adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('يعيد' = returns) and resource ('قائمة إذاعات القرآن الكريم المباشرة') plus what the payload contains ('روابط البث' = streaming links). The resource is clearly distinct from siblings like list_surahs and list_reciters, though the description never names or contrasts those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of the optional filtering behavior, and no routing advice relative to search_quran or the other list_* tools. The agent must infer that this is a browse-the-catalog call from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_recitersقائمة قراء القرآن الكريمB

يبحث في قراء القرآن الكريم المتاحين عبر mp3quran.net، مع رواياتهم المتاحة. يمكن تمرير جزء من اسم القارئ للتصفية.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoجزء من اسم القارئ للتصفية (اختياري)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It adds useful context that results are available reciters with their narrations from mp3quran.net and that filtering is optional, but it omits read-only status, pagination or rate limits, auth needs, and what an unfiltered call returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences, front-loading the core action and source before the optional filtering note. It contains no filler and every sentence contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter list/search tool with no output schema, the description states the resource, source, returned narrations, and optional filter, which is nearly enough to call it correctly. It could add return structure or pagination details, but those are minor omissions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single 'query' parameter is already documented as an optional partial-name filter. The description repeats that same semantics without adding syntax, format, or matching behavior detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('يبحث' / searches) and resource (قراء القرآن الكريم / Quran reciters) and identifies the data source (mp3quran.net), so the agent knows this is a reciter-listing tool. It does not explicitly contrast with sibling tools like search_quran or get_surah_audio, so sibling differentiation relies mainly on the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description only explains that an optional partial-name filter can be passed. It gives no when-to-use guidance, no exclusions, and no named alternative among the seven sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_surahsقائمة سور القرآن الكريمA

يعيد أسماء سور القرآن الكريم الـ114 بالترتيب مع رقم كل سورة.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose useful behavior: the complete result set (all 114 surahs), its ordering, and that each entry carries a number. It does not describe the return format or confirm safety/read-only nature explicitly, so gaps remain for an annotation-free tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that states the resource, count, ordering, and per-item content with no filler. Every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, no output schema, and no annotations, the description is nearly sufficient for a trivial listing tool. The only residual gap is the shape of the returned entries (field names/structure), which an agent must infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, which is the baseline 4 case. There is nothing for the description to disambiguate, and it correctly signals a no-argument invocation by describing a fixed, complete enumeration.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (يعيد / returns) and resource (أسماء سور القرآن الكريم الـ114) with scope detail: 114 items, ordered, each with its number. An agent can tell this is a catalogue-listing tool distinct from siblings like get_surah_audio or get_ayah. It does not explicitly name a sibling to differentiate against, keeping it just below a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no mention of alternatives such as list_reciters or search_quran. The purpose implies a lookup of the surah index, but nothing states prerequisites or the conditions that select this tool over its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_quranبحث نصي في القرآن الكريمA

يبحث عن كلمة أو عبارة داخل نص القرآن الكريم كاملًا (بلا تشكيل، ويتجاهل اختلاف رسم الألف/الياء/التاء المربوطة)، ويعيد الآيات المطابقة مع موضعها.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoأقصى عدد نتائج (افتراضيًا 20)
queryYesكلمة أو عبارة للبحث عنها (حرفان على الأقل)

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses important behavioral traits: the search is unvocalized, ignores alif/ya/ta-marbuta orthographic variations, and returns matching verses with their location. It does not mention pagination or rate limits, but the normalization rules are non-obvious and genuinely useful context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, efficient sentence that front-loads the core action and scope. It is appropriately sized for the tool's simple two-parameter nature, though the normalization clause adds density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter search with a fully documented schema and no output schema, the description covers the essential behavior, including the non-obvious normalization rules. It does not explain result ordering or pagination, but those are minor gaps at this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already fully documented in the schema, including limit and query constraints. The description adds no additional parameter syntax or format details beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (يبحث) and resource (نص القرآن الكريم كاملًا), and describes exactly what is returned (الآيات المطابقة مع موضعها). It is clearly distinguishable from siblings like get_ayah or list_surahs, which retrieve rather than search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by framing the tool as a full-text search over the entire Quran, which is enough to tell it apart from get_ayah (single verse retrieval) or list_surahs. However, it gives no explicit when-to-use or when-not-to-use guidance, and does not name alternatives.

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.

  1. 8 tool updatesv1.1.0
    • First observedget_ayah
    • First observedget_hijri_date
    • First observedget_prayer_times
    • First observedget_surah_audio
    • First observedlist_radio_stations
    • First observedlist_reciters
    • First observedlist_surahs
    • First observedsearch_quran

TDQS

A3.9/5.0

Scored across 8 tools

Disambiguation5/5

Each tool addresses a unique resource or action: surah listing, verse retrieval, full-text search, reciter lookup, audio URL retrieval, radio stations, prayer times, and Hijri date. No overlapping purposes that would cause misselection.

Naming Consistency5/5

All names use snake_case with consistent list_/get_/search_ verb prefixes and clear nouns, making the pattern predictable throughout.

Tool Count5/5

8 tools are well-scoped for Quran text, audio, and Islamic date utilities; each tool has a distinct role without being excessive or thin.

Completeness4/5

Core Quran retrieval, search, audio, and Islamic utilities are covered, but there is no full-surah text or verse-range retrieval and no translation/tafsir. These are minor gaps that agents can work around by repeated get_ayah calls.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • 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
    383
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Remote MCP server exposing Wasilah's Islamic reference data, enabling prayer-time, Qibla, Hijri-date, and Quran-audio queries via natural language.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides AI clients with fast, hallucination-free access to the Quran through 13 MCP tools, covering search, navigation, morphology, tafsir, translations, and surah background over stdio and Streamable HTTP.
    MIT