MCP server for international education data – UNESCO UIS (4,000+ indicators) and OECD Education at a Glance via SDMX. No API keys required.
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
claude mcp add global-education-mcp -- uvx global-education-mcp{
"mcpServers": {
"global-education-mcp": {
"command": "uvx",
"args": ["global-education-mcp"],
"env": {
"MCP_HOST": "<mcp_host>"
}
}
}
}MCP_HOSTMCP Servers overview
> 🇨🇭 **Part of the [Swiss Public Data MCP Portfolio](https://github.com/malkreide)**
# 🎓 global-education-mcp

[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
[](https://modelcontextprotocol.io/)
[](https://uis.unesco.org/)
[](https://www.oecd.org/education/education-at-a-glance/)
[](tests/)
[](https://uis.unesco.org/bdds)

> MCP server for international education data – UNESCO UIS (4,000+ indicators across all member countries) and OECD Education at a Glance via SDMX. No API keys required.
[🇩🇪 Deutsche Version](README.de.md)

---
## Overview
**global-education-mcp** gives AI assistants like Claude a complete international education intelligence system – literacy rates, enrolment ratios, education expenditure, teacher salaries, gender parity and SDG-4 monitoring, all accessible through a single standardised MCP interface.
The server bridges two of the most authoritative sources for internationally comparable education statistics: UNESCO UIS (global coverage, 4,000+ indicators) and the OECD's annual *Education at a Glance* (38 OECD countries, SDMX REST API). Both are open and require no API key.
**Anchor demo query:** *"Compare Switzerland's education expenditure as a percentage of GDP with Finland, Singapore and South Korea over the last 10 years – and flag any SDG-4 gaps."*
---
## Features
- 🌍 **UNESCO UIS** – 4,000+ indicators, all UNESCO member countries, no API key
- 📊 **OECD Education at a Glance** – 38 OECD countries + partners via SDMX REST
- 🔍 **Indicator search** – browse and filter the full UNESCO indicator catalogue
- 🗺️ **Multi-country comparison** – benchmark any indicator across multiple countries
- 🏫 **Country education profiles** – 10 core indicators in one call
- 🎯 **SDG-4 monitoring** – structured reporting on Education for All targets
- 📈 **OECD dataset search** – discover and retrieve Education at a Glance dataflows
- 🔑 **No API keys required** – fully open data, zero setup friction
- ☁️ **Dual transport** – stdio for Claude Desktop, Streamable HTTP (`/mcp`, spec `2026-07-28`) for cloud deployment
- 🛡️ **Graceful degradation** – API failures return helpful messages with local reference fallback
---
## Prerequisites
- Python 3.11+
- `uv` (recommended) or `pip`
- No API keys needed
---
## Installation
```bash
# Clone the repository
git clone https://github.com/malkreide/global-education-mcp.git
cd global-education-mcp
# Install
pip install -e ".[dev]"
```
Or with `uvx` (no permanent installation):
```bash
uvx global-education-mcp
```
---
## Quickstart
```bash
# Start the server (stdio mode for Claude Desktop)
global-education-mcp
```
Try it immediately in Claude Desktop:
> *"What is Switzerland's literacy rate compared to Finland and Singapore?"*
> *"Show me education expenditure as % of GDP for CHE, DEU and AUT over the last 10 years."*
---
## Configuration
### Claude Desktop Configuration
**Windows** (`%APPDATA%\Claude\claude_desktop_config.json`):
```json
{
"mcpServers": {
"global-education": {
"command": "uvx",
"args": ["global-education-mcp"]
}
}
}
```
**macOS** (`~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"global-education": {
"command": "uvx",
"args": ["global-education-mcp"]
}
}
}
```
A ready-to-use `claude_desktop_config.json` is included in the repository root.
### Cloud Deployment (Streamable HTTP for browser access)
For use via **claude.ai in the browser** (e.g. on managed workstations without local software).
> ⚠️ **Security note:** Since v0.3, `MCP_HOST` defaults to `127.0.0.1`. The
> HTTP transport must **always** run behind a reverse proxy that adds TLS,
> authentication, and rate-limiting. Never expose the raw port to the
> internet — `MCP_HOST=0.0.0.0` is only safe inside an isolated
> container network.
**Docker (recommended):**
The repository ships a hardened multi-stage `Dockerfile` and a
`docker-compose.yml` that applies `read_only: true`, `cap_drop: [ALL]`,
`security_opt: [no-new-privileges:true]`, and runs as non-root user
`uid 10001`. The compose file binds the port to `127.0.0.1` so a host-level
reverse proxy is required for any external access.
```bash
docker compose up --build
# then point nginx/caddy at 127.0.0.1:8000/mcp with TLS + auth
```
Plain `docker run` (without compose):
```bash
docker build -t global-education-mcp .
docker run --rm \
--read-only --cap-drop ALL --security-opt no-new-privileges \
--tmpfs /tmp:size=16M,mode=1777 \
-p 127.0.0.1:8000:8000 \
global-education-mcp
```
**Render.com:**
1. Push/fork the repository to GitHub
2. On [render.com](https://render.com): New Web Service → connect GitHub repo
3. Set environment variables in the Render dashboard:
```
MCP_TRANSPORT=streamable-http
MCP_HOST=0.0.0.0 # Render needs 0.0.0.0; their edge layer provides TLS + auth.
PORT=8000
```
4. In claude.ai under Settings → MCP Servers, add: `https://your-app.onrender.com/mcp`
**Migrating from SSE.** Up to v0.3.5 the container defaulted to `MCP_TRANSPORT=sse`
with the endpoint `/sse`. The default is now `streamable-http` at `/mcp` — the
transport through which `2026-07-28` clients send their single-POST requests;
SSE has been superseded since spec `2025-03-26` and never offered that path.
Existing deployments either switch the client URL to `/mcp` or set
`MCP_TRANSPORT=sse` explicitly; the server then logs a
`legacy_transport_warning` on start. An unknown `MCP_TRANSPORT` value now
aborts the start instead of silently falling back to stdio.
> 💡 *"stdio for the developer laptop, sandboxed Streamable HTTP container for the browser."*
---
## Available Tools
### UNESCO UIS Tools
| Tool | Description |
|---|---|
| `uis_list_indicators` | Search and list available indicators (4,000+) |
| `uis_list_countries` | List countries and regions with ISO codes |
| `uis_get_education_data` | Retrieve data for a specific indicator |
| `uis_compare_countries` | Multi-country comparison for one indicator |
| `uis_country_education_profile` | Full education profile (10 core indicators) |
| `uis_list_versions` | List available database versions |
### OECD Tools
| Tool | Description |
|---|---|
| `oecd_list_education_datasets` | List Education at a Glance datasets |
| `oecd_get_education_indicator` | Retrieve OECD education data via SDMX |
| `oecd_search_datasets` | Search OECD dataflows by keyword |
### Cross-Source Tools
| Tool | Description |
|---|---|
| `education_benchmark_countries` | Benchmark multiple countries across 5 focus themes (UNESCO UIS) |
### Resources & Prompts
**Resources:**
- `education://indicators/unesco` – Quick reference for core UNESCO indicators
- `education://datasets/oecd` – Quick reference for OECD Education at a Glance dataflows
**Prompts:**
- `bildungsvergleich_schweiz` – Switzerland vs. Finland, Singapore, Japan
- `sdg4_monitoring` – SDG-4 report for CH/DE/AT
### Country Codes
ISO 3166-1 Alpha-3 standard:
| Code | Country | Code | Country |
|---|---|---|---|
| `CHE` | Switzerland | `FIN` | Finland |
| `DEU` | Germany | `SGP` | Singapore |
| `AUT` | Austria | `KOR` | South Korea |
| `FRA` | France | `JPN` | Japan |
| `SWE` | Sweden | `USA` | United States |
### Example Use Cases
| Query | Tool |
|---|---|
| *"What is Switzerland's literacy rate vs. Finland and Singapore?"* | `uis_compare_countries` |
| *"Education expenditure as % of GDP for CHE, DEU, AUT over 10 years"* | `uis_get_education_data` |
| *"Create a full education profile for South Korea"* | `uis_country_education_profile` |
| *"Which OECD datasets cover teacher salaries?"* | `oecd_search_datasets` |
| *"Compare secondary graduation rates across 5 European countries"* | `education_benchmark_countries` |
| *"Create an SDG-4 monitoring report for Switzerland"* | `sdg4_monitoring` (prompt) |
→ [More use cases by audience](EXAMPLES.md) →
---
## Architecture
```
┌─────────────────┐ ┌──────────────────────────────┐ ┌────────────────────┐
│ Claude / AI │────▶│ Global Education MCP │────▶│ UNESCO UIS API │
│ (MCP Host) │◀────│ (MCP Server) │◀────│ uis.unesco.org │
└─────────────────┘ │ │ └────────────────────┘
│ 10 Tools · 2 Resources │
│ · 2 Prompts │ ┌────────────────────┐
│ stdio | Streamable HTTP │────▶│ OECD SDMX API │
│ │◀────│ sdmx.oecd.org │
│ server.py │ └────────────────────┘
│ + api_client.py │
└──────────────────────────────┘
```
### Infrastructure Components
| Component | Metaphor | Function |
|---|---|---|
| HTTPClient | Postal service | Handles all outbound HTTP requests, retries and timeouts |
| SimpleCache | Whiteboard | In-memory TTL cache for repeated queries |
| GracefulFallback | Safety net | Returns local reference data when APIs are unavailable |
| SDMXParser | Translator | Converts OECD SDMX/XML responses to clean JSON |
### Caching Strategy
| Data Source | Cache TTL | Rationale |
|---|---|---|
| UNESCO UIS indiWhat people ask about global-education-mcp
What is malkreide/global-education-mcp?
+
malkreide/global-education-mcp is mcp servers for the Claude AI ecosystem. MCP server for international education data – UNESCO UIS (4,000+ indicators) and OECD Education at a Glance via SDMX. No API keys required. It has 1 GitHub stars and its last recorded update is dated 2026-09-27.
How do I install global-education-mcp?
+
You can install global-education-mcp by cloning the repository (https://github.com/malkreide/global-education-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is malkreide/global-education-mcp safe to use?
+
Our security agent has analyzed malkreide/global-education-mcp and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains malkreide/global-education-mcp?
+
malkreide/global-education-mcp is maintained by malkreide. The last recorded GitHub activity is dated 2026-09-27, with 0 open issues.
Are there alternatives to global-education-mcp?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy global-education-mcp to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/malkreide-global-education-mcp)<a href="https://claudewave.com/repo/malkreide-global-education-mcp"><img src="https://claudewave.com/api/badge/malkreide-global-education-mcp" alt="Featured on ClaudeWave: malkreide/global-education-mcp" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
The fastest path to AI-powered full stack observability, even for lean teams.