elimu-mcp 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Gabriel Mahia
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,15 @@
1
+ Metadata-Version: 2.4
2
+ Name: elimu-mcp
3
+ Version: 0.1.0
4
+ Summary: MCP server for Kenya education system — school registry, KCSE/KCPE results lookup, HELB loans, TVET programs, and literacy resources. 5 tools.
5
+ License: MIT
6
+ Keywords: mcp,kenya,africa,education,helb,kcse,east-africa,coordination-infrastructure
7
+ Requires-Python: >=3.10
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ Requires-Dist: fastmcp>=0.9
11
+ Requires-Dist: pydantic>=2.0
12
+ Dynamic: license-file
13
+
14
+ # elimu-mcp
15
+ MCP server for Kenya education system — school registry, KCSE/KCPE results lookup, HELB loans, TVET programs, and literacy resources. 5 tools.
@@ -0,0 +1,2 @@
1
+ # elimu-mcp
2
+ MCP server for Kenya education system — school registry, KCSE/KCPE results lookup, HELB loans, TVET programs, and literacy resources. 5 tools.
@@ -0,0 +1,19 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "elimu-mcp"
7
+ version = "0.1.0"
8
+ description = "MCP server for Kenya education system — school registry, KCSE/KCPE results lookup, HELB loans, TVET programs, and literacy resources. 5 tools."
9
+ readme = "README.md"
10
+ license = { text = "MIT" }
11
+ requires-python = ">=3.10"
12
+ dependencies = ["fastmcp>=0.9", "pydantic>=2.0"]
13
+ keywords = ["mcp","kenya","africa","education","helb","kcse","east-africa","coordination-infrastructure"]
14
+
15
+ [project.scripts]
16
+ elimu-mcp = "elimu_mcp.server:mcp.run"
17
+
18
+ [tool.setuptools.packages.find]
19
+ where = ["src"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,2 @@
1
+ """ElimuMCP."""
2
+ __version__ = "0.1.0"
@@ -0,0 +1,86 @@
1
+ """ElimuMCP — Kenya Education System Navigation (5 tools). All data DEMO."""
2
+ from __future__ import annotations
3
+ from typing import Optional
4
+ from fastmcp import FastMCP
5
+
6
+ mcp = FastMCP(name="elimu-mcp", description="Kenya education system navigation. DEMO data only.")
7
+
8
+ @mcp.tool(name="school_finder", description="Find schools in a Kenya county by level. DEMO.")
9
+ def school_finder(county: str, level: Optional[str] = "secondary", school_type: Optional[str] = None) -> dict:
10
+ levels = {"primary": "Standard 1-8, KCPE at end", "secondary": "Form 1-4, KCSE at end",
11
+ "tvet": "6 months–3 years, NQF Level 2-5", "university": "3-4 year degree programs"}
12
+ sample = [{"name": f"{county} High School", "level": level, "type": "public", "county": county, "board": "TSC/MOE"},
13
+ {"name": f"St. Mary's {county}", "level": level, "type": "private", "county": county, "board": "Private"},
14
+ {"name": f"{county} Girls School", "level": level, "type": "public", "county": county, "board": "TSC/MOE"}]
15
+ if school_type:
16
+ sample = [s for s in sample if s["type"] == school_type.lower()]
17
+ return {"source": "DEMO — verify at nemis.go.ke", "county": county, "level": level,
18
+ "level_description": levels.get(level.lower(), "See nemis.go.ke"),
19
+ "sample_schools": sample, "full_registry": "nemis.go.ke — National Education Management Information System"}
20
+
21
+ @mcp.tool(name="exam_results_guide", description="Guide to KCPE/KCSE results, grading, and cluster points. DEMO.")
22
+ def exam_results_guide(exam: str, concern: Optional[str] = None) -> dict:
23
+ GUIDE = {
24
+ "kcpe": {"full_name": "Kenya Certificate of Primary Education", "marks": "500 total (5 subjects × 100)",
25
+ "grading": "A–E grades. Grade A = 400+. Used for Form 1 placement.",
26
+ "results": "Available at knec.ac.ke and via SMS. Released typically in late November.",
27
+ "placement": "National schools (400+), Extra-county (350+), County schools (300+)"},
28
+ "kcse": {"full_name": "Kenya Certificate of Secondary Education", "grades": "A to E, mean grade used",
29
+ "grading": "A(12pts) to E(1pt). Mean grade C+ required for university.",
30
+ "results": "knec.ac.ke. Released November–December.",
31
+ "cluster_points": "University cluster points: Science (Physics+Chemistry+Math+Bio), Arts (different combos)"},
32
+ }
33
+ exam_key = exam.lower()
34
+ data = GUIDE.get(exam_key, GUIDE["kcse"])
35
+ return {"source": "DEMO — knec.ac.ke for official results", "exam": exam, **data,
36
+ "official": "knec.ac.ke", "university_admissions": "kuccps.net"}
37
+
38
+ @mcp.tool(name="helb_loan_info", description="HELB loan eligibility, application, and repayment. DEMO.")
39
+ def helb_loan_info(query: str, student_type: Optional[str] = "undergraduate") -> dict:
40
+ INFO = {
41
+ "eligibility": "Kenyan citizen, enrolled in accredited university or TVET, not in default.",
42
+ "amounts": "Undergrad: KES 10,000–60,000/year depending on parental income. TVET: KES 8,000–50,000.",
43
+ "application": "Apply at helb.co.ke. Requires: ID, admission letter, KRA PIN, guarantors (2 required).",
44
+ "repayment": "Begins 1 year after graduation. 4% interest. 10–15 year repayment period.",
45
+ "default": "Defaulters listed on CRB. Employers can garnish salary. Must pay before further government services.",
46
+ "bursary": "Separate from loans. Apply via county government or Constituency Development Fund (CDF).",
47
+ }
48
+ q = query.lower()
49
+ matched = {k: v for k, v in INFO.items() if k in q or any(w in q for w in k.split("_"))}
50
+ return {"source": "DEMO — helb.co.ke for official info", "query": query,
51
+ "student_type": student_type, "information": matched or INFO,
52
+ "official": "helb.co.ke", "disclaimer": "Verify all amounts at HELB — rates change annually."}
53
+
54
+ @mcp.tool(name="tvet_programs", description="TVET programs available in Kenya by trade or county. DEMO.")
55
+ def tvet_programs(trade: Optional[str] = None, county: Optional[str] = None) -> dict:
56
+ PROGRAMS = [
57
+ {"trade": "electrical", "nqf_level": 4, "duration": "2 years", "qualification": "Craft Certificate",
58
+ "provider": "National Polytechnic or Accredited TVET"},
59
+ {"trade": "automotive", "nqf_level": 4, "duration": "2 years", "qualification": "Craft Certificate",
60
+ "provider": "Kenya Institute of Highways & Building Technology"},
61
+ {"trade": "ict", "nqf_level": 5, "duration": "3 years", "qualification": "Diploma",
62
+ "provider": "Technical University or accredited TVET"},
63
+ {"trade": "fashion_design", "nqf_level": 4, "duration": "2 years", "qualification": "Craft Certificate",
64
+ "provider": "Kenya Utalii/TVET"},
65
+ {"trade": "plumbing", "nqf_level": 3, "duration": "1 year", "qualification": "Artisan Certificate",
66
+ "provider": "NITA-accredited VTC"},
67
+ {"trade": "agriculture", "nqf_level": 4, "duration": "2 years", "qualification": "Craft Certificate",
68
+ "provider": "Kenya Agricultural TVETs"},
69
+ ]
70
+ if trade:
71
+ PROGRAMS = [p for p in PROGRAMS if trade.lower() in p["trade"]]
72
+ return {"source": "DEMO — tveta.go.ke for full registry", "trade_query": trade, "county": county,
73
+ "programs": PROGRAMS, "accreditation": "tveta.go.ke", "helb": "TVET students eligible for HELB"}
74
+
75
+ @mcp.tool(name="literacy_resources", description="Adult education, literacy programs, and continuing education in Kenya. DEMO.")
76
+ def literacy_resources(county: Optional[str] = None, age_group: Optional[str] = "adult") -> dict:
77
+ return {"source": "DEMO — literacy.go.ke", "county": county, "age_group": age_group,
78
+ "programs": [
79
+ {"name": "Kenya Literacy Programme", "provider": "Ministry of Education", "target": "Adults 15+",
80
+ "delivery": "Community learning centres", "cost": "Free at public centres"},
81
+ {"name": "Non-Formal Education (NFE)", "provider": "County governments",
82
+ "target": "Out-of-school youth and adults", "delivery": "Evening/weekend classes"},
83
+ {"name": "Kenya Open Learning Institute (KOLI)", "provider": "Ministry of Education",
84
+ "target": "Adult distance learners", "delivery": "Distance/blended"},
85
+ ],
86
+ "contact": "County Director of Education for local literacy centre locations."}
@@ -0,0 +1,15 @@
1
+ Metadata-Version: 2.4
2
+ Name: elimu-mcp
3
+ Version: 0.1.0
4
+ Summary: MCP server for Kenya education system — school registry, KCSE/KCPE results lookup, HELB loans, TVET programs, and literacy resources. 5 tools.
5
+ License: MIT
6
+ Keywords: mcp,kenya,africa,education,helb,kcse,east-africa,coordination-infrastructure
7
+ Requires-Python: >=3.10
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ Requires-Dist: fastmcp>=0.9
11
+ Requires-Dist: pydantic>=2.0
12
+ Dynamic: license-file
13
+
14
+ # elimu-mcp
15
+ MCP server for Kenya education system — school registry, KCSE/KCPE results lookup, HELB loans, TVET programs, and literacy resources. 5 tools.
@@ -0,0 +1,11 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ src/elimu_mcp/__init__.py
5
+ src/elimu_mcp/server.py
6
+ src/elimu_mcp.egg-info/PKG-INFO
7
+ src/elimu_mcp.egg-info/SOURCES.txt
8
+ src/elimu_mcp.egg-info/dependency_links.txt
9
+ src/elimu_mcp.egg-info/entry_points.txt
10
+ src/elimu_mcp.egg-info/requires.txt
11
+ src/elimu_mcp.egg-info/top_level.txt
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ elimu-mcp = elimu_mcp.server:mcp.run
@@ -0,0 +1,2 @@
1
+ fastmcp>=0.9
2
+ pydantic>=2.0
@@ -0,0 +1 @@
1
+ elimu_mcp