islamweb-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ISLAMWEB_DATA_DIR | No | Set ISLAMWEB_DATA_DIR to change where the default Lisan al-Arab .jsonl/.json files live (defaults to ./data). | ./data |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| islamweb_fetch_entryA | Fetches a single content page from islamweb.net's library (https://www.islamweb.net/ar/library/content/{bookId}/{id}) and returns it parsed as JSON: title, chapter/lemma breadcrumb, plain text, fully-vocalized (tashkeel) text, and next/prev ids. |
| islamweb_lisan_al_arab_infoA | Returns the known bookId and id range (1..9305) for لسان العرب لابن منظور on islamweb.net, plus the paths this server uses for its extracted JSON/JSONL dataset. |
| islamweb_list_dictionariesA | Returns every dictionary this server knows about under islamweb's library subject 73 (معاجم اللغة): bookId, key, title, author, and id range. This is the registry the GitHub Actions crawl workflow and the crawl-all-dictionaries CLI command iterate over. |
| islamweb_start_crawlA | Starts crawling a contiguous range of content ids from one islamweb library book in the background (this call returns immediately with a jobId; poll islamweb_crawl_status with it). Each fetched page is appended as one JSON line to outFile as soon as it is parsed, so the crawl is resumable: re-running with the same outFile skips ids already present in it. Defaults are set up for لسان العرب لابن منظور (bookId 122, ids 1..9305) — omit bookId/startId/endId/outFile to crawl the whole dictionary. |
| islamweb_crawl_statusA | Returns progress (done/total/failed) for a crawl job started with islamweb_start_crawl. |
| islamweb_crawl_statsA | Reads a JSONL dataset file directly from disk (independent of any in-memory job) and reports how many entries it has and the highest id fetched so far. Useful after restarting the MCP server to see how far a previous crawl got. |
| islamweb_compile_jsonA | Reads a JSONL dataset file (one entry per line) and writes it out as a single sorted, pretty-printed JSON array file. Run this once a crawl has finished (or whenever you want a fresh snapshot). |
| islamweb_searchA | Substring-searches a JSONL dataset file's lemma and text fields and returns matching entries (id, lemma, chapter, and a snippet around the match). Use this to spot-check a crawl or to look up a word. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Most tools have clearly distinct roles, but islamweb_crawl_status and islamweb_crawl_stats could be confused at first glance since both relate to crawl progress. The descriptions clarify that one tracks an in-memory job and the other reads a file, so the ambiguity is minor.
All tools share the consistent islamweb_ prefix and snake_case convention, and most follow a verb_noun pattern (fetch_entry, start_crawl, compile_json). A few names deviate by leading with a noun (crawl_status, crawl_stats, lisan_al_arab_info), which is a slight inconsistency but still readable and predictable.
With 8 tools, the set is well-scoped for the server's purpose: discover dictionaries, fetch entries, crawl in the background, monitor progress, inspect datasets, compile, and search. No tool feels redundant or unnecessary, and the count is squarely in the ideal 3-15 range.
The tool surface covers the full crawl workflow—listing, fetching, starting, monitoring, compiling, and searching—which covers the stated purpose well. Minor gaps exist such as no explicit cancel-job or list-running-jobs tool, but these are workaround-able and don't create dead ends for the core pipeline.