io.github.cyanheads/worldbank-mcp-server
REMOTE · WORLDBANK.CASEYJHAND.COM · 2 COMPONENTS · SCANNED SEP 29
Query 29,500+ World Bank development indicators for 200+ countries across 60+ years.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security83
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability60
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 5410 tokens (~601/item across 9 items; 9 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 9 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 10 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the io.github.cyanheads/worldbank-mcp-server server?
io.github.cyanheads/worldbank-mcp-server is a hosted endpoint at https://worldbank.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · worldbank.caseyjhand.com
claude mcp add --transport http cyanheads-worldbank-mcp-server 'https://worldbank.caseyjhand.com/mcp'
{
"mcpServers": {
"cyanheads-worldbank-mcp-server": {
"url": "https://worldbank.caseyjhand.com/mcp"
}
}
} {
"servers": {
"cyanheads-worldbank-mcp-server": {
"type": "http",
"url": "https://worldbank.caseyjhand.com/mcp"
}
}
} [mcp_servers.cyanheads-worldbank-mcp-server] url = "https://worldbank.caseyjhand.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"cyanheads-worldbank-mcp-server": {
"type": "remote",
"url": "https://worldbank.caseyjhand.com/mcp",
"enabled": true
}
}
} openclaw mcp add cyanheads-worldbank-mcp-server --url 'https://worldbank.caseyjhand.com/mcp' --transport streamable-http
mcp_servers:
cyanheads-worldbank-mcp-server:
url: "https://worldbank.caseyjhand.com/mcp" {
"McpServers": {
"cyanheads-worldbank-mcp-server": {
"Transport": "http",
"Url": "https://worldbank.caseyjhand.com/mcp"
}
}
} assistant mcp add cyanheads-worldbank-mcp-server -t streamable-http -u 'https://worldbank.caseyjhand.com/mcp'
{
"mcpServers": {
"cyanheads-worldbank-mcp-server": {
"type": "http",
"url": "https://worldbank.caseyjhand.com/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 28 Sept 26 +7
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Sept 26 −1
- The server rewrote its instructions, which are the text every model session reads security
- Tool “worldbank_search_indicators” rewrote its description, which is the text the model reads security
- Tool “worldbank_get_data” rewrote its description, which is the text the model reads security
- Tool “worldbank_search_projects” rewrote its description, which is the text the model reads security
- Tool “worldbank_list_countries” rewrote its description, which is the text the model reads security
- Tool “worldbank_get_poverty” rewrote its description, which is the text the model reads security
- Schema quality: 414 → 601 ▼ functional
- Schema quality: 414 → 539 ▼ functional
- Schema quality: 414 → 502 ▼ functional
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- Server version: 0.5.0 → 0.5.2 functional
- Server version: 0.4.1 → 0.5.0 functional
- Server version: 0.4.0 → 0.4.1 functional
- Server version: 0.3.8 → 0.4.0 functional
- “worldbank_get_data” added an optional parameter “frequency” cosmetic
- “worldbank_get_data” added an optional parameter “mrnev” cosmetic
- “worldbank_list_countries” added an optional parameter “lending_type” cosmetic
- “worldbank_search_projects” added an optional parameter “financial_type” cosmetic
- “worldbank_get_data” reworded the description of “mrv” cosmetic
- “worldbank_get_data” reworded the description of “date_range” cosmetic
- “worldbank_get_data” reworded the description of “countries” cosmetic
- “worldbank_get_poverty” reworded the description of “per_page” cosmetic
- “worldbank_list_countries” reworded the description of “per_page” cosmetic
- “worldbank_search_projects” reworded the description of “include_abstract” cosmetic
- “worldbank_search_projects” reworded the description of “per_page” cosmetic
- “worldbank_get_data” reworded the description of “per_page” cosmetic
- “worldbank_search_projects” reworded the description of “countries” cosmetic
- “worldbank_list_countries” reworded the description of “include_aggregates” cosmetic
- “worldbank_list_countries” reworded the description of “region” cosmetic
- “worldbank_search_projects” reworded the description of “query” cosmetic
- “worldbank_get_poverty” reworded the description of “countries” cosmetic
- “worldbank_get_poverty” reworded the description of “fill_gaps” cosmetic
- “worldbank_get_poverty” reworded the description of “year” cosmetic
- 22 Sept 26 0
- Server version: 0.3.7 → 0.3.8 functional
- 16 Sept 26 0
- Server version: 0.3.6 → 0.3.7 functional
- 13 Sept 26 0
- Tool “worldbank_get_data” rewrote its description, which is the text the model reads security
- Tool “worldbank_get_indicator” rewrote its description, which is the text the model reads security
- Tool “worldbank_search_projects” rewrote its description, which is the text the model reads security
- Tool “worldbank_search_indicators” rewrote its description, which is the text the model reads security
- Tool “worldbank_list_topics” rewrote its description, which is the text the model reads security
- Tool “worldbank_list_sources” rewrote its description, which is the text the model reads security
- Tool “worldbank_list_countries” rewrote its description, which is the text the model reads security
- Tool “worldbank_get_poverty” rewrote its description, which is the text the model reads security
- Tool “worldbank_get_country” rewrote its description, which is the text the model reads security
- Schema quality: 338 → 414 ▼ functional
- Server version: 0.3.3 → 0.3.6 functional
- “worldbank_get_data” added an optional parameter “dimension_value” cosmetic
- “worldbank_get_poverty” added an optional parameter “ppp_version” cosmetic
- “worldbank_get_data” reworded the description of “indicator_id” cosmetic
- “worldbank_get_data” reworded the description of “mrv” cosmetic
- “worldbank_search_projects” reworded the description of “per_page” cosmetic
- “worldbank_search_projects” reworded the description of “include_abstract” cosmetic
- “worldbank_search_projects” reworded the description of “approved_to” cosmetic
- “worldbank_search_projects” reworded the description of “approved_from” cosmetic
- “worldbank_search_indicators” reworded the description of “query” cosmetic
- “worldbank_get_poverty” reworded the description of “poverty_line” cosmetic
- “worldbank_get_poverty” reworded the description of “per_page” cosmetic
- “worldbank_get_indicator” reworded the description of “indicator_id” cosmetic
- “worldbank_get_country” reworded the description of “country_code” cosmetic
- “worldbank_get_data” reworded the description of “date_range” cosmetic
- 12 Sept 26 0
- Server version: 0.3.2 → 0.3.3 functional
- “worldbank_get_data” reworded the description of “countries” cosmetic
- 9 Sept 26 0
- Stability: 0.97 → pass security
- 8 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 29 Sept 2026 · Probed https://worldbank.caseyjhand.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=caseyjhand.com | CN=WE1,O=Google Trust Services,C=US | 4 Sept 2026 | 3 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | a6985204ed51ae050e7738aa6be668e9 |
| SANs: caseyjhand.com, *.caseyjhand.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of worldbank.caseyjhand.com. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| caseyjhand.com. | present | 2371 | 13 | Verified |
| worldbank.caseyjhand.com. | Verified address RRset verified with the apex keys |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| x-content-type-options | nosniff |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://worldbank.caseyjhand.com/mcp | Verified | 200 | |
| http (plaintext) | http://worldbank.caseyjhand.com/mcp | HTTPS enforced | 301 | https://worldbank.caseyjhand.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
worldbank_get_country Get World Bank Country ~151
Fetch metadata for one country or aggregate entity: ISO codes, region, income level, lending type, capital, and coordinates. Accepts an ISO2 code (US, DE), an ISO3 code (USA, DEU), or a World Bank aggregate code (EAS, HIC, WLD); "all" and lists of codes are rejected. Use worldbank_list_countries to browse valid codes.
| Name | Type | Req | Description |
|---|---|---|---|
| country_code | string | yes | One country code. Accepts ISO2 (US), ISO3 (USA), or aggregate code (EAS, HIC, WLD) — not "all" or a list of codes. Use worldbank_list_countries to browse valid codes. |
| Name | Type | Req | Description |
|---|---|---|---|
| capitalCity | string | – | Capital city name (empty for aggregates). |
| error | object | – | Present when the call failed. Absent on success. |
| id | string | – | Country or aggregate ID. |
| incomeLevel | object | – | World Bank income classification. |
| isAggregate | boolean | – | True when this entry is a regional or income-group aggregate. |
| iso2 | string | – | ISO2 country code. |
| latitude | string | – | Capital latitude (empty for aggregates). |
| lendingType | string | – | World Bank lending type classification. |
| longitude | string | – | Capital longitude (empty for aggregates). |
| name | string | – | Country or aggregate name. |
| region | object | – | World Bank region this country belongs to. |
No examples provided.
worldbank_get_data Get World Bank Indicator Data ~1,399
Query World Bank indicator values for one or more countries across a time range — the primary data-access tool; find indicator_id values with worldbank_search_indicators. Observations carry a null value where data is not available for a country×year cell, which is common for sparse series. Set at most one of date_range (a time window), mrv (the latest N periods across the requested countries), or mrnev (each country's own latest N values). Some series, such as Global Economic Monitor's, publish quarterly or monthly values beside annual ones: frequency picks the form mrv and mrnev select from (annual by default), and a date_range's own form (2024, 2024Q1, 2024M01) picks it for a window. lastUpdated gives the serving source's last update date, the data vintage to cite. For "all" countries, page through the results at up to 200 per page, since the API returns several hundred entries per indicator. Indicators the standard data endpoint does not serve — WDI Database Archives, PEFA, ICP, GDLD, International Debt Statistics: DSSI, Food Prices for Nutrition — are answered from their own dataset instead; the response then carries sourceScoped, naming that dataset and the release, classification, sector, or counterpart area applied (see dimension_value), because those values can be archived or superseded figures rather than current ones.
| Name | Type | Req | Description |
|---|---|---|---|
| countries | – | yes | Country codes. Accepts: ISO2 (US, CN), ISO3 (USA, CHN), regional aggregate codes (EAS, LCN, MEA, SAS, SSF, ECS, NAC), income group codes (HIC, UMC, LMC, LIC), world code (WLD), or "all" on its own fo… |
| date_range | string | – | Time window to filter observations to. Accepts a whole year (`2020`), a quarter (`2020Q1`), or a month (`2020M03`), or a range of two periods of the same type separated by a colon, earliest first (`2… |
| dimension_value | string | – | For indicators answered from their own dataset (the response carries sourceScoped), the id of the value of that dataset's extra dimension to query, matched case-insensitively: a WDI Database Archives… |
| frequency | – | – | The period form to return, for series such as Global Economic Monitor's that publish quarterly or monthly values beside annual ones: annual (the default), quarterly, or monthly. With mrv or mrnev it… |
| indicator_id | string | yes | One indicator code to query (e.g. NY.GDP.PCAP.CD, SP.POP.TOTL) — not "all" or a list of codes. Use worldbank_search_indicators to find valid IDs. |
| mrnev | integer | – | Return each requested country's own N most recent periods (1–100) holding a value — its latest non-null observations, however far back they sit. A country with fewer values in the series returns the… |
| mrv | integer | – | Return the N most recent periods (1–100) holding a value for any requested country, clamped to the length of the series. Every requested country comes back at those periods, null where it has no valu… |
| page | integer | – | Pagination page number (1-based). |
| per_page | integer | – | Results per page (default: server default, max: 1000). One page holds at most 200 observations, which keeps a response within about 50 KB; a larger value is reduced to that cap and echoed as appliedF… |
| Name | Type | Req | Description |
|---|---|---|---|
| appliedFilters | object | – | The effective parameters sent to the World Bank API — confirms country code normalization and which filters were in force for these observations. |
| currentPage | number | – | Page number requested — past totalPages when the request ran off the end. |
| data | array | – | Indicator observations for this page. Null values are common for sparse series. |
| error | object | – | Present when the call failed. Absent on success. |
| indicator | object | – | Indicator metadata echoed from the response. |
| lastUpdated | string | – | Last update date of the World Bank source that served these values (YYYY-MM-DD) — the data vintage to cite with them. Omitted when upstream reports none, as for an empty result. |
| notice | string | – | Recovery hint for an empty result set — how to broaden the query when nothing matched, whether the series publishes the requested frequency, or the page range that exists when the requested page is p… |
| nullCount | number | – | Count of null values on this page — indicates data sparsity for the requested filter. |
| sourceScoped | object | – | Present only when the standard data endpoint does not serve the indicator and its catalog source served the values instead. Absent for indicators the standard endpoint serves. |
| totalCount | number | – | Total observations before pagination. |
| totalPages | number | – | Total number of pages. |
No examples provided.
worldbank_get_indicator Get World Bank Indicator ~114
Fetch metadata for one World Bank indicator by ID: name, description, unit, source dataset, source organization, and thematic topics. Use worldbank_search_indicators to find the ID when only the concept is known; "all" and lists of IDs are rejected.
| Name | Type | Req | Description |
|---|---|---|---|
| indicator_id | string | yes | One indicator code (e.g. NY.GDP.PCAP.CD, SP.POP.TOTL) — not "all" or a list of codes. Use worldbank_search_indicators to find valid IDs. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | object | – | Present when the call failed. Absent on success. |
| id | string | – | Indicator ID. |
| name | string | – | Indicator name. |
| sourceId | string | – | Source dataset ID. |
| sourceName | string | – | Source dataset name. |
| sourceNote | string | – | Detailed indicator description from the source. |
| sourceOrganization | string | – | Organization that collects or publishes this data. |
| topics | array | – | Thematic topics this indicator belongs to. |
| unit | string | – | Unit of measurement (empty when not specified). |
No examples provided.
worldbank_get_poverty Get World Bank Poverty and Inequality Estimates ~1,216
Query poverty and inequality estimates from the World Bank Poverty and Inequality Platform (PIP) for economies and for PIP's own aggregates — World, World Bank regions, income groups, and lending groups. Returns the poverty headcount ratio, poverty gap, and poverty severity at any poverty line, plus mean and median welfare and population. Use it for inequality and distribution questions too — survey-based economy rows carry the Gini coefficient, mean log deviation, polarization, and the ten decile income/consumption shares, because PIP returns poverty and inequality in the same row. PIP is a separate dataset from the WDI series worldbank_get_data reads: it measures welfare in PPP dollars per person per day, at a PPP vintage ppp_version selects, and computes its aggregates at any poverty line, where worldbank_get_data carries only the published lines. Every row reports how it was produced. On an economy, estimationType "survey" rows carry the full inequality block; "interpolation", "extrapolation", and "CMD estimation" rows are gap-filled estimates for years no survey covers, and their gini, mld, polarization, and decileShares are null — a documented gap in the source data, not an error. Aggregate rows (isAggregate true) are "actual", "nowcast", or "projection", add popInPoverty, and carry no distributional block.
| Name | Type | Req | Description |
|---|---|---|---|
| countries | – | yes | Country codes: a single code, an array, or one string separated by commas, semicolons, or pipes. Economies go by ISO3 (IND, USA) or ISO2 (IN, US) code, including those PIP publishes only as model est… |
| fill_gaps | boolean | – | When true (the default), any year the surveys do not cover falls back to PIP's own estimate for it instead of being left out — so a single-year query still answers, and a full-history query returns a… |
| page | integer | – | Pagination page number (1-based). |
| per_page | integer | – | Results per page (default: server default, max: 1000). "all" countries across "all" years runs to several thousand rows. One page holds at most 70 estimates, which keeps a response within about 50 KB… |
| poverty_line | number | – | Poverty line in PPP dollars per person per day, at the applied PPP vintage — any threshold, not only the published ones. Omitted uses the international poverty line for that vintage, so the applied v… |
| ppp_version | – | – | PPP vintage to express every dollar figure in — the poverty line, mean, and median — as a four-digit year ("2021", "2017"). It must be one of the vintages PIP's current data release is published at;… |
| reporting_level | – | – | Restrict results to one reporting level. Most economies publish a national figure only; ten publish a split and return an extra row per year for it, China with all three levels and the rest pairing n… |
| welfare_type | – | – | Restrict results to one welfare measure. Surveys measure either income or consumption and the two are not directly comparable, so a cross-country comparison is safer pinned to one. Omitted returns wh… |
| year | string | – | Reporting year to return. A four-digit year (2022), "all" for the full history, or "MRV" for the most recent year. Omitted behaves as "all". MRV follows fill_gaps: with fill_gaps true each economy re… |
| Name | Type | Req | Description |
|---|---|---|---|
| appliedFilters | object | – | The effective parameters sent to PIP — confirms country code normalization and which filters were in force for these estimates. |
| currentPage | number | – | Page number requested — past totalPages when the request ran off the end. |
| error | object | – | Present when the call failed. Absent on success. |
| estimates | array | – | Poverty and inequality estimates for this page — economies and aggregates in one list, ordered by code, year, reporting level, then welfare type. |
| notice | string | – | Context for an empty result set, for a page past the end of the results, for a page size reduced to the page cap, for a result carrying gap-filled or aggregate rows with no inequality data, and for e… |
| totalCount | number | – | Total estimates before pagination. |
| totalPages | number | – | Total number of pages. |
No examples provided.
worldbank_list_countries List World Bank Countries ~540
List countries and regional aggregates with metadata: ISO codes, region, income level, lending type, capital, and coordinates. Filter by region code (e.g. EAS, SSF, NAC), income level (LIC, LMC, UMC, HIC), and lending type (IDX for IDA, IBD for IBRD, IDB for Blend); filters combine by AND. Aggregate entries are excluded by default, leaving individual countries only; set include_aggregates=true to also return region, income group, and world aggregate entities.
| Name | Type | Req | Description |
|---|---|---|---|
| include_aggregates | boolean | – | When true, includes regional, income-group, and world aggregate entries alongside individual countries. Default false (individual countries only). No aggregate is returned under region or lending_typ… |
| income_level | string | – | Filter by income group code: LIC (Low income), LMC (Lower middle income), UMC (Upper middle income), HIC (High income). |
| lending_type | – | – | Filter by World Bank lending type code: IDX (IDA), IBD (IBRD), IDB (Blend — eligible for both), or LNX (Not classified). IDX, IBD, and IDB are also the codes worldbank_get_poverty takes for its lendi… |
| page | integer | – | Pagination page number (1-based). |
| per_page | integer | – | Results per page (default: server default, max: 300). One page holds at most 150 entries, which keeps a response within about 50 KB; a larger value is reduced to that cap and echoed as appliedFilters… |
| region | string | – | Filter by World Bank region code. A country's region.id is one of EAS (East Asia & Pacific), ECS (Europe & Central Asia), LCN (Latin America & Caribbean), MEA (Middle East, North Africa, Afghanistan… |
| Name | Type | Req | Description |
|---|---|---|---|
| appliedFilters | object | – | The effective listing parameters — which filters were in force and the page size served. |
| countries | array | – | Countries (and optionally aggregates) matching the filters. |
| currentPage | number | – | Page number requested — past totalPages when the request ran off the end. |
| error | object | – | Present when the call failed. Absent on success. |
| notice | string | – | Context for an empty page — which filters matched nothing, or the page range that exists when the requested page is past the end — or for a page size reduced to the page cap. |
| totalCount | number | – | Total matching entries before pagination (includes aggregates if include_aggregates=true). |
| totalPages | number | – | Total number of pages. |
No examples provided.
worldbank_list_sources List World Bank Data Sources ~93
List the 70+ World Bank data sources (datasets), such as World Development Indicators, International Debt Statistics, and Doing Business. Returns source IDs and names for use as source_id in worldbank_search_indicators, one page at a time.
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | – | Pagination page number (1-based). |
| per_page | integer | – | Results per page (default: server default, max: 100). |
| Name | Type | Req | Description |
|---|---|---|---|
| currentPage | number | – | Page number requested — past totalPages when the request ran off the end. |
| error | object | – | Present when the call failed. Absent on success. |
| notice | string | – | Context for an empty page: the page range that exists when the requested page is past the end. |
| sources | array | – | World Bank data sources for this page. |
| totalCount | number | – | Total number of sources. |
| totalPages | number | – | Total number of pages. |
No examples provided.
worldbank_list_topics List World Bank Topics ~56
List all 21 World Bank thematic topics (Economy & Growth, Health, Education, and others) with descriptions. Use it to browse the indicator space by theme or to find a topic_id for worldbank_search_indicators.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| error | object | – | Present when the call failed. Absent on success. |
| topics | array | – | All 21 World Bank thematic topics. |
No examples provided.
worldbank_search_indicators Search World Bank Indicators ~446
Search the 29,500+ World Bank indicator catalog by keyword, topic, or source, returning indicator IDs and metadata for worldbank_get_data. Provide at least one of query, topic_id, or source_id; a topic and a source together narrow to indicators in both. A keyword query matches every term against indicator ID, name, and full description, in any word order, across the whole catalog or the whole selected topic or source; punctuation is ignored, so the query needs at least one letter or digit. Exact ID or name matches rank first, then names starting with the phrase as whole words, then whole-phrase matches, then matches where every term is a whole word of the ID or name, then other ID/name matches, then description-only matches; within each of those, World Development Indicators series come first, then other live sources, then archives, and a series comes ahead of its own breakdowns by sex, area, or age. Each indicator ID appears once, even where the catalog publishes it under two sources. Each result carries the first 150 characters of its description; worldbank_get_indicator returns the whole of it. Find topic IDs with worldbank_list_topics and source IDs with worldbank_list_sources.
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | – | Pagination page number (1-based). |
| per_page | integer | – | Results per page (default: server default, max: 100). |
| query | string | – | Keyword search terms — an indicator name, ID, or any words from either (e.g. "GDP per capita", "NY.GDP.MKTP.CD", "CO2 emissions"). Every term must match; punctuation is ignored, so the query needs at… |
| source_id | string | – | Filter by data source ID (e.g. "2" for World Development Indicators). Use worldbank_list_sources to browse valid IDs. |
| topic_id | string | – | Filter by topic ID (e.g. "1" for Agriculture, "3" for Economy & Growth). Use worldbank_list_topics to browse valid IDs. |
| Name | Type | Req | Description |
|---|---|---|---|
| appliedFilters | object | – | The effective search parameters, field by field — confirms which filter combination produced these results without parsing the effectiveQuery string. |
| currentPage | number | – | Current page number. |
| effectiveQuery | string | – | Active filters echoed: keyword, topic ID, and/or source ID that were applied. |
| error | object | – | Present when the call failed. Absent on success. |
| indicators | array | – | Matching indicators for this page. |
| notice | string | – | Recovery hint for an empty page — how to broaden the search when no indicators matched, or the page range that exists when the requested page is past the end. |
| totalCount | number | – | Total matching indicators before pagination. |
| totalPages | number | – | Total number of pages. |
No examples provided.
worldbank_search_projects Search World Bank Projects ~1,080
Search the World Bank lending portfolio — the individual loans, credits, and grants the Bank finances — by free text, country, region, status, financing window (IBRD, IDA, Grants, Other), and board approval date. Returns the project ID, name, borrowing country, region, status, board approval and closing dates, the commitment amount in USD with its IBRD, IDA, and grant parts, financing windows, major sectors, and a link to the project page. This is the operations catalogue, not the statistics catalogue: use it for "what is the World Bank funding in Kenya", "which climate adaptation projects are active", or "how much was committed to education in South Asia since 2020". For development statistics and time series, use worldbank_search_indicators and worldbank_get_data instead. Countries take the ISO3 or ISO2 codes the other tools take (BRA or BR), and multi-country operations carry a World Bank regional code such as 3A; WDI aggregates such as SSF or WLD are rejected, since the portfolio lists operations by economy — use region for those. Every filter is an exact match upstream and combines with the others by AND, so a narrow search can legitimately return nothing; when it does, the response says whether the country codes matched anything on their own.
| Name | Type | Req | Description |
|---|---|---|---|
| approved_from | – | – | Earliest board approval date, as YYYY-MM-DD and inclusive. It must be a real calendar day (2024-02-29, not 2023-02-29) and, when approved_to is also set, on or before it. Board approval is the date t… |
| approved_to | – | – | Latest board approval date, as YYYY-MM-DD and inclusive. It must be a real calendar day. |
| countries | – | – | Borrowing countries: an economy by ISO3 or ISO2 code (BRA or BR), or a World Bank regional code for a multi-country operation (3A for Africa, 4E for East Asia and Pacific). Several codes — an array,… |
| financial_type | array | – | Financing windows to include, combined as OR: a project matches when its financialTypes holds any of them. IBRD, IDA, Grants, Other are the complete set, case-sensitive. A project that publishes no f… |
| include_abstract | boolean | – | Include each project's abstract. Abstracts run long — a median of roughly 1,200 characters, up to 8,000 — so a page carrying them holds at most 8 projects rather than 80, and an abstract longer than… |
| page | integer | – | Pagination page number (1-based). |
| per_page | integer | – | Results per page (default: server default, max: 1000). One page holds at most 80 projects, or 8 with include_abstract, which keeps a response within about 50 KB; a larger value, the server default in… |
| query | string | – | Free-text search across project names, abstracts, and objectives. Every word must appear, so extra words narrow the result. A balanced quoted phrase and AND or OR between words parse; brackets, brace… |
| region | array | – | World Bank operational regions to include, combined as OR. These are the lending regions the portfolio is organized by, not the WDI aggregate codes worldbank_get_data accepts. |
| status | array | – | Lifecycle stages to include, combined as OR. "Active" is under implementation, "Pipeline" is approved but not yet effective, "Closed" has finished disbursing, and "Dropped" was abandoned before appro… |
| Name | Type | Req | Description |
|---|---|---|---|
| appliedFilters | object | – | The effective search sent upstream — confirms country-code normalization and which filters were in force for these results. |
| currentPage | number | – | Page number requested — past totalPages when the request ran off the end. |
| error | object | – | Present when the call failed. Absent on success. |
| notice | string | – | Context for an empty result set — including whether the country filter matched anything on its own — for a page past the end of the results, for a page size reduced to the page cap, or naming the pro… |
| projects | array | – | Projects on this page, newest board approval date first with or without query, and projects with no board date last. Pagination walks the same order. |
| totalCount | number | – | Total projects matching the search, before pagination. |
| totalPages | number | – | Total number of pages. |
No examples provided.
What is the io.github.cyanheads/worldbank-mcp-server server?
io.github.cyanheads/worldbank-mcp-server is listed in the public MCP registry as io.github.cyanheads/worldbank-mcp-server. Query 29,500+ World Bank development indicators for 200+ countries across 60+ years. This page covers its hosted endpoint (https://worldbank.caseyjhand.com/mcp).
Is the io.github.cyanheads/worldbank-mcp-server server safe to use?
io.github.cyanheads/worldbank-mcp-server scores 86 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.cyanheads/worldbank-mcp-server server expose?
io.github.cyanheads/worldbank-mcp-server exposes 9 tools: worldbank_list_topics, worldbank_list_sources, worldbank_list_countries, worldbank_get_country, worldbank_search_indicators, and 4 more. Their descriptions and schemas cost roughly 5,095 tokens of context every time the server is loaded.
Does the io.github.cyanheads/worldbank-mcp-server server require authentication?
No. We connected to io.github.cyanheads/worldbank-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the io.github.cyanheads/worldbank-mcp-server server still maintained?
io.github.cyanheads/worldbank-mcp-server is still listed as active in the MCP registry. We last reached this channel on 29 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.