What this enables for you

Whether you are prototyping a policy assistant or embedding data in an internal tool, the server is designed so the model can look up facts instead of guessing numbers or mixing units.

  • Country and regional insight

    Compare economies, track SDG-related series, and see whether an indicator actually covers the places you care about.

  • Trends over time

    Request years or periods you need—then reason over consistent time series instead of a vague “recent” snapshot.

  • Definitions you can cite

    Pull methodology, limitations, and field meanings so answers can explain what the number measures—not only its value.

  • Charts when it helps

    Turn suitable series into visualization specs (for example Vega-Lite) so assistants can show trends, not only tables.

Questions your assistant can support

The tools are built for natural, analyst-style questions. Your agent resolves countries to standard codes, picks indicators, applies filters (sex, age, urbanization, etc.), and checks coverage before answering.

  • How has GDP per capita changed in Kenya over the last two decades? Search, confirm coverage, then return a time series.
  • Which indicators in WDI relate to female labor force participation, and do they include Bangladesh? Discovery plus metadata and disaggregation checks.
  • What is the official definition and source for this indicator—and what footnotes should I mention? Metadata retrieval for transparency and reporting.
  • Plot a line chart comparing access to electricity in three countries since 2010. Data first, then visualization specs when the series fits.

Charts and visualizations

Beyond tables, the server can help agents produce chart-ready output for time series and comparisons—so “show me the trend” becomes a structured spec your client can render.

Typical flow: fetch data with clear columns (for example time period and observed value), then ask for a visualization specification. Chart type hints such as line, bar, or scatter are mapped to supported views; the agent can discover valid options and constraints via dedicated tools.

  • Line and area — trends over years or periods
  • Bar — discrete periods or categories when appropriate
  • Scatter / point — relationships when the data supports it

Specs are produced in a standard chart grammar (Vega-Lite) so compatible hosts can render them consistently. If you operate a separate chart rendering service, you can point the server at it with environment configuration for integration.

Related tools: data360_get_viz_spec, data360_get_supported_chart_types

Technical reference

The sections below are for developers wiring an MCP client, IDE, or custom agent: capabilities summary, tool and resource tables, install steps, and connection URLs.

Server capabilities

Implementation details behind the user-facing outcomes above—search, metadata, series retrieval, codes, and LLM-oriented resources.

MCP tools

Use these tools in sequence: search, then fetch data with the right codes and filters.

Tool Description
data360_search_indicators Search with enriched metadata; use required_country for coverage. Returns covers_country, latest_data, dimensions.
data360_get_data Fetch data points with filters (country, time period, SEX, AGE, etc.).
data360_get_metadata Indicator metadata; use select_fields to limit payload.
data360_get_disaggregation Available filter values (countries, years, dimensions) per indicator.
data360_find_codelist_value Resolve names to codes (e.g. “Kenya” → KEN, “female” → F).
data360_list_indicators List all indicators for a database.
data360_get_viz_spec Build a chart specification from retrieved data (e.g. Vega-Lite).
data360_get_supported_chart_types List supported chart types and data requirements.
data360_get_data_api_url Low-level: direct Data360 data API URL helper.

Recommended agent workflow

1. Search → data360_search_indicators(query, required_country="Kenya")
             Returns: covers_country, latest_data, dimensions per indicator

2. Get data → data360_get_data(database_id, indicator_id, filters)
             Use REF_AREA from search; add time period filters

MCP resources

Subscribe to these URIs for prompts and reference data. For chatbots, include data360://system-prompt in your system prompt.

Resource Description
data360://system-prompt Chain-of-thought guidance for chatbot integration
data360://databases Available databases (WB_WDI, WB_SSGD, …)
data360://codelists Codelist reference (REF_AREA, SEX, AGE, …)
data360://metadata-fields Field mapping for smart question routing
data360://data-filters Available filters and usage guidance
data360://search-usage Search examples and best practices

Get started

Requires Python 3.11+ and uv (recommended) or pip. Copy .env.example to .env and adjust API URL or port as needed.

Install & run

# Clone and install (uv)
git clone https://github.com/worldbank/data360-mcp.git
cd data360-mcp
uv sync
cp .env.example .env
uv run poe serve
# Server: http://localhost:8000/mcp

Configuration

Variable Description Default
DATA360_API_BASE_URL Data360 API base URL https://data360api.worldbank.org
MCP_PORT MCP server port 8000
MCP_TRANSPORT http or sse http
MCP_CHARTS_API_URL Optional chart rendering API URL

Try the bundled demo: uv run scripts/llm_mcp_demo.py (use DEBUG=true for verbose logs).

Connect your agent

Point your MCP client at the local HTTP or SSE endpoint. Use host.docker.internal instead of localhost from containers.

Endpoints

Transport http (default) or sse
URL (HTTP) http://localhost:8000/mcp
URL (SSE) http://localhost:8021/sse (example port)

Databases (examples)

All Data360 databases are supported; list indicators with data360_list_indicators.

  • WB_WDI — World Development Indicators
  • WB_SSGD — Social Sustainability and Global Database