Swahili Health MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Swahili Health MCPlist health facilities in Nairobi county"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Swahili Health MCP
Kenya county-level maternal health, child immunization and child stunting indicators for AI agents, from the DHS Program's Kenya Demographic and Health Survey 2022. Real survey data, bundled in the package (works offline), with the source, survey year, reference period and sample size on every answer.
Tools
Tool | What it does |
| The 11 indicators held (id, label, population, whether higher or lower is better) and the survey they come from. Call this first. |
| Every indicator for one county. |
| Antenatal visits (4+), antenatal care from a skilled provider, skilled assistance at delivery, health-facility delivery, no postnatal checkup. |
| Children 12-23 months who received BCG, DPT3, measles, were fully vaccinated (8 basic antigens) or received none. |
| Rank the counties on one indicator: where is need greatest, where is coverage best. |
All 47 counties, Nairobi included. An unknown county or vaccine is an error that lists the valid values; nothing is guessed or defaulted.
Related MCP server: KenyaMCPServer
Install and use
pip install swahili-health-mcp
claude mcp add swahili-health -- swahili-health-mcp # or: uvx swahili-health-mcpThen ask: "Which five counties have the lowest DPT3 coverage?", "Compare antenatal care in Turkana and Nairobi."
What these numbers are, and are not
Survey estimates, not routine facility reporting (KHIS). Each carries sampling error; county samples are small, so close values are not reliably different (the sample size
nis in every answer).The reference period is the DHS-preferred one (the two years before the survey). DHS also publishes a three-year period for the same counties; this server deliberately uses one.
Data: The DHS Program, Kenya DHS 2022 (KNBS and ICF), retrieved from
api.dhsprogram.comand bundled asswahili_health_mcp/data/kdhs2022_counties.json. Rebuild it withpython scripts/refresh_kdhs.py(needs network; the server does not).Not clinical advice and not an operational record. There is no facility register, disease surveillance or health-worker data here: earlier versions advertised some of those and did not deliver them (see below).
Changes in 0.2.0 (breaking)
Replaced synthetic demo numbers (identical for every county) with real KDHS 2022 county estimates.
Removed the demo facility list (unverified details). A real facility register (Kenya Master Health Facility List) is not integrated yet.
The README previously listed tools that never existed (
get_disease_surveillance,get_health_worker_count, and others); the tool list above is exactly what the server exposes, and a test enforces it.Moved from a hand-rolled JSON-RPC loop to FastMCP 4, which serves both the legacy and the stateless 2026-07-28 MCP protocol revisions.
IP & Collaboration
MIT licensed. Feedback via GitHub Issues only — pull requests are not accepted. Survey estimates are not suitable for clinical or operational decisions. Full policy: docs/architecture/IP_POLICY.md. Security reports: see SECURITY.md.
Part of the East Africa coordination stack
Install & run:
pip install reli-cli && reli list— the MCP servers on the official MCP Registry underio.github.gabrielmahiaEvaluate any model on Swahili agent tasks: kipimo · dataset · leaderboard
Coordinate across servers: africa-coord-bus — offline-first event bus with a built-in Kenya routing table
Datasets: huggingface.co/gmahia · Docs hub: nairobi-stack
Model-agnostic by design: closed APIs, open-weight models, and small distilled models are all first-class citizens.
Available Tools
3 toolsget_immunization_coverageB
Pata kiwango cha chanjo / Get immunization coverage for a county and vaccine
| Name | Required | Description | Default |
|---|---|---|---|
| county | Yes | County name | |
| vaccine | No | Vaccine name (BCG, DPT3, Measles, etc.) | DPT3 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits beyond the basic 'get' operation. It does not mention read-only status, potential side effects, rate limits, or output format, which is a significant gap given the lack of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with bilingual phrasing, containing no unnecessary words. It is front-loaded with the action and resource, making it quickly scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two parameters and no output schema, so the description gives the essential purpose and inputs. However, it does not describe the return value or any usage context, which could be useful. It meets the minimum viability but lacks depth.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description explicitly mentions 'county and vaccine', which aligns with the schema parameters, but it does not add any extra meaning or clarify formats beyond what is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and the resource 'immunization coverage' with the specific scope 'county and vaccine'. This directly distinguishes it from sibling tools like search_health_facilities and get_maternal_health_indicators.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description simply states what it does without any contextual clues or exclusions, leaving the agent to infer usage from the name and parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_maternal_health_indicatorsB
Pata takwimu za afya ya uzazi / Get maternal health indicators for a county
| Name | Required | Description | Default |
|---|---|---|---|
| county | Yes | County name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral context. It only says 'get', implying a read operation, but does not disclose what the returned indicators are, the data format, or any limitations. This is minimal disclosure beyond the tool's name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded, consisting of two short sentences. The Swahili translation is redundant but does not add significant length. It is appropriately concise, though the duplication could be considered unnecessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the description covers the core function but lacks detail on what maternal health indicators are included, data sources, or how this relates to sibling tools. It is minimally viable but leaves contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the 'county' parameter with 'County name'. The description adds only the context that the tool is for a county, which is marginal. Since schema coverage is high, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get maternal health indicators for a county' with a specific verb and resource. It distinguishes from sibling tools like search_health_facilities and get_immunization_coverage by focusing on maternal health indicators at the county level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus the sibling health data tools. It implies usage for county-level maternal health data but does not mention alternatives or exclusions, leaving the decision to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_health_facilitiesB
Tafuta vituo vya afya Kenya / Search Kenya health facilities
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Facility level (1-6) | |
| county | No | County name (e.g., Nairobi, Kiambu) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It merely says 'Search Kenya health facilities' without disclosing what the tool returns (e.g., a list of facilities, details), whether it supports filtering, pagination, authentication requirements, or any rate limits. This is a significant gap for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, consisting of a Swahili and English equivalent phrase. It is front-loaded and wastes no words, though the translation is redundant for the same content. It earns a high score for brevity, but the duplication reduces it slightly from a perfect 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Considering the tool has 2 parameters, no output schema, and no annotations, the description should explain what the search returns or any limitations. It only states the general purpose, leaving the agent to infer the result format. The description is minimally viable but not complete enough for effective invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage for both parameters ('level' and 'county') with descriptions. The description adds no additional semantic value beyond the schema, such as explaining how filters combine or expected input formats. Per calibration, baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool searches for health facilities in Kenya with both English and Swahili text. It uses a specific verb ('search'), a clear resource ('health facilities'), and a geographic scope ('Kenya'), distinguishing it from the sibling tools which focus on maternal health and immunization indicators.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like get_maternal_health_indicators or get_immunization_coverage. There is no mention of when to use it, prerequisites, or exclusions. The intended usage is only implied by the tool's name and purpose.
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.
3 tool updates
v0.1.2- First observed
get_immunization_coverage - First observed
get_maternal_health_indicators - First observed
search_health_facilities
TDQS
Scored across 3 tools
Each tool targets a distinct domain: facility search, maternal health, and immunization. There is no overlap in purpose, making it easy for an agent to select the correct tool.
All tools follow a consistent verb_noun pattern: search_health_facilities, get_maternal_health_indicators, get_immunization_coverage. The naming is predictable and uniform.
With only 3 tools, the server is minimal but appropriately scoped for a focused Kenyan health data provider. It sits at the lower boundary of the ideal 3-15 range, so slightly thin but still reasonable.
The tool surface covers facility search, maternal health, and immunization, but lacks other common health indicators (e.g., HIV/AIDS, malaria, child health) that would be expected from a general 'health' MCP. This leaves notable gaps for broader health queries.
Maintenance
Related MCP Connectors
Official statistics for AI agents: Eurostat, World Bank, OECD, IMF and WHO data for 150+ countries.
Public Data Ukraine Mcp connects AI agents to real public APIs via MCP. Tools include
Real-world data for agents: air quality, geocoding, quakes, holidays, web search
SEO & marketing toolkit for AI agents: GA4, Search Console, AdSense, GTM, PageSpeed, Trends.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides access to the World Health Organization's Global Health Observatory data, enabling AI assistants to search, retrieve, and analyze comprehensive health indicators, country statistics, disease burden data, and regional health trends through WHO's OData API.1MIT
- AlicenseAqualityBmaintenanceProvides access to Kenya's civic datasets including parliament records, county budgets, SACCO registry, and drought data through MCP tools. Enables AI agents to analyze and query Kenyan public data for civic applications.61MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for Kenya health facility and epidemiological data via KHIS/DHIS2.724 PyPIMIT
- AlicenseNot gradedqualityBmaintenanceProvides access to UNICEF data on global statistics about child health, enabling AI agents to query child health indicators.30 npmMIT