worldbank-mcp-server
Click on "Install 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., "@worldbank-mcp-serverWhat was the GDP growth of India in 2022?"
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.
Public Hosted Server: https://worldbank.caseyjhand.com/mcp
Tools
7 tools for browsing and querying the World Bank Open Data API:
Tool | Description |
| List all 21 World Bank thematic topics with descriptions |
| List 70+ World Bank data sources (datasets) with pagination |
| List countries and regional aggregates with ISO codes, region, income level, and coordinates |
| Fetch full metadata for a specific country or aggregate by ISO2, ISO3, or aggregate code |
| Search the 29,500+ indicator catalog by keyword, topic, or source |
| Fetch complete metadata for a single indicator: name, description, source, unit, and topics |
| Query indicator values for one or more countries across a time range or most-recent N values |
worldbank_list_topics
List all 21 World Bank thematic topic categories.
No input required — returns the complete fixed taxonomy
Topics include Agriculture, Economy & Growth, Education, Energy & Mining, Environment, Financial Sector, Health, Infrastructure, Poverty, Private Sector, Public Sector, Science & Technology, Social Development, Social Protection & Labor, Trade, Urban Development, and more
Returns topic IDs used to filter
worldbank_search_indicators
worldbank_list_sources
List the 70+ World Bank data sources (datasets).
Paginated with configurable page size (up to 100 per page)
Each source includes ID, name, short code, last-updated date, and data/metadata availability status
Source IDs used to filter
worldbank_search_indicatorsby dataset origin (e.g. "2" for World Development Indicators, "6" for IDS)
worldbank_list_countries
List countries and regional aggregates with metadata.
Returns ISO codes, World Bank region, income level, capital city, and coordinates
Filterable by region code (EAS, ECS, LCN, MEA, NAC, SAS, SSF) and income level (LIC, LMC, UMC, HIC)
By default returns individual countries only; set
include_aggregates=trueto include regional, income-group, and world aggregate entitiesPaginated with up to 300 entries per page
worldbank_get_country
Fetch full metadata for a single country or aggregate entity.
Accepts ISO2 (US), ISO3 (USA), or World Bank aggregate codes (EAS, HIC, WLD)
Returns region, income level, lending type, capital city, and coordinates
Structured error with recovery hint when code is not found
worldbank_search_indicators
Search the 29,500+ World Bank indicator catalog.
Keyword search, topic filter, source filter — at least one required
When
topic_idorsource_idis combined with a keyword query, client-side filtering is applied (the upstream API ignoressearchtermwhen a topic/source filter is active)Returns indicator IDs, names, source dataset, and thematic topics
Indicator IDs (e.g.
NY.GDP.PCAP.CD,SP.POP.TOTL) feed directly intoworldbank_get_dataPaginated with up to 100 results per page
worldbank_get_indicator
Fetch complete metadata for a known indicator ID.
Returns full description, unit of measurement, source dataset, source organization, and thematic topics
Structured error with recovery hint when ID is not found
worldbank_get_data
Query indicator values for countries across time. The primary data-access tool.
Single country, array of countries, regional codes (EAS, LCN, …), income codes (HIC, LMC, …), world code (WLD), or
"all"for all ~266 entriesTime filtering:
date_rangefor historical analysis (YYYY or YYYY:YYYY format), ormrvfor the N most recent available values (1–10). Mutually exclusive.Returns observations with
nullvalues when data is not available for a country×year cell — common for sparse seriesIncludes
nullCountper page to surface data sparsityOutput grouped by country for readability;
isAggregateflag distinguishes regional aggregates from individual countriesPaginated with up to 1000 entries per page
Related MCP server: World Bank Data360 MCP Server
Resources
Type | Name | Description |
Resource |
| Indicator metadata by ID — name, description, source, unit, and topics |
Resource |
| Country metadata by ISO2, ISO3, or aggregate code — region, income level, capital, coordinates |
Features
Built on @cyanheads/mcp-ts-core:
Declarative tool definitions — single file per tool, framework handles registration and validation
Unified error handling across all tools
Pluggable auth (
none,jwt,oauth)Swappable storage backends:
in-memory,filesystem,Supabase,Cloudflare KV/R2/D1Structured logging with optional OpenTelemetry tracing
Runs locally (stdio/HTTP) or on Cloudflare Workers from the same codebase
World Bank-specific:
Full World Bank Open Data API v2 coverage — topics, sources, countries, indicators, and observations
60+ years of development data across 29,500+ indicators for 200+ countries and regional aggregates
Client-side topic/source + keyword compound filtering (works around upstream API limitation)
Null-value transparency —
nullobservations andnullCountsurfaced rather than silently droppedisAggregateflag on every country/data row to distinguish individual countries from aggregate entities
Agent-friendly output:
Tool cross-references woven into descriptions — e.g.
worldbank_search_indicatorsnamesworldbank_list_topicsfor topic IDs,worldbank_get_datanamesworldbank_search_indicatorsfor indicator discoveryStructured error contracts with typed
reasoncodes and actionablerecoveryhints on every toolConsistent pagination metadata (
page,pages,total) across all list/search/data tools
Getting started
Self-Hosted / Local
Add the following to your MCP client configuration file.
{
"mcpServers": {
"worldbank-mcp-server": {
"type": "stdio",
"command": "bunx",
"args": ["@cyanheads/worldbank-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}Or with npx (no Bun required):
{
"mcpServers": {
"worldbank-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@cyanheads/worldbank-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}For Streamable HTTP, set the transport and start the server:
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcpPrerequisites
Bun v1.3.0 or higher (or Node.js ≥24.0.0).
No API key required — the World Bank Open Data API is public and unauthenticated.
Installation
Clone the repository:
git clone https://github.com/cyanheads/worldbank-mcp-server.gitNavigate into the directory:
cd worldbank-mcp-serverInstall dependencies:
bun installConfiguration
All configuration is validated at startup via Zod schemas in src/config/server-config.ts. Environment variables:
Variable | Description | Default |
| Transport: |
|
| HTTP server port |
|
| HTTP server hostname |
|
| HTTP endpoint path where the MCP server is mounted |
|
| Public origin override for TLS-terminating reverse-proxy deployments | none |
| Authentication: |
|
| Log level ( |
|
| Storage backend: |
|
| Enable OpenTelemetry |
|
| OTLP exporter endpoint | none |
| World Bank API base URL override |
|
| Default page size for list/search/data operations |
|
Running the server
Local development
Build and run the production version:
# One-time build bun run rebuild # Run the built server bun run start:http # or bun run start:stdioRun checks and tests:
bun run devcheck # Lints, formats, type-checks, and more bun run test # Runs the test suite
Project structure
Directory | Purpose |
| Tool definitions ( |
| Resource definitions. Indicator and country metadata resources. |
| World Bank API service layer — API client and domain types. |
| Server-specific environment variable parsing and validation with Zod. |
| Unit and integration tests, mirroring the |
Development guide
See CLAUDE.md for development guidelines and architectural rules. The short version:
Handlers throw, framework catches — no
try/catchin tool logicUse
ctx.logfor logging,ctx.statefor storageRegister new tools and resources in the
createApp()arrays
Contributing
Issues and pull requests are welcome. Run checks and tests before submitting:
bun run devcheck
bun run testLicense
This project is licensed under the Apache 2.0 License. See the LICENSE file for details.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/cyanheads/worldbank-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server