Skip to main content
Glama
llnOrmll

World Bank Data360 MCP Server

by llnOrmll

search_datasets_tool

Search World Bank Data360 for datasets to find indicator and database IDs needed for retrieving economic and social development data.

Instructions

[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>

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
search_queryYes
topNo

Implementation Reference

  • Handler function for the 'search_datasets_tool' tool. Registered with @server.tool() decorator. Includes detailed docstring serving as tool description/schema and calls the core search_datasets helper function.
    @server.tool()
    def search_datasets_tool(search_query: str, top: int = 20) -> dict[str, Any]:
        """[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>"""
        return search_datasets(search_query, top)
  • Core helper function implementing the dataset search logic by making a POST request to the World Bank Data360 search API endpoint, processing the response, and formatting results with indicator IDs, names, databases, and search scores.
    def search_datasets(search_query: str, top: int = 20) -> dict[str, Any]:
        """Search World Bank Data360 API"""
        payload = {
            "count": True,
            "select": "series_description/idno, series_description/name, series_description/database_id",
            "search": search_query,
            "top": top,
        }
    
        try:
            response = requests.post(
                SEARCH_ENDPOINT,
                json=payload,
                headers={"Content-Type": "application/json", "Accept": "application/json"},
                timeout=30,
            )
            response.raise_for_status()
            data = response.json()
            
            # Format results nicely
            results = []
            for item in data.get("value", []):
                series = item.get("series_description", {})
                results.append({
                    "indicator": series.get("idno"),
                    "name": series.get("name"),
                    "database": series.get("database_id"),
                    "search_score": round(item.get("@search.score", 0), 2)
                })
            
            return {
                "success": True,
                "total_count": data.get("@odata.count", 0),
                "results": results
            }
            
        except Exception as e:
            return {"success": False, "error": str(e)}

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