Skip to main content
Glama
llnOrmll

World Bank Data360 MCP Server

by llnOrmll

World Bank Data360 MCP Server

MCP server that exposes World Bank Data360 OPEN API to Claude Desktop.

Features

  • šŸ” Search 1000+ economic and social indicators

  • šŸ“Š Access data for 200+ countries

  • šŸ“… Historical data spanning 60+ years

  • šŸŒ Filter by country, year, demographics

Related MCP server: worldbank-mcp

Installation

cd /Users/llnormll/WorkSpace/world-bank-mcp

# Install dependencies
uv sync

Test

uv run world_bank_mcp/server.py

Claude Desktop Configuration

Edit ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "world-bank-data": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/world-bank-mcp",
        "run",
        "src/world_bank_mcp/server.py"
      ]
    }
  }
}

Restart Claude Desktop.

Usage

Ask Claude:

  • "Get world poverty data for 2024"

  • "Show me GDP per capita for Japan in 2020"

  • "Compare CO2 emissions for USA, China, and India"

Claude will automatically:

  1. Search for the right dataset

  2. Check available years

  3. Retrieve the data with proper filters

  4. Format and present results

Available Tools

1. search_datasets

Search for datasets by keywords.

Tip: Use optimized queries like "gross domestic product total" instead of "GDP data"

2. get_temporal_coverage

Get available years for a specific dataset.

3. retrieve_data

Retrieve actual data with filters (year, countries, demographics).

Data Sources

  • WB_WDI: World Development Indicators

  • WB_HNP: Health, Nutrition & Population Statistics

  • WB_GDF: Global Development Finance

  • WB_IDS: International Debt Statistics

Common Country Codes

USA, CHN, JPN, DEU, GBR, FRA, IND, BRA, RUS, CAN, KOR, AUS, MEX, IDN, TUR, SAU, ARG, ZAF, ITA, ESP

License

MIT

Available Tools

5 tools
get_temporal_coverage_toolA

[STEP 2/3] Get available years for a specific dataset.

    CRITICAL: Always call this BEFORE retrieve_data to avoid errors.
    
    Workflow:
    1. search_datasets - Done āœ“
    2. get_temporal_coverage (this tool) - Check what years are available
    3. retrieve_data - Use latest_year from this response
    
    Returns: start_year, end_year, latest_year, and full list of available years.
    Next step: Call retrieve_data with year=latest_year.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
indicatorYes
databaseYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's role in a workflow, its prerequisite nature, and what it returns (start_year, end_year, latest_year, full list). However, it doesn't mention potential errors, rate limits, or authentication needs, leaving some behavioral aspects uncovered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, critical note, workflow, returns, next step) and uses bullet points for readability. It's appropriately sized for its complexity, though the workflow repetition and imperative tone ('Done āœ“', 'Check') could be slightly streamlined without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, no annotations, and the presence of an output schema, the description is complete enough. It covers purpose, usage context, workflow integration, return values, and next steps. The output schema will handle detailed return structure, so the description appropriately focuses on higher-level guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must compensate. While it doesn't explicitly explain the 'indicator' and 'database' parameters, it contextualizes them by stating this tool is for 'a specific dataset' after search_datasets, implying these parameters identify that dataset. This adds meaningful semantics beyond the bare schema, though not exhaustive parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Get available years') and resources ('for a specific dataset'), distinguishing it from siblings like retrieve_data_tool (which fetches actual data) and search_datasets_tool (which finds datasets). It explicitly mentions what it returns, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool, stating it should 'Always call this BEFORE retrieve_data to avoid errors' and outlining a workflow with steps 1-3. It differentiates from alternatives by positioning this as a prerequisite to retrieve_data_tool, with clear sequencing instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

retrieve_data_toolA

[STEP 3/3] Retrieve actual data from World Bank Data360.

āš ļø PREREQUISITE: Call get_temporal_coverage first to get latest_year.

🚨 CRITICAL TYPE REQUIREMENTS 🚨

When calling this tool, you MUST pass parameters with the EXACT types shown below. Common mistakes that cause validation errors:

āŒ INCORRECT: {"limit": "10"} ← limit as STRING (causes error!) āœ… CORRECT: {"limit": 10} ← limit as INTEGER

āŒ INCORRECT: {"exclude_aggregates": "true"} ← boolean as STRING āœ… CORRECT: {"exclude_aggregates": true} ← boolean as BOOLEAN

āŒ INCORRECT: {"year": 2023} ← year as NUMBER āœ… CORRECT: {"year": "2023"} ← year as STRING

šŸ“‹ PARAMETER TYPES - MUST MATCH EXACTLY:

STRING parameters (use quotes in JSON): indicator: "WB_WDI_SP_POP_TOTL" database: "WB_WDI" year: "2023" countries: "USA,CHN,JPN" sex: "M" or "F" or "_T" age: "0-14" sort_order: "desc" or "asc"

INTEGER parameters (no quotes in JSON): limit: 10 (default: 20)

BOOLEAN parameters (no quotes in JSON): exclude_aggregates: true or false (default: true) compact_response: true or false (default: true)

šŸŽÆ CORRECT JSON EXAMPLES:

Example 1 - Top 10 countries by population: { "indicator": "WB_WDI_SP_POP_TOTL", "database": "WB_WDI", "year": "2023", "limit": 10, "sort_order": "desc", "exclude_aggregates": true }

Example 2 - Specific countries GDP: { "indicator": "WB_WDI_NY_GDP_MKTP_CD", "database": "WB_WDI", "year": "2023", "countries": "USA,CHN,JPN" }

Example 3 - All data with aggregates: { "indicator": "WB_WDI_SP_POP_TOTL", "database": "WB_WDI", "year": "2022", "exclude_aggregates": false }

⚔ HOW IT WORKS:

  • countries parameter: API fetches ONLY those countries (efficient)

  • exclude_aggregates: Filters out 47 regional/income codes (ARB, AFE, WLD, HIC, etc.) āš ļø DEFAULT is TRUE - only individual countries returned Set to false to include aggregates like "World", "High income", "Arab World"

  • sort_order: Sorts by OBS_VALUE before limiting

  • limit parameter: Returns top N records to minimize tokens āš ļø DEFAULT is 20 - provides reasonable default, override if you need more

  • compact_response: Returns only essential fields (country, country_name, year, value) āš ļø DEFAULT is TRUE - minimizes token usage by ~75% Set to false if you need all fields (REF_AREA, TIME_PERIOD, OBS_VALUE, UNIT_MEASURE, etc.)

šŸ“Š AFTER RECEIVING DATA: Format results as markdown table:

  • Sort by value (highest to lowest)

  • Add rank numbers

  • Format with thousand separators

  • Include country names (not just codes)

Returns: Data records with summary statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
indicatorYes
databaseYes
yearNo
countriesNo
sexNo
ageNo
limitNo
sort_orderNodesc
exclude_aggregatesNo
compact_responseNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and delivers comprehensive behavioral disclosure. It explains how parameters affect API behavior (e.g., countries parameter fetches only those countries efficiently, exclude_aggregates filters out regional codes), describes defaults and their rationale (limit default 20 for token minimization), and details response formatting expectations. No contradictions exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (prerequisite, type requirements, examples, how it works, formatting instructions). However, it's quite lengthy with repetitive emphasis on type requirements. Some information could be more condensed while maintaining clarity, as multiple examples and warnings about quotes could be streamlined.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (10 parameters, 0% schema coverage, no annotations, but has output schema), the description is remarkably complete. It covers prerequisites, parameter semantics, behavioral traits, defaults, examples, and post-processing instructions. The output schema existence means return values don't need explanation, and the description provides everything else needed for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing detailed parameter semantics. It explains type requirements with examples, describes what each parameter does (e.g., 'countries parameter: API fetches ONLY those countries'), clarifies defaults and their effects, and provides correct JSON examples. This adds substantial value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool retrieves data from World Bank Data360, which is a clear purpose. However, it doesn't differentiate from sibling tools like search_datasets_tool or list_popular_indicators, leaving it vague whether this is for raw data retrieval versus metadata exploration. The description focuses more on technical requirements than distinguishing functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: it states a prerequisite (call get_temporal_coverage first), gives clear examples of when to use specific parameters, and implicitly contrasts with siblings by focusing on actual data retrieval rather than metadata. The 'HOW IT WORKS' section offers detailed context for parameter selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_datasets_toolA

[STEP 1/3] Search World Bank Data360 for datasets.

    <purpose>
        Search World Bank Data360 for datasets. This is STEP 1 of 3 in the data retrieval workflow.
        Find indicator IDs and database IDs needed for subsequent data operations.
    </purpose>

    <workflow>
        <step number="1">search_datasets (this tool) - Find indicator ID and database ID</step>
        <step number="2">get_temporal_coverage - Check available years BEFORE retrieving data</step>
        <step number="3">retrieve_data - Fetch actual data with proper year and limit parameters</step>
    </workflow>

    <optimization_tips>
        <tip>Remove punctuation: "GDP, total" becomes "GDP total"</tip>
        <tip>Expand abbreviations: "GDP" becomes "Gross Domestic Product"</tip>
        <tip>Add "total" for aggregates: "population" becomes "population total"</tip>
        <tip>Use lowercase for consistency</tip>
        <tip>Remove filler words: "data", "statistics"</tip>
    </optimization_tips>

    <common_databases>
        <database id="WB_WDI">World Development Indicators (most comprehensive)</database>
        <database id="WB_HNP">Health, Nutrition and Population</database>
        <database id="WB_GDF">Global Development Finance</database>
    </common_databases>

    <examples>
        <example original="GDP">gross domestic product total</example>
        <example original="population data">population total</example>
        <example original="">poverty headcount ratio</example>
    </examples>

    <returns>
        List of datasets with indicator IDs, names, database IDs, and search scores.
    </returns>

    <next_step>
        Call get_temporal_coverage with the indicator and database from results.
    </next_step>
ParametersJSON Schema
NameRequiredDescriptionDefault
search_queryYes
topNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: it's a search operation (implied read-only), returns a list of datasets with specific fields (indicator IDs, names, database IDs, search scores), and includes optimization tips for query formatting (e.g., removing punctuation, expanding abbreviations). However, it lacks details on error handling, rate limits, or authentication needs, which are minor gaps given the context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with XML-like tags (<purpose>, <workflow>, etc.), which aids organization but adds verbosity. Each section earns its place by providing workflow context, optimization tips, and examples, but the formatting could be more streamlined. It's appropriately sized for the tool's complexity but not maximally concise due to the markup style.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (2 parameters, no annotations, 0% schema coverage, but with an output schema), the description is highly complete. It covers purpose, workflow integration, parameter usage tips, common databases, examples, return values, and next steps. The presence of an output schema means the description doesn't need to detail return formats, and it effectively fills all other contextual gaps, making it sufficient for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must compensate. It adds significant meaning beyond the schema: it explains that 'search_query' should be optimized using the provided tips (e.g., 'Remove punctuation') and implies 'top' controls result count with a default of 20. While it doesn't detail parameter constraints or formats explicitly, the examples and tips offer practical guidance, adequately compensating for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool's purpose as 'Search World Bank Data360 for datasets' and distinguishes it from siblings by positioning it as 'STEP 1 of 3 in the data retrieval workflow' and specifying it finds 'indicator IDs and database IDs needed for subsequent data operations.' This clearly differentiates it from tools like 'retrieve_data_tool' or 'search_local_indicators' by focusing on metadata discovery rather than data retrieval or local searches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool versus alternatives through the <workflow> section, which outlines a three-step process where this tool is step 1 for finding IDs, followed by 'get_temporal_coverage' and 'retrieve_data.' It also lists sibling tools like 'list_popular_indicators' and 'search_local_indicators' in context, though it doesn't explicitly contrast them, the workflow implies this tool is for initial searches in the broader retrieval process.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_local_indicatorsA

Search through local metadata for World Bank indicators (instant, offline).

    This is a FAST alternative to search_datasets that searches through locally cached
    metadata. Use this to discover what types of data are available before using the
    API search.

    How it works:
    - Searches indicator names, codes, and descriptions
    - Instant results (no API call)
    - Returns relevance-ranked matches

    Search tips:
    - Use simple keywords: "unemployment", "poverty", "co2", "water"
    - Search works on indicator names AND descriptions
    - Case-insensitive
    - More specific queries = better results

    Example queries:
    - "unemployment" → finds all unemployment-related indicators
    - "mortality infant" → finds infant mortality indicators
    - "internet" → finds internet usage indicators
    - "renewable energy" → finds renewable energy indicators

    Parameters:
    - query: Search term (e.g., "unemployment", "gdp growth", "water access")
    - limit: Maximum number of results to return (default: 20)

    Returns: List of matching indicators with codes, names, descriptions, and relevance scores.

    Note: This returns indicator codes but NOT database IDs. After finding an indicator,
    use search_datasets with the indicator name to get the database ID needed for data retrieval.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: 'instant, offline' operation, 'no API call,' 'returns relevance-ranked matches,' and 'instant results.' It also clarifies what is NOT returned ('indicator codes but NOT database IDs'). However, it doesn't mention potential limitations like cache freshness or what happens with no matches.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, how it works, search tips, examples, parameters, returns, note) and front-loads key information. While comprehensive, some sections like the example queries could be more concise. Every sentence adds value, but there's minor verbosity in the examples.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (search functionality with behavioral nuances), no annotations, and an output schema (which handles return values), the description is remarkably complete. It covers purpose, usage guidelines, behavioral traits, parameter semantics, workflow integration with siblings, and practical examples, leaving no significant gaps for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate. It provides meaningful context for both parameters: 'query' is explained with examples and search tips (e.g., 'simple keywords,' 'case-insensitive'), and 'limit' is clarified as 'maximum number of results to return' with the default value. This adds substantial value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: searching through locally cached metadata for World Bank indicators. It specifies the verb 'search' and resource 'local metadata for World Bank indicators,' and explicitly distinguishes it from the sibling 'search_datasets' tool by noting this is a 'FAST alternative' for discovering available data types before API search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool versus alternatives. It states 'Use this to discover what types of data are available before using the API search' and names the specific alternative 'search_datasets.' It also includes a note explaining the workflow: after finding indicators here, use search_datasets to get database IDs for data retrieval.

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.

  1. 5 tool updatesv1.0.0
    • First observedget_temporal_coverage_tool
    • First observedlist_popular_indicators
    • First observedretrieve_data_tool
    • First observedsearch_datasets_tool
    • First observedsearch_local_indicators

TDQS

A4.4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: search_datasets_tool and search_local_indicators serve different search functions (API vs. offline), get_temporal_coverage_tool handles year availability, retrieve_data_tool fetches actual data, and list_popular_indicators provides curated discovery. The descriptions explicitly differentiate their roles, preventing agent misselection.

Naming Consistency3/5

The naming is mixed, with some tools using verb_noun (search_datasets_tool, retrieve_data_tool) and others using noun_verb (get_temporal_coverage_tool, list_popular_indicators). While all names are readable and descriptive, the inconsistency in verb placement and suffix usage ('_tool' on some but not others) reduces predictability. The pattern is not chaotic but lacks uniformity.

Tool Count5/5

With 5 tools, the count is well-scoped for a World Bank data server, covering essential workflows: discovery (search_local_indicators, list_popular_indicators), search (search_datasets_tool), validation (get_temporal_coverage_tool), and retrieval (retrieve_data_tool). Each tool earns its place without bloat, supporting a clear data access pipeline.

Completeness4/5

The tool set covers the core data retrieval workflow comprehensively: search, temporal validation, and data fetching, with additional discovery aids. Minor gaps exist, such as no explicit tools for filtering or aggregating data beyond basic parameters, but agents can work around these using the provided tools. The surface supports end-to-end data access without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

Latest Blog Posts

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/llnOrmll/world-bank-data-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server