cyanheads avatar

Oecd Mcp Server

cyanheads/oecd-mcp-server

Gives Claude direct access to 1,500+ OECD statistical datasets through their SDMX API without requiring any API key. You get seven tools: search the full catalog by keyword or agency, inspect dataflow schemas and dimension codelists, then query observations with dimension filters and time ranges. Large result sets automatically spill to a DuckDB canvas where you can run SQL aggregations and analytics. The server decodes SDMX-JSON into flat rows and handles datasets across national accounts, employment, trade, PISA education scores, health metrics, and more. Useful when you need authoritative cross-country economic data for research, analysis, or visualization without leaving the LLM conversation or managing API credentials.

GitHub stars
4
tools
7
transport
STDIO, HTTP
env vars
7
last updated
Nov 3, 2026

Install

From registry metadata
$ npx add-mcp https://oecd.caseyjhand.com/mcp --name oecd

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http oecd https://oecd.caseyjhand.com/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 7 tools

Verified live against the running server on Nov 6, 2026.

oecd_list_agenciesList OECD SDMX agencies, the directorate each belongs to, and the number of dataflows each publishes. Use to discover agency IDs before filtering oecd_search_datasets by department.

List OECD SDMX agencies, the directorate each belongs to, and the number of dataflows each publishes. Use to discover agency IDs before filtering oecd_search_datasets by department.

No parameters. Call it with no arguments.

oecd_search_datasetsSearch OECD dataflows by keyword or theme, matching against dataflow names and descriptions. Returns flow_ref identifiers, names, and agency IDs for use with oecd_get_dataset_info.4 params

Search OECD dataflows by keyword or theme, matching against dataflow names and descriptions. Returns flow_ref identifiers, names, and agency IDs for use with oecd_get_dataset_info.

Parameters* required
agency_idstring
Optional agency identifier to restrict the search scope — e.g. "OECD.SDD.NAD". Obtain valid agency IDs from oecd_list_agencies.
limitinteger
Maximum number of results to return (1–100, default 20).default: 20
offsetinteger
Zero-based index of the first match to return, applied before limit. Page through results past the limit by advancing it; an offset at or past total_matches returns an empty list.default: 0
query*string
Keyword or phrase to search for in dataflow names and descriptions — e.g. "GDP", "employment", "education". Every whitespace-separated token must appear somewhere in the name or description.
oecd_get_dataset_infoFetch a dataflow's dimensions, their order, and how to construct a query key. Returns per-dimension names, codelist references, and position in the dot-delimited key. Required before calling oecd_query_dataset to understand key structure.1 params

Fetch a dataflow's dimensions, their order, and how to construct a query key. Returns per-dimension names, codelist references, and position in the dot-delimited key. Required before calling oecd_query_dataset to understand key structure.

Parameters* required
flow_ref*string
Full flow reference, either {agencyID},{dsd_id}@{df_id} — e.g. "OECD.SDD.NAD,DSD_NAAG@DF_NAAG_I" — or the bare {agencyID},{df_id} form OECD uses for the few dataflows published without a datastruct...
oecd_get_dimension_valuesFetch the valid codes and labels for one dimension of a dataflow. Use to resolve human-readable names (countries, measures) to SDMX codes before querying with oecd_query_dataset. Pass query to match a code or label by substring — codelists run to a thousand-plus entries, and t...5 params

Fetch the valid codes and labels for one dimension of a dataflow. Use to resolve human-readable names (countries, measures) to SDMX codes before querying with oecd_query_dataset. Pass query to match a code or label by substring — codelists run to a thousand-plus entries, and t...

Parameters* required
dimension_id*string
Dimension identifier to fetch codes for — e.g. "REF_AREA" or "MEASURE". Obtain valid dimension IDs from oecd_get_dataset_info.
flow_ref*string
Full flow reference — e.g. "OECD.SDD.NAD,DSD_NAAG@DF_NAAG_I", or the bare "OECD.TAD.ARP,DF_AEI2024_DASHBOARD" form for a dataflow published without a datastructure prefix. Obtain from oecd_search_d...
limitinteger
Maximum codes to return (1–500, default 50).default: 50
offsetinteger
Zero-based index of the first code to return within the matching list, applied before limit. Advance it to page; an offset past the last match returns an empty page.default: 0
querystring
Case-insensitive substring matched against both the code and its label, so "PA" and "percent" each reach the code "PA" / "Percent per annum". Omit to page the whole codelist.
oecd_query_datasetFetch observations from an OECD dataflow filtered by a dimension key and optional time range. Returns decoded rows (one per observation) with dimension and attribute labels, and values already scaled by the observation unit multiplier. Large multi-country time-series spill to...5 params

Fetch observations from an OECD dataflow filtered by a dimension key and optional time range. Returns decoded rows (one per observation) with dimension and attribute labels, and values already scaled by the observation unit multiplier. Large multi-country time-series spill to...

Parameters* required
canvas_idstring
Canvas ID from a prior oecd_query_dataset call — exactly 10 characters of letters, digits, hyphens, and underscores — to stage this result alongside that one if it spills; a result that fits inline...
end_periodstring
End of the time range — ISO period code such as "2023" or "2023-Q4". Omit to include up to the latest available period.
flow_ref*string
Full flow reference — e.g. "OECD.SDD.NAD,DSD_NAAG@DF_NAAG_I", or the bare "OECD.TAD.ARP,DF_AEI2024_DASHBOARD" form for a dataflow published without a datastructure prefix. Obtain from oecd_search_d...
key*string
Dot-delimited dimension key matching the dimension order from oecd_get_dataset_info. Empty segments are wildcards; "+" separates multiple values per segment. Example: "A.USA+DEU.B1GQ.." — Annual, U...
start_periodstring
Start of the time range — ISO period code such as "2010", "2010-Q1", or "2010-01". Omit to include all history (may produce very large results).
oecd_dataframe_describeList tables and columns staged on a DataCanvas by a prior oecd_query_dataset spill. Call this before oecd_dataframe_query to discover exact table and column names for SQL. Unavailable when the server runs with DataCanvas disabled.1 params

List tables and columns staged on a DataCanvas by a prior oecd_query_dataset spill. Call this before oecd_dataframe_query to discover exact table and column names for SQL. Unavailable when the server runs with DataCanvas disabled.

Parameters* required
canvas_id*string
Canvas ID returned by oecd_query_dataset — exactly 10 characters of letters, digits, hyphens, and underscores. Identifies the DataCanvas session holding the staged observation tables.
oecd_dataframe_queryRun a read-only SQL SELECT against OECD observation tables staged on a DataCanvas by oecd_query_dataset. Call oecd_dataframe_describe first to discover exact table and column names, then use this tool for aggregation, filtering, GROUP BY, JOIN, and window functions. Returns up...3 params

Run a read-only SQL SELECT against OECD observation tables staged on a DataCanvas by oecd_query_dataset. Call oecd_dataframe_describe first to discover exact table and column names, then use this tool for aggregation, filtering, GROUP BY, JOIN, and window functions. Returns up...

Parameters* required
canvas_id*string
Canvas ID returned by oecd_query_dataset — exactly 10 characters of letters, digits, hyphens, and underscores. Identifies the DataCanvas session holding the observation tables.
limitinteger
Most rows to return. Default 100; served up to 1,000 per call, so a value from 1,001 to 10,000 returns at most 1,000 rows and a notice saying so. Fewer come back when the rows would pass 1 MiB of r...default: 100
sql*string
Read-only SELECT statement. Reference tables by the names returned by oecd_dataframe_describe. Only SELECT statements are allowed — DDL, DML, and file-reading functions are rejected.

Sponsors

Configuration

MCP_LOG_LEVELdefault: info

Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

OECD_DATAFRAME_DROP_ENABLEDdefault: false

Set to 'true' to register oecd_dataframe_drop, which drops a staged DataCanvas table. Registered but disabled otherwise.

MCP_TRANSPORT_TYPEdefault: http

Selects the HTTP transport.

MCP_HTTP_HOSTdefault: 127.0.0.1

The hostname for the HTTP server.

MCP_HTTP_PORTdefault: 3010

The port to run the HTTP server on.

MCP_HTTP_ENDPOINT_PATHdefault: /mcp

The endpoint path for the MCP server.

MCP_AUTH_MODEdefault: none

Authentication mode to use: 'none', 'jwt', or 'oauth'.

Readme

@cyanheads/oecd-mcp-server

Search, explore, and query 1,500+ OECD statistical datasets (national accounts, employment, trade, education, health) from the OECD SDMX API via MCP. STDIO or Streamable HTTP.

8 Tools • 1 Resource • 1 Skill

Details

Repository
github.com/cyanheads/oecd-mcp-server
Category
Search & Web Crawling
Package
@cyanheads/oecd-mcp-server
Transport
STDIO, HTTP
Registry
MCP registry, active
Resources
1
Tools verified
Nov 6, 2026

More from cyanheads

Related Search & Web Crawling MCP servers

View all
1formulahendry avatarMcp Server Mcp Registryformulahendry/mcp-server-mcp-registryMCP Server for MCP Registry to discover and search for available MCP servers in the registry4stars
2iamvirul avatarWso2 Docs Mcp Serveriamvirul/wso2-docs-mcp-serverSemantic search over WSO2 docs (APIM, IS, MI, Choreo, Ballerina) via RAG and pgvector.4stars
3indhar01 avatarMemographindhar01/memographGraph-based memory system for LLMs with knowledge graphs and semantic search.4stars
4daanielcruz avatarGsearchdaanielcruz/gsearch-mcpFree Google Search with inline citations for any MCP-compatible AI tool.4stars
5malamutemayhem avatarABN Lookup MCP by UnClickmalamutemayhem/unclickAustralian Business Number lookup and business name search. By UnClick.4stars
6malamutemayhem avatarBoardGameGeek MCP by UnClickmalamutemayhem/unclickBoardGameGeek search, game details, rankings, and collections. By UnClick.4stars