search_islamic_sources
Search Quran, Hadith, Tafsir, and dua sources. Returns source text and citation fields.
limitqueryrequiredindexeshadith_grade
com.madeenanPublished by madeenan.comv0.1.0Updated Nov 14, 2026
Read-only search and lookups for Quran, Hadith, Tafsir, and dua sources, with citation fields.
Read-only MCP server that lets an assistant search and look up Quran, Hadith, Tafsir and dua sources with citation fields.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
Read-only MCP server for the Madeenan Quran and Hadith API. It gives Claude Desktop, Cursor, and other MCP hosts tools to search Quran, Hadith, Tafsir, and dua sources, read exact references, and collect evidence with citations. Docs: madeenan.com/docs/mcp.
The server retrieves source records and prepares evidence bundles. It does not issue religious rulings or verify the meaning of a claim.
The server needs Python 3.11 or later. With uv, run the published package without a separate install step:
Or install it into a virtual environment:
The official packages are madeenan-mcp and madeenan-sdk. Their PyPI
project links point to madeenan.com.
To work on the server, install both local packages from the repository:
Keep the virtual environment active when you run madeenan-mcp from a
terminal.
Run the local check before you add the server to a host:
This command checks the API URL, timeout, HTTP bind port, and transport host and origin lists. It prints safe JSON and exits. It does not start the MCP server or contact the Madeenan API. The output reports whether an API key is set. It never prints the key. An invalid setting returns an error object and exit code 2.
For a client that uses the Claude Desktop or Cursor mcpServers JSON format,
print a ready-to-copy stdio entry:
With uvx, the stdio entry is:
For an installed package, --print-config uses the absolute path of the
installed madeenan-mcp command. Neither form contains environment values or
secrets. Add its mcpServers.madeenan
entry to the host's existing config. Keep any other server entries in that
file. This output is not a universal host format. For example, VS Code uses
servers and sets type to stdio; Claude Code uses its claude mcp add
command. See the MCP Python SDK host guide
for current examples for each client.
The generated entry does not set MADEENAN_API_KEY. The server reads the key
from its process environment. A shell variable reaches a host only when that
host inherits the shell environment. A desktop app started from the Dock or
Start menu may not inherit it. Set the key in the host's server environment
settings or secret store. Some hosts save env values as plain text in a
local config file. Protect that file and do not commit it. Never pass the key
as an MCP tool argument.
The server reads these environment variables:
The FASTMCP_TRANSPORT_SECURITY__ALLOWED_HOSTS and
FASTMCP_TRANSPORT_SECURITY__ALLOWED_ORIGINS variables also set the host and
origin lists. Each list must be JSON. For example:
The Madeenan API key is optional for source lookups and search. The server does not expose the SDK's chat operation. The service can still limit public requests.
For a local host, select stdio:
The command waits for the MCP host. It can remain silent while it waits. MCP
messages use stdout, so do not add print calls to server startup code. Use
stderr for logs.
For a local HTTP process, use Streamable HTTP:
The default MCP endpoint is /mcp. GET /health returns liveness and safe
configuration status. An ASGI server can use madeenan_mcp.server:app:
The server has no built-in client authentication for HTTP. DNS rebinding host and origin allowlists do not authenticate users. Do not expose the endpoint to a public network by itself. Put it behind a gateway that enforces client authentication and TLS, or keep it on a trusted local network.
For a container, build from the repository root:
The container listens on 0.0.0.0:8000. Protect the endpoint with an
authenticated gateway before you expose it outside a trusted network. Pass
secrets through your deployment's secret settings. Do not add them to the
image or commit them.
search_islamic_sources: search source records.lookup_quran_reference: read a verse, chapter, or bounded passage.lookup_hadith_reference: read a Hadith and its grade metadata.lookup_dua: read a dua or adhkar item.find_quote_source: find wording matches. A match does not prove authorship.create_evidence_bundle: collect search results and requested source lookups.review_evidence_claim: prepare an evidence checklist. It does not verify a
claim or its meaning.The server also provides config://status and source_review_prompt.
--check-config returns ok: false, fix the setting named in its
message, then run the check again.--print-config.MIT.
Source: apps/mcp/README.md at commit 04cf7ae
Search Quran, Hadith, Tafsir, and dua sources. Returns source text and citation fields.
limitqueryrequiredindexeshadith_gradeRead one Quran verse, chapter, or bounded passage by reference. Use ``2:255`` for one verse, ``2`` for a chapter, or ``2`` with start and end ayah values for a passage. The returned text is a source lookup only.
end_ayahreferencerequiredstart_ayahRead one Hadith by collection slug and number, including grade metadata.
hadith_numberrequiredcollection_slugrequiredRead one dua or adhkar item by collection slug and item ID.
item_idrequiredcollection_slugrequiredFind wording matches for a quote. A match does not prove authorship or meaning.
quoterequiredindexesCreate a compact bundle of search results and requested source lookups. This is an evidence collection helper. It does not decide a religious ruling.
limitqueryrequiredindexesreferencesReview whether supplied evidence is relevant to a claim without verifying truth. This tool performs a basic evidence checklist. It does not certify a claim, issue a fatwa, or verify religious meaning. Include source references in the evidence list and ask a qualified scholar for interpretation.
claimrequiredevidencerequired90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
uvx madeenan-mcp --check-configpython3 -m venv .venv. .venv/bin/activatepython -m pip install madeenan-mcpcd /path/to/madeenan/apps/mcppython3 -m venv .venv. .venv/bin/activatepython -m pip install -e ../../packages/pythonpython -m pip install -e '.[dev]'madeenan-mcp --check-configmadeenan-mcp --print-config{ "mcpServers": { "madeenan": { "command": "uvx", "args": ["madeenan-mcp", "--transport", "stdio"] } }}export FASTMCP_TRANSPORT_SECURITY__ALLOWED_HOSTS='["mcp.example.com:*"]'export FASTMCP_TRANSPORT_SECURITY__ALLOWED_ORIGINS='["https://mcp.example.com"]'madeenan-mcp --transport stdiomadeenan-mcp --transport streamable-httpuvicorn madeenan_mcp.server:app --host 127.0.0.1 --port 8000docker build -f apps/mcp/Dockerfile -t madeenan-mcp .docker run --rm -p 8000:8000 madeenan-mcp