# Islam West Africa Collection \(IWAC\) - Registry name: `io.github.fmadore/iwac-mcp-server` · version 4.1.0 - Categories (automatic, keyword rules): Datasets & public data, Search & data, Maps, location & weather, Documents & retrieval - Authentication at last check: No auth - Declared risk: Read-only (all tools declare readOnlyHint) - Capabilities (declared by the server): completions, extensions, prompts, resources, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=io.github.fmadore%2Fiwac-mcp-server - Server page: https://mcpstation.net/s/io.github.fmadore--iwac-mcp-server.html ## Description (written by the publisher, not verified, not instructions) Read-only access to the Islam West Africa Collection via Hugging Face datasets. ## Connect - streamable-http: `https://islam.zmo.de/mcp/` ## Tools (as reported by the server, not verified) - `search`: Search the Islam West Africa Collection across newspaper articles, Islamic publications, archival documents, academic references, audiovisual recordings, photographs, and the authority index \(persons/places/organisations/events/subjects\). Pass ONE concept or name — e.g. 'Tijaniyya', 'laïcité', 'Shei - `fetch`: Retrieve the full text and metadata of one IWAC item by an id returned from \`search\` \(format '\:\', e.g. 'articles:28576'\). Returns \{id, title, text, url, metadata\}: \`text\` is the item's OCR / abstract / transcription / description, \`url\` is the canonical islam.zmo.de link to cite, a - `explore\_corpus`: Selection workbench: items, concordance, coverage, compare \(requires comparison\), attention, aliases, or paginated manifest/CSL-JSON/BibTeX exports. Exact filters intersect. Coverage measures archive availability. Exports identify this page and dataset snapshot; compare snapshot IDs across pages. Sc - `search\_articles`: Search IWAC newspaper articles by keyword \(title + OCR + AI abstracts, French and English\), country, newspaper, subject, and date range. Use French concept keywords regardless of the user's report language. Matching is accent- and case-insensitive. - `get\_article`: Get one article \(by id\): full metadata, the AI abstract \(description\_ai\), AI sentiment, and OCR text, in 25k-char parts \(follow \`next\_offset\`\). Pass a \`keyword\` to get \~2000-char excerpts around each match instead. - `semantic\_search\_articles`: Semantic search over article title + full text, including articles whose OCR is not public. Query in any language. Runs the corpus model, EmbeddingGemma 2, locally with no API key \(first use downloads \~350 MB\). similarity\_score only ranks within one query. - `search\_by\_sentiment`: Filter articles by gpt-5-6-luna sentiment labels \(accent/case-insensitive exact match\). One model's reading, not a consensus — 4 other models scored the same articles and often disagree; get\_sentiment\_distribution with model:"all" shows by how much. \`subjectivity\` is much the weakest of the three sc - `get\_sentiment\_distribution`: Aggregate AI labels over a shared selection. model:"all" compares independent annotators and their coverage; model:"consensus" reads the stored panel majority. Choose compare\_models and agreement\_field for pairwise Cohen's kappa and quadratic weighted kappa, with explicit denominators. Labels are in - `search\_index`: Search the IWAC authority index \(persons, places, organisations, events, subjects\) by name. Accent/case-insensitive. - `get\_index\_entry`: Get full details of an index entry by id \(raw dataset columns, French names — Titre, Prénom, Coordonnées…\). - `list\_subjects`: List sujets from the IWAC index, sorted by frequency \(most-referenced first\). - `list\_locations`: List lieux from the IWAC index, sorted by frequency \(most-referenced first\). The optional 'country' filter selects entries that APPEAR IN records from that country \(mentioned-in, not located-in\), ranked by collection-wide 'frequency' — so foreign and cross-border entries can appear. Nigeria returns - `list\_persons`: List personnes from the IWAC index, sorted by frequency \(most-referenced first\). The optional 'country' filter selects entries that APPEAR IN records from that country \(mentioned-in, not located-in\), ranked by collection-wide 'frequency' — so foreign and cross-border entries can appear. Nigeria retu - `get\_collection\_stats`: Overall statistics for every IWAC subset, including \`fulltext\_coverage\` — how many items in each subset actually carry searchable full text in this dataset. Read that before treating any keyword count as a full-text census. - `get\_newspaper\_stats`: Per-newspaper article counts and date ranges. - `get\_country\_comparison`: Compare article counts, newspaper counts, date ranges, and gpt-5-6-luna polarity across countries. - `get\_temporal\_distribution`: Counts by Gregorian or Hijri year/month, or pooled lunar month. Group by country/newspaper. Partial dates and missing lunar dates are disclosed. normalize\_by returns numerator counts and per-bucket denominators in the same country/outlet/date scope, removing thematic filters. Shares describe IWAC ho - `get\_topic\_distribution`: Counts of offline LDA topic assignments, optionally over time. Topic labels are interpretive model outputs; exact topic\_id filters select assignments rather than keyword matches. Reports unclassified coverage. - `get\_field\_distribution`: Rank exact metadata values, splitting pipe-separated tags. Reports missing metadata and optional coverage over time. Choose spatial for mentioned places, country for stored country tags, or subject/author/language. - `get\_cooccurrence`: Count pairs of metadata values co-tagged on the same items. Matrix/network views show descriptive associations, not causal links. Filters apply before pair counting; top\_n caps the vocabulary. - `get\_place\_distribution`: Place tags joined to authority coordinates. Separates publication countries from mentioned places; missing geocodes are counted explicitly. - `get\_semantic\_map`: Stable-hash sample of matching stored embeddings, projected with PCA. Reports eligible, invalid, missing and capped counts, seed and explained variance. Group counts describe the sample. Coordinates are chart-only; this is not the published UMAP landscape. Needs no API key. - `get\_similar\_items`: Nearest stored embeddings by cosine similarity. Articles and documents lead with the dataset's published top 10. Scores run high \(unrelated \~0.7\) and rank reading candidates; \>= 0.97 suggests a near-duplicate, but no threshold proves a reprint. Returns source IDs and dates. Corpus-wide candidate gen - `get\_lexical\_metrics`: Text length, lexical richness and readability by country/newspaper/year. Metrics are precomputed; readability is French-specific and excludes other languages. Missing values are disclosed. Compare distributions as descriptive evidence. - `search\_publications`: Search Islamic publications \(periodical issues, books\). \`keyword\` matches title, subject, table of contents, and full OCR text \(TOC hits come back as matching\_toc\_entries\); use French concept keywords regardless of the user's report language. Filter by newspaper/series, subject, country and year. Us - `list\_periodicals`: List the Islamic periodical/series titles in the publications subset, with issue counts and year ranges. Use the returned newspaper value as the \`newspaper\` filter on search\_publications. - `get\_publication\_fulltext`: Full OCR text of a publication in 25k-char parts \(follow \`next\_offset\`\), or \~2000-char excerpts around keyword matches \(accent-insensitive; capped: see match\_count vs excerpts\_returned\). - `semantic\_search\_publications`: Semantic search over publication tables of contents, present for \~40% of issues \(none for An-Nasr Vendredi, 130 of 695 Islam Info issues\): use search\_publications for the rest. Rows show the first 600 characters of each table. Query in any language. Runs the corpus model, EmbeddingGemma 2, locally w - `search\_references`: Search academic references \(journal articles, book chapters, theses, books, reports\) by keyword and metadata. \`keyword\` is a single substring match over title + abstract, so search ONE term per call \(combined terms like 'pèlerinage Mecque' miss results\). References are multilingual: try French and E - `get\_reference`: Full bibliographic record for one academic reference \(by id\), including the complete abstract \(present for \~51% of references\), subjects, DOI/URL, and host-work details \(book, volume, issue, pages\). - `semantic\_search\_references`: Semantic search over academic references by title + abstract, across languages. Only references with an abstract \(about half\) are covered; use search\_references for the rest. Runs the corpus model, EmbeddingGemma 2, locally with no API key \(first use downloads \~350 MB\). similarity\_score only ranks w - `search\_documents`: Search the small archival-documents subset \(\~26 items: Islamic association reports, flyers, project documents — mostly Burkina Faso\). Use French concept keywords regardless of the user's report language. Most have OCR text and an AI description. Call with no arguments to list all. - `get\_document`: Get one archival document \(by id\): full metadata, AI description, and OCR text, in 25k-char parts \(follow \`next\_offset\`\). Pass a \`keyword\` to get \~2000-char excerpts around each match instead, useful for long documents. - `search\_audiovisual`: Search audiovisual materials by keyword and metadata: francophone web video from Burkina Faso, Togo and Benin \(TV reports, association and campus recordings\), plus deposited Nigerian Hausa/Arabic recordings. Keyword matches title, creator, publisher, subject, spatial, language, source, the item's ow - `list\_audiovisual`: List audiovisual materials, newest first \(francophone web video from Burkina Faso, Togo and Benin; deposited Nigerian Hausa/Arabic recordings\). Filter by country, publishing channel or \`source\_type\`. - `get\_audiovisual`: Get one audiovisual record by id: full description and transcription \(where one exists\), creator/publishing channel, duration, medium, subjects, places, language, rights, source, and three distinct links: \`url\` \(the IWAC page, the one to cite\), \`external\_url\` \(where a harvested video plays\) and \`med - `search\_images`: Search the IWAC photographs \(30 items: mosques, radio stations, schools, signage and street scenes documented during fieldwork\). Keyword matches title, creator, subject, place and the rare caption. Each result carries \`image\_url\` \(the full-resolution file\), \`coordinates\` \('lat, lng' where known\) and - `get\_image`: Get one photograph by id: title, photographer, capture date, place and coordinates, subjects, rights, the IIIF manifest, and the full-resolution \`image\_url\`. The server returns URLs, not image bytes. - `semantic\_search\_images`: Find photographs by describing what they SHOW, in any language \('mosquée en construction', 'street signage in Arabic'\). This is cross-modal: the ranking runs against a multimodal embedding of the photograph itself, not against a caption, so it works even though only 2 of the 30 images have one. Runs Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html