elimu-mcp
elimu-mcp
Compatible with claude-sonnet-5 (released 2026-06-30) — Anthropic's most agentic
Sonnet yet. Runs multi-step tool chains end-to-end without stopping short.
Install: pip install elimu-mcp · Use with any MCP client.
MCP server for Kenya education system — school registry, KCSE/KCPE results lookup, HELB loans, TVET programs, and literacy resources. 5 tools.
Part of the East Africa Coordination Stack
This MCP server is one of 32 tools in the Kenya coordination infrastructure.
Connect it to africa-coord-bus —
the coordination event bus that routes signals between domains automatically.
pip install africa-coord-busAll 32 servers: pypi.org/user/gmahia Live demo: coord-cascade-demo
Related MCP server: habari-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
Install & run:
pip install reli-cli && reli list— 33 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
5 toolsexam_results_guideCRead-only
Guide to KCPE/KCSE results, grading, and cluster points. DEMO.
| Name | Required | Description | Default |
|---|---|---|---|
| exam | Yes | ||
| concern | No | Optional filter for concern. Pass None to return all results. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds the 'DEMO' label, which might indicate limited functionality. It does not contradict annotations, but no additional behavioral traits are disclosed.
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 very short (one sentence) and contains no fluff, but it omits important context. It is concise yet incomplete.
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?
Despite having an output schema, the description does not specify what values 'exam' accepts (e.g., 'KCPE' or 'KCSE'). For a guide tool, this is a significant gap that hinders correct usage.
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 coverage is only 50% (only 'concern' has a description). The tool description does not elaborate on the 'exam' parameter, which is required and lacks schema documentation. No additional semantic information is provided beyond 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 it is a guide to KCPE/KCSE results, grading, and cluster points, which identifies the tool's purpose and domain. However, it lacks an explicit verb like 'retrieve' or 'get' to specify the action.
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?
No guidance is provided on when to use this tool vs. sibling tools. The description does not mention alternatives or exclusion criteria, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
helb_loan_infoCRead-only
HELB loan eligibility, application, and repayment. DEMO.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| student_type | No | undergraduate |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds 'DEMO' indicating test mode, providing behavioral context beyond annotations. No contradictions.
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?
Extremely concise but at the cost of completeness. Single sentence, no fluff, but lacks essential details.
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?
Despite simple tool and existing output schema, description omits parameter guidance and usage scenarios. Insufficient for reliable agent 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?
Schema coverage is 0%, and description gives no detail about the 'query' or 'student_type' parameters. The default for student_type is noted, but meaning is absent.
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?
Describes tool covering HELB loan eligibility, application, and repayment, distinguishing it from sibling tools focused on exams, literacy, schools, and TVET. However, lacks a specific verb like 'get' or 'retrieve'.
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?
No guidance on when to use this tool versus alternatives. The siblings are unrelated, so no explicit usage context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
literacy_resourcesCRead-only
Adult education, literacy programs, and continuing education in Kenya. DEMO.
| Name | Required | Description | Default |
|---|---|---|---|
| county | No | Optional filter for county. Pass None to return all results. | |
| age_group | No | adult |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, which the description does not contradict. The description adds no behavioral details beyond those annotations, such as data freshness, authentication needs, or that it is a demo. The DEMO tag is noted but not a behavioral trait.
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 sentence with clear subject matter. It is concise and front-loaded. However, it could be better structured with a verb and optional usage hints.
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?
Given the simplicity of the tool (2 optional params) and existence of an output schema, the description does not explain the output context or any constraints like which counties are covered. The DEMO label suggests incomplete data but is not elaborated.
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 50%: county has a description, age_group does not. The tool description mentions no parameters or their meanings, so it adds no value beyond the schema. For the undocumented age_group parameter, a description would help.
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 tool provides information about adult education, literacy programs, and continuing education in Kenya. It distinguishes from siblings like school_finder and tvet_programs which focus on other education levels. However, it lacks a verb like 'list' or 'search', making the action implicit.
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?
No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, exclusions, or recommended contexts. The DEMO label suggests caution but is not actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
school_finderBRead-only
Find schools in a Kenya county by level. DEMO.
| Name | Required | Description | Default |
|---|---|---|---|
| county | Yes | ||
| level | No | secondary | |
| school_type | No | Optional filter for school type. Pass None to return all results. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral information beyond the annotation (readOnlyHint). It does not mention that it is a query tool or demo limitations.
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 no unnecessary words, front-loading the main action and resource.
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?
Given three parameters and a 'DEMO' label, the description is too brief. It does not explain the output (despite output schema existence) or the demo context.
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 text mentions filtering by level but does not explain the required county parameter or school_type. Schema coverage is low, so the description partially compensates but insufficiently.
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 tool finds schools in a Kenya county filtered by level, using a specific verb and resource. It is distinct from sibling tools.
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?
No guidance on when to use this tool versus alternatives or any prerequisites. The description lacks exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tvet_programsBRead-only
TVET programs available in Kenya by trade or county. DEMO.
| Name | Required | Description | Default |
|---|---|---|---|
| trade | No | Optional filter for trade. Pass None to return all results. | |
| county | No | County to list TVET institutions in. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the description adds 'DEMO' indicating a demo version, which is useful behavioral context. No contradictions, but minimal extra beyond 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?
Very concise with two sentences; the first states purpose, the second adds a note. No fluff, though 'DEMO.' could be integrated or split for clarity.
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?
Given the output schema exists and parameters are well-documented, the description is minimally adequate. However, it lacks a clear action verb and could more explicitly describe what the tool returns (e.g., program names, institutions).
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 coverage is 100%, so the description need not add much. It mentions 'by trade or county' aligning with parameters but adds no further detail beyond what the schema already provides.
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 tool provides TVET programs in Kenya, filterable by trade or county. It is specific and distinct from siblings like school_finder or exam_results_guide, though it lacks an explicit action verb like 'list'.
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 does not provide when-to-use or when-not-to-use guidance. It implies usage for TVET queries in Kenya but offers no exclusions or alternatives, relying only on sibling tool names for context.
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. Dates show when Glama detected each change.
4 tool updates
v0.1.3- Changed
exam_results_guide1 field changed- added
Input schema / properties / concern / descriptionAdded value: +"Optional filter for concern. Pass None to return all results."
- Changed
literacy_resources1 field changed- added
Input schema / properties / county / descriptionAdded value: +"Optional filter for county. Pass None to return all results."
- Changed
school_finder1 field changed- added
Input schema / properties / school_type / descriptionAdded value: +"Optional filter for school type. Pass None to return all results."
- Changed
tvet_programs2 fields changed- added
Input schema / properties / county / descriptionAdded value: +"County to list TVET institutions in." - added
Input schema / properties / trade / descriptionAdded value: +"Optional filter for trade. Pass None to return all results."
5 tool updates
v0.1.0- First observed
exam_results_guide - First observed
helb_loan_info - First observed
literacy_resources - First observed
school_finder - First observed
tvet_programs
TDQS
Each tool targets a distinct area of Kenya's education system: exam results, HELB loans, literacy, school finding, and TVET programs. There is no overlap in purpose.
All tool names follow a consistent snake_case pattern using descriptive noun phrases (e.g., exam_results_guide, school_finder), making them predictable and readable.
Five tools are well-suited for an education-focused MCP server covering key aspects of Kenya's education system without being overloaded or sparse.
The set covers major educational domains (exams, loans, literacy, schools, TVET) but lacks tools for university admissions, curriculum, or teacher resources, which are minor gaps for a demo.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server registry — validated by live handshake, scored on reliability, monitored continuously.
This MCP server provides seamless access to Malaysia's government open data, including datasets, w…
Official MCP server for Certifier to issue, manage, and track certificates and badges.
Related MCP Servers
- AlicenseCqualityAmaintenanceMCP server providing access to Kenya and East Africa historical archives, including timelines, independence leaders, cultural heritage sites, ethnic groups guide, oral history resources, and historical documents.6MIT
- AlicenseCqualityAmaintenanceMCP server for Kenya civic information — Kenya Gazette, government tenders, open data, parliament tracker, citizen feedback.5MIT
- AlicenseCqualityAmaintenanceMCP server for Kenya community finance — SACCO finder, chama formation, cooperative benefits, loan guides, member rights.5MIT
- AlicenseBqualityAmaintenanceMCP server for Kenya transport — matatu route finder, NTSA services, boda licensing, freight logistics, passenger rights.5MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/gabrielmahia/elimu-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server