Skip to main content
Glama

statline-mcp

🇳🇱 Nederlandse versie

MCP server for the CBS StatLine OData API (Statistics Netherlands). The full table catalog (~6,000 tables) is cached locally in SQLite (FTS5) and is searchable; an MCP user can then navigate through a table and retrieve the figures.

Tools

Tool

Purpose

search_tables

Search the catalog by title/description (prefix matching, nl/en, current tables by default)

get_table_info

Description, period, status and dimensions of a table

get_table_measures

Measures (columns) with unit and topic group, searchable

list_dimension_values

Valid values of a dimension (regions, periods, categories), searchable

query_data

Retrieve figures with filters, pagination and labels

refresh_catalog

Show cache status / refresh the catalog (automatically after 24 hours)

Typical flow: search_tables("werkloosheid") → get_table_info("85224NED") → list_dimension_values(..., "Perioden") → query_data(..., filters={"Perioden": "laatste:4kw"}).

Note: most CBS tables are in Dutch. English versions exist for part of the catalog (table IDs ending in ENG); use language="en" in search_tables to restrict results to those.

Filters in query_data

For each dimension you can pass:

Input

Meaning

"GM0363"

a key

"Amsterdam"

a title (case-insensitive)

"2023*"

all values starting with 2023

"laatste", "laatste:5"

the most recent 1 or 5 values ("laatste" = latest)

"laatste:4kw", "laatste:3jaar", "laatste:12maand"

same, but counting only quarters / years / months (useful for mixed periods)

Multiple values in a list are combined with OR, different dimensions with AND.

Related MCP server: mcp-cbs-nl

Installation

You need uv. uv fetches a suitable Python (≥ 3.10) itself if needed.

Option 1: straight from GitHub (no clone needed)

uvx --from git+https://github.com/pascal-cbs/MCP-server-StatLine statline-mcp

This starts the server over stdio. You normally won't run this yourself; instead, let an MCP client launch the command (see below).

Option 2: clone locally

git clone https://github.com/pascal-cbs/MCP-server-StatLine.git
cd MCP-server-StatLine
uv sync
uv run statline-mcp   # starts the server over stdio

Adding to Claude Code

With option 1 (from GitHub):

claude mcp add statline -- uvx --from git+https://github.com/pascal-cbs/MCP-server-StatLine statline-mcp

With option 2 (local copy):

claude mcp add statline -- uv --directory /path/to/MCP-server-StatLine run statline-mcp

By default the server applies to the current project only. To make it available in all your projects:

claude mcp add --scope user statline -- uvx --from git+https://github.com/pascal-cbs/MCP-server-StatLine statline-mcp

Then check with claude mcp list that the server is connected, or type /mcp in Claude Code. Start a new session if needed, then try for example:

Find a CBS table about unemployment and give me the last four quarterly figures.

Remove it with claude mcp remove statline.

Adding to other MCP clients

For Claude Desktop and other clients with a JSON configuration (for Claude Desktop: claude_desktop_config.json):

{
  "mcpServers": {
    "statline": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/pascal-cbs/MCP-server-StatLine", "statline-mcp"]
    }
  }
}

For a local copy use "command": "uv" with "args": ["--directory", "/path/to/MCP-server-StatLine", "run", "statline-mcp"]. If the client cannot find uv/uvx, give the full path (which uvx).

Configuration (environment variables)

  • STATLINE_CACHE_DIR – cache directory (default ~/.cache/statline-mcp)

  • STATLINE_CATALOG_MAX_AGE_HOURS – maximum age of the catalog cache (default 24)

The first search fetches the catalog from CBS (a few seconds); after that, searching runs locally.

Notes

  • Data comes from TypedDataSet; pagination with offset automatically uses the ODataFeed endpoint because ODataApi does not support $skip.

  • CBS keys are sometimes padded with spaces ('GM0363 '); the server handles this and returns trimmed values.

  • CBS does not return a total row count; use next_offset to keep paginating.

Available Tools

6 tools
get_table_infoA

Beschrijving van één tabel plus zijn dimensies (waar je op filtert) en aantal meetwaarden.

Dit is het startpunt om door een tabel te navigeren. Gebruik daarna get_table_measures voor de kolommen en list_dimension_values voor de waarden van een dimensie.

Args: table_id: Tabel-ID zoals '83765NED' of '85874ENG'. full_description: Voeg de lange officiële toelichting toe (kan veel tekst zijn).

ParametersJSON Schema
NameRequiredDescriptionDefault
table_idYes
full_descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full behavioral burden. It usefully warns that full_description can add a lot of text ('kan veel tekst zijn'), which matters for context budget, but it says nothing about read-only semantics, error behavior for unknown IDs, or rate limits.

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

Conciseness4/5

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

Purpose is front-loaded in the first sentence, navigation guidance second, and arguments last, which is the right order for a lookup tool. Slightly verbose in restating that it is a description of a table, but nothing is genuinely wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value documentation is not needed, and the description is sufficient for a two-parameter read lookup. The remaining gaps are the upstream step for obtaining table_id and behavior on invalid IDs; minor for a tool of this complexity.

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?

Schema description coverage is 0%, so the description must carry parameter meaning, and it largely does: table_id is illustrated with concrete example IDs ('83765NED', '85874ENG'), and full_description is explained as adding the long official explanation with a size caveat. It doesn't state the default for full_description or any ID-format constraints, but both params gain meaning beyond the bare 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 gives a specific verb+resource: it returns one table's description plus its dimensions (filter targets) and measure count. It explicitly distinguishes itself from siblings by naming get_table_measures for columns and list_dimension_values for dimension values, so an agent can route correctly without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the usage context ('Dit is het startpunt om door een tabel te navigeren') and names two follow-up alternatives with their purposes. What it doesn't state is how table_id is obtained in the first place (search_tables), so the workflow entry point is implicit rather than fully spelled out.

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

get_table_measuresA

Lijst de meetwaarden (kolommen met cijfers) van een tabel, met eenheid en onderwerpgroep.

Args: table_id: Tabel-ID. search: Filter op tekst in titel, sleutel, groep of omschrijving. limit: Maximaal aantal meetwaarden (1-200). offset: Aantal over te slaan (paginering).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
searchNo
table_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations present, the description must carry the behavioral load. It does disclose pagination via offset, a hard cap of 1-200 on limit, and that results carry unit and subject group, but it never states that this is a read-only listing or what happens with an invalid table_id.

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

Conciseness4/5

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

Front-loaded one-sentence purpose followed by a compact Args list; every line adds something. The Args formatting is boilerplate, but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need no explanation, and all four parameters are addressed with the key constraints. The remaining gap is the absence of any safety or failure-mode context, which matters more because no annotations are supplied.

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?

Schema description coverage is 0%, so the description must compensate, and it largely does: search is explained as matching title, key, group or description, and limit gains a 1-200 range constraint absent from the schema, while offset is tied to pagination. Only table_id is restated rather than explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Lijst de meetwaarden') and disambiguates the term measure as 'kolommen met cijfers', plus notes the enrichment with unit and subject group. It does not explicitly contrast itself with siblings like get_table_info or list_dimension_values, so an agent must infer the split.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: fetch measures for a given table_id. There is no statement of when to prefer this over list_dimension_values (the complementary tool) or query_data for actual values, and no prerequisites or exclusions are given.

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

list_dimension_valuesA

Lijst de geldige waarden van een dimensie (bv. regio's, perioden, geslacht, bedrijfstakken).

De 'key' kun je gebruiken in query_data.filters. Perioden-sleutels hebben vorm als '2023JJ00' (jaar), '2023KW01' (kwartaal), '2023MM01' (maand).

Args: table_id: Tabel-ID. dimension: Dimensie-sleutel of -titel uit get_table_info (bv. 'Perioden', 'RegioS'). search: Filter op tekst in sleutel, titel of groep (bv. 'amsterdam'). limit: Maximaal aantal waarden (1-500). offset: Aantal over te slaan (paginering).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
searchNo
table_idYes
dimensionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does disclose useful behavior: pagination via limit (1-500)/offset and the period key encoding ('2023JJ00', '2023KW01', '2023MM01'). However, it does not state read-only safety, whether values are exhaustive, or result ordering.

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

Conciseness4/5

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

Front-loaded with the purpose, then the integration note, then a compact Args block. Every element earns its place, though the Args section is slightly list-like rather than prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. The description covers the key format, the link to query_data.filters, and all five parameters, making it sufficiently complete for an agent to call the tool correctly.

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?

Schema description coverage is 0%, so the description must compensate, and it does: it explains table_id, dimension (with an example pulled from get_table_info), search (matches key/title/group with an example), limit (bounded 1-500), and offset (pagination). This adds meaningful semantics absent from the bare 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?

Specific verb+resource ('Lijst de geldige waarden van een dimensie') with concrete examples of what a dimension is (regions, periods, gender, industries). It distinguishes itself from siblings by pointing to query_data.filters for the returned keys and get_table_info as the source of the dimension key.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly ties the tool into the workflow: the returned 'key' is used in query_data.filters, and the dimension argument comes from get_table_info. This gives clear context for when to reach for this tool, though it does not state exclusions or contrast directly against search_tables or get_table_measures.

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

query_dataA

Haal cijfers op uit een CBS-tabel.

Filters per dimensie accepteren: een sleutel ('GM0363'), een titel ('Amsterdam'), een voorvoegsel met sterretje ('2023*' = alle perioden van 2023), of 'laatste' / 'laatste:5' voor de meest recente 1 resp. 5 waarden. Bij een tijddimensie met gemengde perioden (jaar + kwartaal) voeg je een type toe: 'laatste:4kw' (4 kwartalen), 'laatste:3jaar', 'laatste:12maand'. Meerdere waarden in een lijst worden met OF gecombineerd, verschillende dimensies met EN. Een dimensie zonder filter levert alle waarden op.

Voorbeeld: filters={"RegioS": ["Amsterdam", "Utrecht"], "Perioden": "laatste:3"}, measures=["Werkloosheid"].

Args: table_id: Tabel-ID. filters: {dimensie: waarde(n)}. Zie list_dimension_values voor geldige waarden. measures: Meetwaarden (sleutel of (deel van) titel). Standaard de eerste 10. limit: Maximaal aantal rijen per aanroep (1-1000). offset: Aantal rijen om over te slaan (paginering). labels: Toon dimensiewaarden als titel (standaard), sleutel of beide. odata_filter: Extra ruwe OData $filter-expressie (voor gevorderd gebruik), met AND toegevoegd.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
labelsNotitle
offsetNo
filtersNo
measuresNo
table_idYes
odata_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
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, and it does disclose real behavior: default measures = first 10, limit range 1-1000, offset pagination, OR within a list / AND across dimensions, and that an unfiltered dimension returns all values. It omits auth needs, rate limits, and read-only confirmation, keeping it short of 5.

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

Conciseness4/5

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

Front-loaded with purpose, then filter syntax, a concrete example, and an Args list. It is a bit long and the filter rules partially repeat between the prose and the Args entry, but for a complex query tool nearly every sentence earns its place.

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 a 7-parameter tool with 0% schema coverage but an existing output schema, the description covers purpose, filter grammar, combination semantics, defaults, and pagination. An agent has everything needed to construct a correct call without explaining return shapes that the output schema already defines.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, which it does thoroughly. It documents all seven parameters in the Args block, including value syntax for filters, the limit range, pagination via offset, label modes, and that odata_filter is AND-appended.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line 'Haal cijfers op uit een CBS-tabel' gives a specific verb (fetch) and resource (figures in a CBS table), which is unambiguously the data-retrieval sibling among metadata tools. It only partially differentiates from siblings by deferring to list_dimension_values, so it stays below 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives strong operational context (how filters combine, how to specify time types) and routes the agent to list_dimension_values for valid values. However, it never states explicit when-not conditions or contrasts with search_tables/get_table_measures beyond the implicit workflow.

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

refresh_catalogA

Toon de status van de lokale cataloguscache en ververs hem desgewenst.

De catalogus wordt automatisch ververst als hij ouder is dan 24 uur.

Args: force: Haal de catalogus nu opnieuw op bij het CBS.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses a genuinely useful behavioral trait (automatic refresh after 24 hours) and notes that force re-fetches from CBS. It omits side effects such as network calls, permission needs, or whether refreshing blocks, but the output schema covers return values.

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

Conciseness4/5

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

Front-loaded with the status-check purpose, then the refresh behavior, then the argument description. Every sentence earns its place, though a minor formatting nitpick is embedding a fake Args section inline rather than structuring it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. The description covers purpose, automatic-refresh policy, and the sole parameter, leaving little an agent needs beyond this to call it correctly.

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?

Schema coverage is 0%, and the schema entry for 'force' is a bare boolean with default false. The description compensates by explaining what force does ('Haal de catalogus nu opnieuw op bij het CBS'), giving meaning the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states specific verbs (show status, refresh) and a specific resource (the local catalog cache), which is clearly distinguishable from the query-oriented siblings. It does not explicitly name or contrast with those siblings, so it stays below 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 24-hour auto-refresh policy implies when a manual refresh is useful, and 'desgewenst' (if desired) signals optionality. However, there is no explicit when-to-use guidance relative to the sibling tools, nor any statement of when a refresh is unnecessary.

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

search_tablesA

Doorzoek de CBS-catalogus (ca. 6000 tabellen) op titel en beschrijving.

Zoektermen worden als voorvoegsel gematcht (bv. 'werkloos' vindt 'werkloosheid'); alle termen moeten voorkomen, anders valt de zoekactie terug op 'minstens één term'. Een tabel-ID (bv. '83765NED') kan ook direct worden opgegeven.

Args: query: Zoektekst, bv. 'huizenprijzen gemeente' of 'unemployment'. language: Beperk tot Nederlandstalige ('nl') of Engelstalige ('en') tabellen. include_discontinued: Neem ook stopgezette tabellen mee (standaard alleen actuele). limit: Maximaal aantal resultaten (1-50). offset: Aantal resultaten om over te slaan (voor volgende pagina).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
offsetNo
languageNo
include_discontinuedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the matching algorithm including the fallback behavior, that discontinued tables are excluded by default, and the limit range. It stops short of describing result ordering/relevance or pagination behavior beyond the offset hint.

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

Conciseness4/5

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

Front-loaded with the core purpose, followed by matching semantics and then a compact Args list; every sentence earns its place. Slightly list-heavy, but no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description covers matching rules, scoping, pagination and all parameters. The main gap is routing guidance relative to the four 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?

Schema description coverage is 0%, so the description must compensate, and it documents all five parameters with meaning plus examples for query. It adds the 1-50 limit constraint that the schema lacks, though default values (10, 0, false, null) are merely restated from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Doorzoek de CBS-catalogus') and even quantifies scope (~6000 tables), searching on title and description. It does not explicitly name or differentiate itself from siblings like get_table_info or query_data, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains search mechanics (prefix matching, all-terms-required with fallback to at-least-one-term) and that a table ID can be passed directly, which implies how to use it. However, it never states when to prefer this over get_table_info, query_data, or refresh_catalog, and gives no exclusions.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.1.0
    • First observedget_table_info
    • First observedget_table_measures
    • First observedlist_dimension_values
    • First observedquery_data
    • First observedrefresh_catalog
    • First observedsearch_tables

TDQS

A4.2/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct stage of the CBS data workflow: cache refresh, catalog search, table metadata, measure listing, dimension values, and data querying. Although several tools take a table_id, their purposes are clearly separated by descriptions and expected outputs.

Naming Consistency5/5

All tool names use snake_case and follow a predictable verb_noun pattern: refresh_catalog, search_tables, get_table_info, get_table_measures, list_dimension_values, query_data. There is no mixing of conventions.

Tool Count5/5

Six tools cleanly cover the full read-only pipeline from dataset discovery to data retrieval. The count is well-scoped, with no redundant or missing steps for the server's apparent purpose.

Completeness5/5

The surface covers catalog refresh, search, table metadata, dimensions, measures, and data querying, which are the essential operations for CBS StatLine access. No obvious lifecycle gaps remain for a read-only statistical data server.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables accessing and querying Dutch government open datasets from CBS and data.overheid.nl, with tools for searching, filtering, downloading, and analyzing data using CSV, Parquet, DuckDB, or Pandas.
    9
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables querying Statistics Netherlands (CBS) data, including metadata for tables like '37296eng', through an MCP interface.
    30 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Access Statbel Belgium open data via natural language queries. Provides tools to query bestat datasets through an MCP gateway.
    10 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables searching, exploring, and querying over 1,500 OECD statistical datasets via SDMX, covering national accounts, employment, trade, PISA, health, and more.
    98 npm
    2
    Apache 2.0