Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

Oecd MCP Server

by cyanheadsversion 0.6.1i★ –iComputer or cloud
Registry nameio.github.cyanheads/oecd-mcp-server

Install

Overview

Description from the maker (original English)

Search and query 1,500+ OECD statistical datasets via SDMX. Keyless.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 3 of 3 passed
  • Runs on the maker’s server: what you ask it goes through their server.
  • Can do 7 things (tools) oecd_list_agencies, oecd_search_datasets, oecd_get_dataset_info, oecd_get_dimension_values …
  • You fill in yourself: MCP_LOG_LEVEL, OECD_DATAFRAME_DROP_ENABLED

You need

  • Runs in the cloudNothing to install; it connects over the internet
  • npmNode.js installed (for the npx command)

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Works in Claude on the web, desktop and mobile:

  1. Open Settings → Connectors
  2. Press Add custom connector
  3. Paste the address below and press Add
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Add2https://…3
https://oecd.caseyjhand.com/mcp

Or run it on your computer

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "oecd": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/oecd-mcp-server"
      ],
      "env": {
        "MCP_LOG_LEVEL": "your-value",
        "OECD_DATAFRAME_DROP_ENABLED": "your-value"
      }
    }
  }
}

Run this in your terminal

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

Or run it on your computer

claude mcp add oecd --env MCP_LOG_LEVEL=your-value --env OECD_DATAFRAME_DROP_ENABLED=your-value -- npx -y @cyanheads/oecd-mcp-server

Fill in the empty values before running it.

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "oecd": {
      "url": "https://oecd.caseyjhand.com/mcp"
    }
  }
}

Or run it on your computer

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "oecd": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/oecd-mcp-server"
      ],
      "env": {
        "MCP_LOG_LEVEL": "your-value",
        "OECD_DATAFRAME_DROP_ENABLED": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "oecd": {
      "type": "http",
      "url": "https://oecd.caseyjhand.com/mcp"
    }
  }
}

Or run it on your computer

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "oecd": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/oecd-mcp-server"
      ],
      "env": {
        "MCP_LOG_LEVEL": "your-value",
        "OECD_DATAFRAME_DROP_ENABLED": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

ChatGPT connects only to servers on the internet:

  1. Open ChatGPT on the web → Settings → Connectors (Apps)
  2. Press Create or Add (some plans need Developer mode under Advanced first)
  3. Paste the address below, give it a name and save
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Create2https://…3
https://oecd.caseyjhand.com/mcp

Menu names can differ slightly by plan and over time.

Your choice stays on this device in a cookie; no account needed.

Values you fill in

  • MCP_LOG_LEVEL env
    Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').
  • OECD_DATAFRAME_DROP_ENABLED env
    Set to 'true' to register oecd_dataframe_drop, which drops a staged DataCanvas table. Registered but disabled otherwise.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Tool names and descriptions exactly as the server reported them on Nov 6, 2026. The maker wrote them, not us; we show them as plain text.

  • oecd_list_agencies

    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.

  • oecd_search_datasets

    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.

  • oecd_get_dataset_info

    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.

  • oecd_get_dimension_values

    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 the

  • oecd_query_dataset

    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 a D

  • oecd_dataframe_describe

    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.

  • oecd_dataframe_query

    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 to

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account cyanheads, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • ✓ Pass

    Endpoint responds

    Responded in 547 ms (HTTP 200)

  • – Not applicable

    Sign-in with OAuth

    No sign-in needed

  • ✓ Pass

    No hidden instructions in tool descriptions

    Read 7 tool descriptions and found no hidden instructions to the AI

Compared with others in Search & AI memoryi

  • More stars than 0% of the other 5672 servers in this category
  • Published to the registry more recently than 89% of the other 5672 servers in this category
  • Basic checks equal to or better than 100% of the other 5672 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Oecd MCP Server safe?

It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

Either way works: install it on your computer or connect to the cloud version.

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.6.1) reached the registry 5 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.

What can I use instead?

In the same category: Context7, Codebase Memory, Exa

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Context7

by upstash

Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.

Computer or cloud★ 64,224MITUpdated yesterday
Install

Codebase Memory

by DeusData

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

Runs on your computer★ 48,148MITUpdated 21 days ago
Install

Exa

by exa-labs

Connect AI agents to Exa for web search, content fetching, and multi-step research.

Runs in the cloud★ 5,213MITUpdated 2 months ago
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

@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

Public Hosted Server: https://oecd.caseyjhand.com/mcp


Overview

OECD statistics across 1,500+ datasets on national accounts, employment, trade, education, and health. Search datasets, inspect their dimensions, query observations, and run SQL over large multi-country time series. No API key required.

Tools

Five discovery and data tools plus three DataCanvas tools for large query results:

ToolDescription
oecd_list_agenciesList OECD SDMX agencies with their directorate and the number of dataflows each publishes
oecd_search_datasetsSearch 1,500+ OECD dataflows by keyword or theme
oecd_get_dataset_infoFetch a dataflow's dimensions, key order, and codelist references
oecd_get_dimension_valuesFetch valid codes and labels for one dimension (countries, measures, frequencies)
oecd_query_datasetFetch observations filtered by dimension key and time range; spills large results to DataCanvas
oecd_dataframe_describeList DataCanvas tables and columns staged by a prior oecd_query_dataset spill
oecd_dataframe_queryRun a read-only SQL SELECT against DataCanvas tables
oecd_dataframe_dropDrop a staged DataCanvas table or view once the analysis is done — opt-in via OECD_DATAFRAME_DROP_ENABLED=true
Resources
ResourceDescription
oecd://dataflow/{agency_id}/{flow_id}Dimension metadata for a single OECD dataflow — same content as oecd_get_dataset_info

All resource data is also reachable via tools. Use oecd_get_dataset_info for the same content.

Skill
SkillDescription
oecd-guideBuilding SDMX keys, confirming which series a dataflow carries, and reading results without mixing breakdowns, units, or country aggregates. Served over MCP at skill://oecd-guide/SKILL.md

Capability reference

oecd_list_agencies tool
  • No inputs; returns every agency ID (e.g. OECD.SDD.NAD) with its directorate name and dataflow count, sorted by count
  • Publishers outside OECD that ship dataflows through the same catalog (ESTAT, IAEG-SDGs) carry no directorate

oecd_search_datasets tool
  • query token-matched across dataflow names and descriptions; optional agency_id scope; limit (1–100) and offset paging with total_matches
  • Each result carries its flow_ref — the identifier every other tool takes — and matched_in (name, description, or both)

oecd_get_dataset_info tool
  • Takes a flow_ref; returns every dimension in key order with its concept name and codelist reference, plus a key_example for oecd_query_dataset
  • Fails invalid_flow_ref for a string that is not a flow reference and dataflow_not_found for one OECD does not publish

oecd_get_dimension_values tool
  • Takes a flow_ref and dimension_id; optional query substring-matches both code and label
  • limit (1–500, default 50) and offset page the matches, with the full match count when more remain

oecd_query_dataset tool
  • flow_ref plus a dot-delimited key (+ for multiple values, empty segments as wildcards) and optional start_period / end_period
  • One row per observation with every dimension and attribute as its own column; value is pre-multiplied by value_scale
  • Large results spill to DataCanvas with truncated: true, canvas_id, and table_name; without a canvas every row stays in structuredContent and only the rendered table is capped (content_table_capped)
  • A spill includes a notice naming the canvas and table: inspect columns with oecd_dataframe_describe, then use oecd_dataframe_query for SQL over the full result. Fitting results allocate no new canvas; an explicit canvas_id is checked before the download, so a stale one fails as canvas_not_found without spending an OECD request.

oecd_dataframe_describe tool
  • Takes the canvas_id oecd_query_dataset returned; lists each staged table and view with its row count and column names and types

oecd_dataframe_query tool
  • canvas_id plus one read-only SQL SELECT; writes, DDL, and system-catalog access are rejected
  • limit (default 100) returns up to 1,000 rows per call, within 1 MiB of row data; a limit from 1,001 to 10,000 is served at 1,000 with a notice
  • truncated: true marks a result with more rows than it returned, and its notice names how to reach the rest; row_count counts the rows returned
  • A query still running after 30 seconds is stopped with query_timeout

oecd_dataframe_drop tool
  • canvas_id plus a table_name as oecd_dataframe_describe lists it; returns the dropped object's kind and the remaining_tables
  • Opt-in: listed but not callable unless OECD_DATAFRAME_DROP_ENABLED=true

oecd://dataflow/{agency_id}/{flow_id} resource
  • Same content as oecd_get_dataset_info, as application/json
  • {flow_id} is {dsd_id}@{df_id} with @ encoded as %40 (e.g. oecd://dataflow/OECD.SDD.NAD/DSD_NAAG%40DF_NAAG_I), or the bare {df_id}

Features

Built on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.

OECD-specific:

  • Keyless access — no API key required; OECD SDMX 2.1 REST API is fully public
  • Covers 1,500+ dataflows across 20+ OECD statistical departments (national accounts, employment, inflation, trade, education, health, environment, taxation, inequality)
  • Delegated dataflows and codelist revisions resolved end to end — a dataflow OECD catalogues on one service root but defines on another follows the catalog's own link for structure, codes, and observations, and codes come from the revision the datastructure names rather than the endpoint's current latest
  • AllDimensions observation mode — one-pass SDMX-JSON decoding into flat row objects, no nested series key reconstruction
  • oecd_query_dataset materializes large observation sets (multi-country time-series) on a DuckDB DataCanvas for in-conversation SQL analytics; the oecd_dataframe_* tools work on it; DataCanvas is on by default and CANVAS_PROVIDER_TYPE=none disables it

Agent-friendly output:

  • Workflow-aware tool surface — flow_ref from search flows directly into info, values, and query tools without reconstruction
  • Spill signaling — truncated: true + canvas_id tells the agent to switch to SQL instead of parsing a truncated inline list
  • Full SDMX decoding server-side — agents see { REF_AREA: "United States", MEASURE: "Gross domestic product", UNIT_MULT: "Billions", value: 26054614000000, value_scale: 1000000000 }, not raw index arrays

Getting started

Connect to the hosted instance, no install:

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

Or run it locally:

claude mcp add oecd-mcp-server -- npx -y @cyanheads/oecd-mcp-server

For other clients, add this to the MCP config file:

{

"mcpServers": { "oecd-mcp-server": { "command": "npx", "args": ["-y", "@cyanheads/oecd-mcp-server"] } } }

No API key is needed — OECD SDMX is a free, public API. DataCanvas SQL analytics over large query results is on by default; set CANVAS_PROVIDER_TYPE=none to get capped inline previews instead. For Docker or a source build, see Running the server.

Configuration

All configuration is validated at startup via Zod schemas in src/config/server-config.ts. Key environment variables:

VariableDescriptionDefault
OECD_BASE_URLOECD SDMX REST API base URL. Must be an https origin that answers directly — no redirect is followed, so a plaintext http:// origin fails instead of being upgraded to https.https://sdmx.oecd.org/public/rest
OECD_TIMEOUT_MSPer-request timeout in milliseconds.30000
CANVAS_PROVIDER_TYPECanvas engine. With duckdb, a large oecd_query_dataset result spills to a queryable table instead of just capping the rendered preview; with none, every row still comes back in structuredContent and only the rendered table is capped.duckdb
OECD_DATAFRAME_DROP_ENABLEDSet to true to register oecd_dataframe_drop. Off, the tool is listed as disabled and clients cannot call it.false
MCP_TRANSPORT_TYPETransport: stdio or http.stdio
MCP_HTTP_PORTPort for HTTP server.3010
MCP_SESSION_MODEHTTP session posture: stateful, stateless, or auto. The server declares stateless in source — it keeps no per-session state, and a DataCanvas handle is keyed by canvas_id — so set this only to override that.stateless
MCP_AUTH_MODEAuth mode: none, jwt, or oauth.none
MCP_LOG_LEVELLog level (RFC 5424).info
LOGS_DIRDirectory for log files (Node.js only). /logs
LOG_TOOL_FAILURE_PAYLOADSLog each failed tool call's arguments and result, redacted by key name and capped at LOG_TOOL_FAILURE_PAYLOAD_MAX_BYTES (default 16384). A secret inside a free-form value is not redacted.false
OTEL_ENABLEDEnable OpenTelemetry instrumentation.false

See .env.example for the full list of optional

Only the beginning is shown; read the rest in the repo

Ask PopNx