Skip to main content
Glama

islamqa-org-mcp

Dale a Claude, Codex y cualquier otro cliente MCP acceso a ~98.000 fatwas con fuentes.

Un servidor MCP para IslamQA.org, que agrega respuestas de 47 instituciones darul ifta independientes de las cuatro madhahib suníes.

CI Python 3.11+ License: MIT MCP

Sitio web · Instalación · ChatGPT · Herramientas · Cómo funciona · Etiqueta


Por qué

Hazle una pregunta de fiqh a un modelo de lenguaje y responderá a partir de una mezcla borrosa de datos de entrenamiento, sin fuente, sin madhhab y sin forma de verificarlo. Esa no es la forma adecuada para este tipo de pregunta.

Este servidor cambia el comportamiento por defecto. Tu asistente busca en un archivo real de respuestas académicas y cita una con el muftí, la madhhab, la institución y una URL que puedes abrir. Cuando las escuelas difieren, ves que difieren en lugar de recibir una sola posición presentada como la norma islámica.

You:  Can I wipe over ordinary cotton socks in wudu?

Claude: [searches IslamQA.org]

        The Hanafi position (Askimam.org, Mufti Ebrahim Desai) is that masah
        is only valid on socks with the characteristics of leather khuffayn —
        thick enough that water does not seep through, able to stand upright
        unaided, and durable over three to four miles of walking. Ordinary
        cotton socks do not qualify.
        https://islamqa.org/hanafi/askimam/127638/...

        Bin Bayyah (Maliki) notes the Hanbali school permits wiping over cloth
        socks, while the Maliki position restricts it to leather.
        https://islamqa.org/maliki/binbayyah/29891/...

Related MCP server: quran-mcp

Instalación

Sin clonar, sin configuración manual. Elige el ejecutor que ya tengas.

Con uv (recomendado: es lo que realmente ejecuta el servidor):

uvx --from git+https://github.com/RealYusufIsmail/islamqa-org-mcp islamqa-mcp

Con npx, si Node es lo que tienes a mano:

npx -y islamqa-mcp

El paquete npm es un envoltorio fino: delega en uv, que descarga y ejecuta el servidor Python en un entorno aislado en caché. Aun así necesitas uv instalado; el envoltorio te dice cómo si falta.

curl -LsSf https://astral.sh/uv/install.sh | sh    # macOS / Linux
brew install uv                                    # Homebrew
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"   # Windows

Claude Code

claude mcp add islamqa -- uvx --from git+https://github.com/RealYusufIsmail/islamqa-org-mcp islamqa-mcp

Claude Desktop

Añádelo a claude_desktop_config.json — en macOS, ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "islamqa": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/RealYusufIsmail/islamqa-org-mcp",
        "islamqa-mcp"
      ]
    }
  }
}

Codex

Añádelo a ~/.codex/config.toml:

[mcp_servers.islamqa]
command = "uvx"
args = ["--from", "git+https://github.com/RealYusufIsmail/islamqa-org-mcp", "islamqa-mcp"]

Reinicia el cliente. La primera búsqueda construye un índice local (aproximadamente un minuto, ~22 peticiones); todo lo demás es instantáneo.

git clone https://github.com/RealYusufIsmail/islamqa-org-mcp.git
cd islamqa-org-mcp && uv sync

Luego apunta el cliente a él con uv --directory /absolute/path/to/islamqa-org-mcp run islamqa-mcp.

ChatGPT

ChatGPT es diferente de los clientes anteriores: no puede lanzar un proceso local, así que necesita el servidor alojado en una URL HTTPS pública. De ello se derivan dos cosas.

1. Ejecútalo sobre HTTP en lugar de stdio.

islamqa-mcp --transport streamable-http --host 0.0.0.0 --port 8000

El endpoint que ChatGPT quiere es entonces https://your-host/mcp.

2. En este modo expone search y fetch. ChatGPT rechaza cualquier conector que no tenga herramientas con exactamente esos nombres a menos que hayas activado el Modo Desarrollador, y Deep Research solo llama a esas dos. Así que al ejecutarse sobre HTTP el servidor las añade como adaptadores sobre search_fatwas / get_fatwa, en la forma requerida por OpenAI — search devuelve {id, title, url} por resultado, fetch devuelve {id, title, text, url, metadata}. Cada resultado lleva una URL real de islamqa.org, así que ChatGPT genera citas correctas.

No están registradas para stdio, deliberadamente: Claude y Codex reciben el search_fatwas más completo, y añadir un alias más débil solo invitaría a usar el peor.

Probarlo sin desplegarlo

Ejecútalo localmente y apunta un túnel hacia él — para eso sirve el interruptor Tunnel en el diálogo de conectores de ChatGPT:

islamqa-mcp --transport streamable-http --port 8000
cloudflared tunnel --url http://localhost:8000     # or: ngrok http 8000

Luego en ChatGPT: Settings → Apps → Advanced → Developer mode, añade un conector que apunte a https://<your-tunnel>/mcp, autenticación None.

Alojarlo correctamente

Se incluye un Dockerfile que funciona en Render, Railway, Fly.io o Cloud Run:

docker build -t islamqa-mcp .
docker run -p 8000:8000 islamqa-mcp

Construye el índice de URLs en el momento de compilar la imagen, lo cual importa: el índice cuesta ~22 peticiones a islamqa.org, e incluirlo en la imagen significa que eso ocurre una vez por versión en lugar de en cada arranque en frío de cada réplica. Sin eso, un nivel gratuito con autoescalado volvería a rastrear el sitemap todo el día. También hace que la primera búsqueda del usuario sea instantánea.

Antes de exponerlo públicamente: un conector sin autenticación está abierto a cualquiera que encuentre la URL, y cada petición que hagan es una petición contra islamqa.org bajo el nombre de tu servidor. Ponlo detrás de OAuth o de un proxy de autenticación si no es solo para ti, y mantén el límite de peticiones donde está.

La habilidad

Un servidor MCP le da herramientas al modelo. No le dice cómo usarlas bien — y en fiqh, el cómo importa más que el qué.

skills/islamqa-fatwa es una habilidad de Claude que se distribuye junto con el servidor. Hace que el asistente:

  • Pregunte qué madhhab sigues antes de responder — o presente las cuatro posiciones lado a lado si no sigues ninguna

  • Nunca emita una norma que no haya recuperado. Nada de hadices inventados, ni recuerdos a medias de «la postura hanafí es…», ni citas árabes fabricadas. Si el archivo no tiene nada, lo dice en lugar de rellenar el vacío

  • Use las categorías reales de la tradición en lugar de reducirlo todo a halal/haram — incluido el esquema séptuple hanafí, para que makrūh taḥrīmī no se rebaje silenciosamente a «desagradable» ni se eleve a «haram»

  • Diga cuándo la cobertura es escasa. El archivo es mayoritariamente hanafí; si no hay respuesta malikí, lo informa en lugar de inferir una

  • Derive los casos de divorcio, herencia, custodia y otros asuntos que necesitan a una persona en lugar de un índice de búsqueda

Instálala globalmente:

git clone https://github.com/RealYusufIsmail/islamqa-org-mcp.git /tmp/islamqa-mcp
cp -r /tmp/islamqa-mcp/skills/islamqa-fatwa ~/.claude/skills/

Se activa por sí sola cuando una pregunta resulta ser una cuestión de normas.

Herramientas

Herramienta

Qué hace

search_fatwas

Búsqueda de texto completo en el archivo. Filtra por madhhab o source.

get_fatwa

Una respuesta completa: pregunta, respuesta, citas árabes, institución emisora.

list_sources

Los 47 sitios darul ifta con recuento de respuestas por sitio.

browse_fatwas

Respuestas más recientes, opcionalmente filtradas.

index_status

Tamaño del índice, tamaño de la caché, última reconstrucción.

rebuild_index

Actualiza el índice desde el sitemap. Rara vez necesario.

Sobre HTTP, se añaden search y fetch para compatibilidad con ChatGPT — ver ChatGPT.

Cada respuesta se devuelve con su atribución y una nota que recuerda al modelo que cite la URL y que trate la norma como la postura de un muftí, no como una universal.

Línea de comandos

Las mismas operaciones sin un cliente MCP:

uv run islamqa search "wiping over socks" --madhhab hanafi
uv run islamqa get https://islamqa.org/hanafi/askimam/127638/can-i-wipe-make-masah-over-the-new-socks/
uv run islamqa sources
uv run islamqa status

Cómo funciona

IslamQA.org usa WordPress con la API REST desactivada, así que no hay ningún endpoint JSON al que llamar. Lo que sí publica es un sitemap completo y páginas renderizadas en el servidor — las mismas páginas públicas que ve cualquier lector o rastreador de buscadores.

El servidor funciona en dos capas:

El índice. Una pasada por el sitemap (~22 peticiones) registra cada URL de respuesta junto con su ID, madhhab, fuente emisora y un título derivado del slug. Son ~98.000 respuestas por unos pocos megabytes y aproximadamente un minuto, y significa que la búsqueda es local e instantánea a partir de entonces.

La caché. Leer una respuesta descarga y analiza esa página, y luego la almacena. La búsqueda se ejecuta sobre un índice SQLite FTS5 de ambas capas, así que una respuesta se puede encontrar por título de inmediato y por su texto completo una vez que alguien la ha leído — el archivo se vuelve más buscable cuanto más lo usas.

sitemap ──► index (~98k URLs + titles) ──┐
                                         ├──► FTS5 (BM25) ──► search_fatwas
answer page ──► parse ──► cache (full) ──┘                    get_fatwa

Como las respuestas se importaron de 47 sitios diferentes a lo largo de muchos años, las páginas vienen en tres formatos de plantilla, y los tres se manejan: los envoltorios modernos .ai-question / .ai-answer-content; párrafos simples con etiquetas explícitas Question: / Answer:; y párrafos simples sin etiquetas. Los prefijos sueltos Q: y el texto final «Original Source Link» se eliminan, y las notas finales en árabe que citan textos clásicos se separan en un campo citations independiente, de modo que una respuesta se lee limpiamente sin perder la evidencia que la respalda.

¿Tiene islamqa.org una API?

No hay API JSON pública. El sitio usa WordPress, pero la API REST está desactivada en todo el sitio. Comprobado en agosto de 2026:

Endpoint

Resultado

/wp-json/

401 — {"code":"rest_disabled"}

/wp-json/wp/v2/posts

401 — rest_disabled

/wp-json/wp/v2/search

401 — rest_disabled

/wp-json/elasticpress/v1/search

401 — rest_disabled

/graphql, /api/

404

El cuadro de búsqueda del sitio se renderiza en el cliente con ElasticPress, así que sus resultados tampoco están en el HTML — por eso este servidor construye su propio índice en lugar de hacer de proxy de la búsqueda del sitio.

Lo que es legible por máquina y abierto:

Endpoint

Formato

Notas

/sitemap_index.xml

XML

22 sitemaps secundarios

/sitemap-posts.xml?page=N

XML

5.000 URLs de respuesta por página, con lastmod

/feed/

RSS 2.0

Últimas respuestas de todo el sitio

/category/{madhhab}/{source}/feed/

RSS 2.0

Últimas por institución

Páginas de respuesta

HTML + JSON-LD

El esquema NewsArticle incluye fechas de publicación/modificación

/robots.txt

—

Se sirve vacío: nada está desautorizado

Este servidor usa el sitemap y las páginas de respuestas. Los feeds RSS son una opción ligera si solo quieres respuestas nuevas y no necesitas búsqueda — no requieren índice ni scraping:

curl -s https://islamqa.org/hanafi/askimam/feed/

Las URLs de respuestas son estructuradas, así que puedes dirigirte a cualquier respuesta directamente:

https://islamqa.org/{madhhab}/{source}/{post_id}/{slug}/
                     hanafi   askimam  127638   can-i-wipe-make-masah-over-the-new-socks

Si islamqa.org activa alguna vez su API REST, este servidor debería cambiar a ella — abre un issue si notas que vuelve.

Configuración

Todo opcional, se establece como variables de entorno:

Variable

Predeterminado

Propósito

ISLAMQA_DATA_DIR

~/.cache/islamqa-mcp

Dónde viven el índice y la caché

ISLAMQA_REQUEST_DELAY

1.0

Segundos entre peticiones

ISLAMQA_CACHE_TTL_DAYS

90

Cuánto tiempo una respuesta en caché se mantiene fresca

ISLAMQA_INDEX_TTL_DAYS

30

Cuándo reconstruir el índice

ISLAMQA_USER_AGENT

identifica esta herramienta

Se envía con cada petición

Etiqueta (adab)

Esto lee un servicio gratuito mantenido con donaciones, así que está construido para ser un buen invitado:

  • Una solicitud por segundo, serializada globalmente: las llamadas de herramientas concurrentes no pueden expandirse en una ráfaga.

  • Almacena en caché de forma agresiva. Las fatwas son efectivamente inmutables una vez publicadas, por lo que una página se obtiene una vez y se reutiliza durante 90 días.

  • Obtiene solo lo que se le pide. La pasada masiva lee el sitemap, no 100 000 páginas de respuestas. Aquí no hay rastreador.

  • Se identifica con un User-Agent real que apunta a este repositorio.

  • Bloqueado a un solo host. Cada URL se verifica contra una lista de permitidos antes de abrir un socket, por lo que ningún argumento de un modelo puede convertir esto en un proxy abierto.

  • Atribuye todo. La institución emisora, el muftí cuando se nombra, y un enlace a la copia propia del darul ifta viajan con cada respuesta.

Si mantienes islamqa.org y quieres que se cambie algo aquí — el límite de velocidad, el User-Agent o la existencia de la herramienta — por favor abre un issue y se abordará.

Sobre el uso de esto. Estas son respuestas de muftíes cualificados, pero una fatwa se da a una persona concreta en un contexto concreto. Un resultado de búsqueda no es un dictamen sobre tu situación, y un modelo de lenguaje que lo transmite no es un erudito. Para cualquier cosa de importancia, pregunta directamente a una persona cualificada.

Desarrollo

uv sync --extra dev
uv run pytest          # 81 tests, no network — runs against saved fixtures
uv run ruff check .
uv run mypy src/islamqa_mcp

Las pruebas del analizador se ejecutan contra copias recortadas de páginas reales. Si islamqa.org cambia su plantilla, fallan de forma ruidosa, lo cual es deliberado: una regresión silenciosa del análisis alimentaría silenciosamente respuestas vacías al modelo.

Licencia

MIT — ver LICENSE.

La licencia cubre solo este software. Las fatwas pertenecen a los eruditos e instituciones que las emitieron. Esta herramienta lee páginas públicas y enlaza de vuelta; no redistribuye el archivo.

Available Tools

6 tools
browse_fatwasA
Read-only

List the most recent fatwas, optionally filtered to one madhhab or issuing source. For browsing; prefer search_fatwas to answer a specific question.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results.
offsetNoSkip this many results.
sourceNoIssuing site slug.
madhhabNoRestrict to one school.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that it returns the 'most recent' fatwas (ordering behavior) and mentions optional filters, which goes beyond annotations. It omits details like pagination, but that is standard and the bar is lower given the annotations.

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?

Two sentences, no filler. The first sentence delivers the core function, the second gives usage guidance. It is front-loaded and every sentence earns its place.

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

Completeness5/5

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

The tool has an output schema, so the return format is covered. Annotations handle safety. The description covers the purpose, filtering, and usage distinction. For a read-only browse tool with optional filters, nothing essential is missing.

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% with each parameter (limit, offset, source, madhhab) already described. The description only reiterates the madhhab and source filters ('optionally filtered to one madhhab or issuing source') without adding new semantics, so it adds marginal value beyond the schema. Baseline 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?

The description states a specific verb ('List') and resource ('most recent fatwas'), and explicitly differentiates from the sibling search_fatwas by noting that browsing is for exploration while search is for specific questions. This makes the tool's purpose unambiguous.

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

Usage Guidelines5/5

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

It explicitly says 'For browsing; prefer search_fatwas to answer a specific question.' This gives clear when-to-use guidance and a direct alternative, which is exactly what the dimension asks for.

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

get_fatwaA
Read-only

Fetch one full fatwa from IslamQA.org by URL: the original question, the mufti's answer, the Arabic citations of classical texts, the issuing darul ifta and a link to their own copy. Cached locally after the first read.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesAn islamqa.org answer URL, as returned by search_fatwas.
refreshNoBypass the local cache and re-fetch the page.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds valuable behavioral context beyond annotations: it discloses local caching after first read and the existence of a refresh parameter to bypass cache. No contradiction with annotations.

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?

Two sentences with no fluff. The main purpose is front-loaded, and the caching/refresh detail is placed logically after. Every sentence earns its place.

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

Completeness5/5

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

With annotations covering safety and an output schema present (stated in context), the description covers the essential usage details: what it fetches, the source URL, and caching behavior. An agent can call it correctly without additional information.

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%, with both url and refresh already well-described in the schema. The description adds the note 'as returned by search_fatwas' for url and mentions caching for refresh, but both are also implied in the schema. Baseline 3 is appropriate since the description adds minimal extra meaning.

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?

The description clearly states the tool fetches one full fatwa by URL and enumerates the specific content (question, answer, citations, issuing darul ifta, link). This is a specific verb+resource and distinguishes it from sibling tools like search_fatwas (search) and browse_fatwas (browse).

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?

The description notes the URL comes from search_fatwas, which implies its usage context, and mentions caching behavior. However, it does not explicitly state when to prefer this over alternatives or provide when-not-to-use guidance. The context is clear but lacks explicit exclusions.

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

index_statusA
Read-only

Report how many fatwas are indexed, how many have been read into the local full-text cache, and when the index was last rebuilt.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the tool is clearly a safe read operation. The description adds valuable context by specifying exactly what metrics are reported (number indexed, number in cache, last rebuild time), which goes beyond the annotations. It does not contradict the annotations and provides helpful detail about the tool's output.

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 a single, concise sentence that immediately states the core function. It is front-loaded with the action ('Report') and lists the three key metrics in a clear, organized manner. There is no redundancy or filler, making it highly efficient and well-structured.

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

Completeness5/5

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

Given the tool's simplicity (no parameters, no complex inputs) and the presence of an output schema, the description is complete. It explains what the tool reports without needing to describe return values (which are covered by the output schema). For a status-reporting tool with this straightforward scope, nothing essential 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?

The tool has zero parameters, so the schema is trivially 100% described. The description does not need to explain parameters, and the baseline for zero-parameter tools is 4. The description focuses on the output, which is appropriate given there are no inputs to clarify.

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?

The description clearly states the tool's purpose: reporting on fatwa index status, including counts and last rebuild time. It uses the specific verb 'report' with a clear resource 'index status', and it distinguishes itself from siblings like search_fatwas, list_sources, get_fatwa, and rebuild_index by focusing on status metrics rather than data retrieval or modification.

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 for checking index health and statistics, but it does not explicitly state when to use this tool versus alternatives. For instance, it doesn't mention 'use this before searching to ensure the index is up-to-date' or 'use this to diagnose why search results may be incomplete.' The purpose makes usage obvious, but there is no explicit guidance or mention of exclusions.

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

list_sourcesA
Read-only

List every darul ifta indexed by IslamQA.org, grouped by madhhab, with how many answers each contributed. Use to discover valid 'source' values for search_fatwas, or to see how the schools are represented.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover readOnlyHint and destructiveHint, so the description adds value by disclosing that the list is exhaustive ('every'), grouped by madhhab, and includes answer counts. These are behavioral traits beyond the safety annotations.

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?

Two sentences with zero waste: the first states the core function, the second gives actionable usage guidance. The most important information is front-loaded.

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

Completeness5/5

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

An output schema exists, so return format details are unnecessary. The description covers purpose, scope, grouping, and ties to sibling usage, making it fully adequate for an agent to know when and why to call it.

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 has zero parameters, and the schema coverage is 100%, so there is nothing to explain. The description correctly focuses on what the output provides (grouped list with counts), which still aids the agent in interpreting results.

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 (list) and resource (darul ifta indexed by IslamQA.org), with grouping and count detail. It also explicitly ties to searching for valid source values, distinguishing it from sibling tools like search_fatwas.

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 clear, explicit use cases ('discover valid source values' and 'see how schools are represented') and implicitly positions it as a prerequisite to search_fatwas. It does not state when not to use it, but the purpose is sufficiently distinct from siblings.

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

rebuild_indexA

Rebuild the local URL index from islamqa.org's sitemap. Rarely needed — the index builds itself on first search and refreshes when stale. Takes about a minute and makes roughly 22 requests to the site.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations (readOnlyHint: false, destructiveHint: false, openWorldHint: true) are already present, but the description adds concrete behavioral details: it takes ~1 minute and makes ~22 requests to an external site. This discloses side effects (network traffic, delay) beyond the annotations without contradicting them.

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?

Three efficient sentences: purpose, when-to-use, and cost. Every sentence adds value and the most important guidance (rarely needed) is front-loaded.

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

Completeness5/5

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

For a zero-parameter, side-effectful maintenance tool, the description covers purpose, usage context, behavior, and cost. The presence of an output schema further reduces the need to explain return values. Nothing essential 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?

The tool has zero parameters, so the schema already fully documents this aspect (coverage 100%). No parameter description is needed; the baseline of 4 applies since there's nothing to add.

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 states a specific verb ('Rebuild') and resource ('local URL index from islamqa.org's sitemap'), making the core function clear. It does not explicitly differentiate from siblings like index_status, but the uniqueness is implied given it's a one-off maintenance operation.

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

Usage Guidelines5/5

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

Explicitly says 'Rarely needed' and explains the index 'builds itself on first search and refreshes when stale.' This gives clear guidance on when NOT to call it and contrasts with automatic behavior. Also adds cost information (time, requests) that discourages casual use.

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

search_fatwasA
Read-only

Search roughly 100,000 fatwas (Islamic legal answers) on IslamQA.org by keyword or question. Use this whenever a question concerns Islamic rulings, fiqh, worship or practice and you want sourced scholarly answers rather than your own knowledge. Returns ranked results with title, madhhab, issuing source and URL; call get_fatwa on a result to read the full answer.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results.
queryYesKeywords or a question, e.g. 'wiping over socks in wudu'.
sourceNoRestrict to one issuing site's slug, e.g. 'askimam'. See list_sources.
madhhabNoRestrict to one school of law.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds useful behavioral details: it returns ranked results with title, madhhab, source and URL, and explicitly says the full text requires a separate get_fatwa call. However, it does not mention pagination, sorting behavior, or any rate limits, so transparency is only partially enhanced beyond annotations.

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 well-structured sentences, with the core purpose front-loaded and the usage guidance following. Every sentence earns its place, providing purpose, scope, result format, and a directive to the next step without any fluff or repetition.

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 search tool with an existing output schema and clear annotations, the description provides sufficient context: when to use, what results contain, and how to proceed (call get_fatwa). It omits any explanation of limit semantics or result ordering, but the schema covers limits and the output schema defines the return structure, so 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 description coverage is 100%, so all four parameters are already documented in the schema. The description adds value by giving an example query ('wiping over socks in wudu') and by explicitly pointing to list_sources when using the source parameter. Yet it does not explain parameter relationships or default behaviors beyond what the schema already states.

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 clearly states a specific action (search) on a specific resource (fatwas on IslamQA.org) and the scope (keyword or question). It also distinguishes itself from siblings like get_fatwa by noting that it returns summaries and that full answers require a follow-up call, though it doesn't explicitly contrast with browse_fatwas.

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?

The description gives explicit guidance on when to use the tool ('whenever a question concerns Islamic rulings, fiqh, worship or practice and you want sourced scholarly answers rather than your own knowledge') and provides a clear trigger condition. It also hints at an alternative (using own knowledge) but does not explicitly mention when to use siblings like browse_fatwas, so a small gap remains.

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. 6 tool updatesv0.1.0
    • First observedbrowse_fatwas
    • First observedget_fatwa
    • First observedindex_status
    • First observedlist_sources
    • First observedrebuild_index
    • First observedsearch_fatwas

TDQS

A4.4/5.0

Scored across 6 tools

Disambiguation5/5

Each tool serves a unique, clearly defined purpose: search for fatwas, browse recent ones, fetch a specific fatwa, list sources, check index status, and rebuild the index. There is no overlap or ambiguity between them.

Naming Consistency5/5

All six tools follow the verb_noun pattern in snake_case (search_fatwas, list_sources, get_fatwa, browse_fatwas, index_status, rebuild_index), with consistent verb choices that clearly indicate the action taken.

Tool Count5/5

Six tools is well within the ideal range for a domain-specific server. Each tool is necessary and none are redundant; the count is neither too sparse nor too heavy for the server's stated purpose of accessing IslamQA fatwas.

Completeness5/5

The tool surface covers the full workflow: searching, browsing, retrieving individual fatwas, understanding available sources, and maintaining the local index. There are no obvious missing operations for a read-only scholarly answer API.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables fetching and searching canonical hadith texts (Arabic and English) with cross-references and citation-safe URLs for assistants, built on FastMCP.
    3
    GPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server to search and retrieve passages from a corpus of 7,872 classical Islamic books via the Sahifah API, with full citations and mu'tabar filtering.
    14 npm
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Serves a scholar-approved Islamic corpus of Qur'an and hadith passages to any MCP client with server-side refusal enforcement. Enables natural-language questioning, retrieval, policy checking, and honest corpus coverage reporting while preventing fabricated answers.
    6
    -