Skip to main content
Glama
llnOrmll

World Bank Data360 MCP Server

by llnOrmll

list_popular_indicators

Discover commonly requested World Bank indicators across demographics, economy, health, education, and other categories to identify relevant data for analysis without manual searching.

Instructions

Get a curated list of popular World Bank indicators.

    This tool helps users discover commonly requested indicators without searching.
    Perfect for getting started or exploring what data is available.

    Categories included:
    - Demographics: Population, growth rate, density, fertility
    - Economy: GDP, GDP per capita, growth, inflation, trade
    - Health: Life expectancy, mortality rates (infant, under-5, maternal)
    - Education: Literacy rates, school enrollment
    - Labor: Unemployment, labor force participation, employment ratios
    - Poverty & Inequality: Poverty rates, Gini index, income distribution
    - Environment: Greenhouse gas emissions, forest area, renewable energy
    - Infrastructure: Electricity access, water, sanitation
    - Technology: Internet usage, mobile subscriptions, broadband

    Returns: List of 38 curated indicators with codes, names, descriptions, and categories.

    Usage: Browse the list, pick an indicator code, then use search_datasets
    to find the exact database ID before retrieving data.
    

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Handler function for the 'list_popular_indicators' tool. Loads popular indicators from JSON, groups by category, and returns structured response. Registered via @server.tool() decorator.
    @server.tool()
    def list_popular_indicators() -> dict[str, Any]:
        """Get a curated list of popular World Bank indicators.
    
        This tool helps users discover commonly requested indicators without searching.
        Perfect for getting started or exploring what data is available.
    
        Categories included:
        - Demographics: Population, growth rate, density, fertility
        - Economy: GDP, GDP per capita, growth, inflation, trade
        - Health: Life expectancy, mortality rates (infant, under-5, maternal)
        - Education: Literacy rates, school enrollment
        - Labor: Unemployment, labor force participation, employment ratios
        - Poverty & Inequality: Poverty rates, Gini index, income distribution
        - Environment: Greenhouse gas emissions, forest area, renewable energy
        - Infrastructure: Electricity access, water, sanitation
        - Technology: Internet usage, mobile subscriptions, broadband
    
        Returns: List of 38 curated indicators with codes, names, descriptions, and categories.
    
        Usage: Browse the list, pick an indicator code, then use search_datasets
        to find the exact database ID before retrieving data.
        """
        indicators = load_popular_indicators()
    
        if not indicators:
            return {
                "success": False,
                "error": "Popular indicators file not found. Please ensure popular_indicators.json exists."
            }
    
        # Group by category for better organization
        by_category = {}
        for ind in indicators:
            category = ind.get("category", "Other")
            if category not in by_category:
                by_category[category] = []
            by_category[category].append({
                "code": ind["code"],
                "name": ind["name"],
                "description": ind["description"][:150] + "..." if len(ind["description"]) > 150 else ind["description"]
            })
    
        return {
            "success": True,
            "total_indicators": len(indicators),
            "categories": list(by_category.keys()),
            "indicators_by_category": by_category,
            "note": "These are the most commonly requested indicators. Use search_local_indicators for more specific searches."
        }
  • Helper function that loads and caches the popular indicators data from the local JSON file 'popular_indicators.json'.
    def load_popular_indicators() -> list[dict[str, Any]]:
        """Load curated popular indicators from JSON file (cached)"""
        global _popular_cache
    
        if _popular_cache is None:
            popular_path = Path(__file__).parent / "popular_indicators.json"
            try:
                with open(popular_path, 'r', encoding='utf-8') as f:
                    data = json.load(f)
                    _popular_cache = data["indicators"]
            except Exception as e:
                # Return empty list if file not found or error
                _popular_cache = []
    
        return _popular_cache
Behavior4/5

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

No annotations are provided, so the description carries full burden. It effectively discloses behavioral traits: it's a read-only discovery tool (implied by 'Get' and 'curated list'), returns exactly 38 indicators with specific fields (codes, names, descriptions, categories), and provides the complete category breakdown. However, it doesn't mention potential limitations like rate limits or authentication requirements.

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

Conciseness5/5

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

Well-structured and appropriately sized. The description is front-loaded with the core purpose, followed by usage context, detailed category breakdown, return format, and clear next steps. Every sentence adds value with zero waste.

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 has 0 parameters, 100% schema coverage, and an output schema exists, the description provides excellent completeness. It explains the tool's purpose, when to use it, what it returns (including the exact count of 38 indicators and their structure), and how to proceed with sibling tools.

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 tool has 0 parameters with 100% schema description coverage, so baseline is 4. The description appropriately explains this is a parameterless tool for browsing curated content, which adds useful semantic context beyond the empty 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: 'Get a curated list of popular World Bank indicators' with specific resource ('World Bank indicators') and verb ('Get'). It distinguishes from sibling tools like search_datasets_tool by emphasizing this is for discovery without searching, not for retrieving actual data.

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?

Explicit guidance is provided: 'Perfect for getting started or exploring what data is available' and 'Browse the list, pick an indicator code, then use search_datasets to find the exact database ID before retrieving data.' This clearly states when to use this tool versus alternatives like search_datasets_tool and retrieve_data_tool.

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

Install Server

Other Tools

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