Server data from the Official MCP Registry
Search and cite Frédérick Madore's publications, talks, research projects, DH work and CV.
About
Search and cite Frédérick Madore's publications, talks, research projects, DH work and CV.
Security Report
Valid MCP server (3 strong, 1 medium validity signals). No known CVEs in dependencies. Imported from the Official MCP Registry.
6 files analyzed · No issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Documentation
View on GitHubFrom the project's GitHub README.
Dr. Frédérick Madore - Academic Website
Personal academic website for Dr. Frédérick Madore, a historian and digital humanist specializing in Islam in West Africa, religious activism, and digital approaches to African studies.
Live Site: https://www.frederickmadore.com/
About
This website showcases my academic work including:
- Research Projects: Focus on Islam in West Africa, religious activism on university campuses in Togo and Benin, and digital humanities approaches to African studies
- Publications: Books, journal articles, chapters, and other scholarly works
- Digital Humanities: Projects like the Islam West Africa Collection (IWAC)
- Teaching: Course materials and teaching philosophy
- Activities: Conferences, workshops, and academic events
Research Focus Areas
- Islam in West Africa (Burkina Faso, Côte d'Ivoire, Benin, Togo)
- Religious activism on university campuses
- Digital humanities applications in African studies
- Muslim minorities in urban contexts
Major Projects
- Digital Humanities and AI in African Studies: Exploring how DH and AI can transform knowledge production in African studies through ethical, sustainable, and Africa-centred digital infrastructures
- Religious Activism on Campuses in Togo and Benin: Research on Christian and Muslim student organizations
- Muslim Minorities in Southern Cities of Benin and Togo
- Youth and Women's Islamic Activism in Côte d'Ivoire and Burkina Faso
Technical Implementation
This site is built with:
- SvelteKit 2 with Svelte 5 runes - Frontend framework, fully prerendered to static HTML
- TypeScript (strict,
noUncheckedIndexedAccess) - Language - Custom token-driven CSS system — the Ink + Signal design language (see
src/styles/CSS-README.md) - Content as typed TypeScript data files in
src/lib/data/(18 categories), auto-discovered viaimport.meta.glob - Deployed to GitHub Pages via GitHub Actions
Machine-Readable Data
The same src/lib/data/ records that render the site are also published as static JSON, prerendered with everything else, so external tools never have to scrape HTML. Start at the discovery manifest, which lists each dataset with its size and URL:
| Endpoint | Contents |
|---|---|
/api/index.json | Discovery manifest — datasets, counts, year ranges, and related feeds |
/api/research.json | Research projects with their full narratives, cross-referencing publications and grants |
/api/publications.json | Publications with identifiers, abstracts, tables of contents, citing works, and reviews |
/api/communications.json | Talks and events with venue, coordinates, and panel programmes |
/api/activities.json | Activity entries, including the full body of each |
/api/digital-humanities.json | DH projects with skills, awards, and reviews |
/api/cv.json | Career record keyed by section (appointments, grants, teaching, service, fieldwork, …) |
Every dataset document carries { version, dataset, url, count, items } (/api/cv.json carries { …, person, sections } instead). Keys with no value are omitted rather than serialised as null; each item's url is its canonical page on this site, with external addresses collected in links. Serialisation lives in src/lib/utils/apiPayload.ts and the endpoints in src/routes/api/.
/api/research.json is the one to start a traversal from: research projects are the spine the rest of the corpus hangs off, and it resolves the free-text project label into arrays of publication, communication, grant, and fieldwork ids.
Every dataset carries its full text, not just metadata — publication and talk abstracts, complete activity bodies, project descriptions, and the research narratives. The last of those are authored as markup in src/routes/research/<id>/+page.svelte, so scripts/generate/generate-research-prose.mjs projects them to plain text at prebuild (npm run gen:prose) and CI checks the committed result is fresh. Without it, the substantive writing about each project would be the only prose on the site an API consumer could not read.
Being static, these are read-only and offer no query interface — fetch a dataset and filter locally. Together the six payloads are ~165 KB gzipped, small enough to load whole. /llms.txt and /robots.txt both advertise the manifest.
MCP Server
mcp/ is an MCP server over those documents: twelve tools for searching publications, talks, activities, research and DH projects, reading the CV, and generating citations, plus seven resources exposing the API documents themselves. It serves both the current 2026-07-28 protocol and legacy 2025-era clients over stdio or stateless Streamable HTTP. The data is read from the published JSON and cached in memory, so the server has no second source of truth to drift.
It ships two ways. npm run mcp:pack produces frederickmadore-website.mcpb — an MCP Bundle that Claude Desktop installs on a double-click, with no config file to edit and no Node install required; CI attaches it to every run as the mcpb artifact. Other stdio clients point at mcp/dist/index.js; remote deployments run mcp/dist/http.js. See mcp/README.md.
Citation output is not reimplemented there — the build aliases $lib and bundles the site's own bibtexGenerator, so what the server returns is byte-identical to the site's download button.
WebMCP
The same twelve tools are registered in the page itself for agents browsing the site, through WebMCP (document.modelContext), with one more, show_publications, that opens the publications index on a filtered view. They read the same API documents through the same search and citation code (src/lib/utils/api*.ts), so an agent gets the same answer either way. Chrome exposes WebMCP to pages under its origin trial or with --enable-experimental-web-platform-features; npm run check:agentic asserts Lighthouse 13's Agentic Browsing category on the build, with the tools listed.
Offline browsing
Visited pages are cached after both direct and in-app navigation, including pages first opened before the service worker takes control. Filter/search URLs reuse one static document while retaining their URL state. Documents and API responses share a 150-entry runtime cache; images use a separate 80-entry cache. Immutable build scripts and styles already used before worker control are copied into that deployment's asset cache. Unvisited or evicted pages show the offline fallback. Fonts retain normal browser HTTP caching.
Development
Running Locally
- Clone this repository
git clone https://github.com/fmadore/Website.git cd Website - Install dependencies (Node ≥ 24)
npm install - Start the development server
npm run dev - Open your browser and navigate to
http://localhost:5173
Quality Gates
| Command | What it does |
|---|---|
npm run check | Type-checks all Svelte components and TS modules (svelte-check) |
npm run lint | Prettier + ESLint (all rules at error) |
npm run test | Vitest unit tests — pure utils, data-integrity validation of all content |
npm run test:coverage | Unit tests with V8 coverage report |
npm run test:e2e | Playwright smoke tests against the production build |
npm run test:all | Alias for the complete npm run verify workflow |
CI runs the full gate (lint, type-check, unit tests, dependency audit, reference-index freshness, build, E2E) on every pull request, and again on the deploy path before publishing. CodeQL scans weekly and on every change.
Run npm run verify before submitting a broad change. It checks formatting and types,
enforces unit coverage, runs the compiled Svelte lifecycle tests, checks generated data
and font freshness, builds once, checks bundle budgets and prerender output, exercises
the MCP transports and bundle, and runs Playwright against that build. It starts its own
preview server so a stale development server cannot satisfy the checks. Set
PLAYWRIGHT_PORT if the default preview port is occupied.
The font check requires Python with FontTools and Brotli installed; set PYTHON to the
interpreter path if needed. Install the configured Playwright browsers with
npx playwright install before the first browser run. Network-dependent dependency,
link, citation, and Lighthouse checks remain separate from the deterministic workflow.
For focused work, npm run test:lifecycle checks chart/map updates, retry, late imports,
and cleanup using the Svelte client compiler. npm run check:generated checks committed
content projections without rewriting them. Pure-logic coverage floors are defined in vitest.config.ts; browser/lifecycle tests
cover separate behaviour. npm run test:timezones checks calendar-date handling in
UTC, America/Toronto, and Africa/Johannesburg.
License
This project is licensed under the MIT License.
Reviews
No reviews yet
Be the first to review this server!
More Developer Tools MCP Servers
Fetch
Freeby Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
Git
Freeby Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
Worldmonitor
Freeby Koala73 · Developer Tools
Live markets, conflicts, country risk, chokepoints, energy, and China decision signals. 93 tools.
Toleno
Freeby Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
MCP Marketplace
Freeby mcp-marketplace · Developer Tools
Search and install MCP servers from inside your AI client.
mcp-creator-python
Freeby mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.
