Skip to main content
Glama

๐Ÿฅ Swahili Health MCP

Model Context Protocol (MCP) server for Kenya health data. Provides AI agents with tools to query Kenya health facilities, maternal health indicators, immunization coverage, and disease surveillance data via the DHIS2 public API.

PyPI version License: MIT

Tools

Tool

Description

get_health_facility

Get details of a Kenya health facility by name or code

search_facilities_by_county

List health facilities in a county with level and services

get_maternal_health

Maternal health indicators โ€” ANC visits, skilled birth attendance

get_immunization_coverage

Child immunization coverage by vaccine and county

get_disease_surveillance

Weekly disease surveillance data (malaria, diarrhea, pneumonia)

get_health_worker_count

Health worker density by county

Related MCP server: KenyaMCPServer

Usage with Claude

# Install
pip install swahili-health-mcp

# Add to Claude Code
claude mcp add swahili-health -- swahili-health-mcp

# Or with uvx
claude mcp add swahili-health -- uvx swahili-health-mcp

Data Sources

  • Kenya DHIS2 (dhis.moh.go.ke) โ€” Ministry of Health open data

  • Kenya Health Facility Registry (kenyaemr.org)

  • Kenya Health Information System (KHIS)

All data is publicly available via Kenya's open government data policy.

Part of the East Africa Civic Tech Portfolio

See also: mpesa-mcp | wapimaji-mcp

IP & Collaboration

MIT licensed. Feedback via GitHub Issues only โ€” pull requests are not accepted. Demo data is labeled DEMO and is not suitable for operational decisions. Full policy: docs/architecture/IP_POLICY.md. Security reports: see SECURITY.md.

Part of the East Africa coordination stack

Model-agnostic by design: closed APIs, open-weight models, and small distilled models are all first-class citizens.

Available Tools

3 tools
get_immunization_coverageB

Pata kiwango cha chanjo / Get immunization coverage for a county and vaccine

ParametersJSON Schema
NameRequiredDescriptionDefault
countyYesCounty name
vaccineNoVaccine name (BCG, DPT3, Measles, etc.)DPT3

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
countyYesCounty name

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNoFacility level (1-6)
countyNoCounty name (e.g., Nairobi, Kiambu)

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

  1. 3 tool updatesv0.1.2
    • First observedget_immunization_coverage
    • First observedget_maternal_health_indicators
    • First observedsearch_health_facilities

TDQS

A3.5/5.0

Scored across 3 tools

Disambiguation5/5

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.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern: search_health_facilities, get_maternal_health_indicators, get_immunization_coverage. The naming is predictable and uniform.

Tool Count4/5

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.

Completeness3/5

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

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides 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.
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Provides 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.
    10
    6
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides access to UNICEF data on global statistics about child health, enabling AI agents to query child health indicators.
    5
    MIT