Skip to main content
Glama
dutch-gov-mcp

dutch-gov-mcp

by Alishark14

dutch-gov-mcp

Unofficial MCP server for Dutch government open data. Query thousands of public datasets, official statistics, and the business registry from data.overheid.nl, CBS (Statistics Netherlands), and KVK (Chamber of Commerce) directly through AI conversation.

Inspired by France's official MCP server for data.gouv.fr — the first government MCP server. This project brings the same playbook to the Netherlands.

No API key. No auth. 14 tools. Drop it into Claude Desktop and ask.

What you can do

Ask an AI things like:

  • "What datasets are available about housing prices in the Netherlands?"

  • "Show me CBS population statistics — what's the dataset identifier and what dimensions does it have?"

  • "Which Dutch government organizations publish environmental data?"

  • "Query CBS dataset 83765NED for the first 20 observations about Amsterdam neighborhoods."

  • "Find unemployment data on both data.overheid.nl and CBS and compare what's available."

The agent discovers datasets, inspects metadata, and queries rows — all through natural conversation.

Related MCP server: satudata-ngawi

Data sources

data.overheid.nl — National Open Data Portal (7 tools)

CKAN-based catalog of thousands of public datasets: tax, real estate, environment, transport, health. CC-0 licensed metadata.

Tool

Purpose

search_datasets

Full-text search with optional Solr filters

get_dataset

Full metadata for one dataset

list_resources

Files in a dataset

get_resource

Details for a specific file

list_organizations

Browse publishers

get_organization

Details for one publisher

list_tags

Browse available tags

CBS — Centraal Bureau voor de Statistiek (5 tools)

Official Dutch statistics via OData v4: population, economy, trade, housing, labor.

Tool

Purpose

search_cbs_datasets

Search the CBS catalog

get_cbs_dataset

Dataset metadata + dimension list

get_cbs_dimensions

Dimension definitions with sample values

query_cbs_data

Query observations with $select, $filter, pagination

list_cbs_themes

Browse statistical themes

CBS datasets can contain millions of rows. query_cbs_data returns one page at a time with a next_offset hint — ask for more when you need it.

KVK — Chamber of Commerce (2 tools)

Lookup basic company info and filed financial statements by KVK number. Uses KVK's free open-data endpoints.

Tool

Purpose

lookup_company

Basic company info by KVK number

lookup_company_finances

Filed financial statement metadata by KVK number

Limitations (free dataset only):

  • Lookup by 8-digit KVK number only — no search by name, location, or SBI code (that requires a paid KVK subscription)

  • Only BV (private limited) and NV (public limited) companies included — no sole proprietorships, VOFs, etc.

  • Postal codes truncated to the first 2 digits (privacy)

  • Rate limit: 100 requests per 5 minutes

Installation

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "dutch-gov-mcp": {
      "command": "uvx",
      "args": ["dutch-mcp-server"]
    }
  }
}

Restart Claude Desktop. The tools appear in the MCP picker.

Claude Desktop (from source)

{
  "mcpServers": {
    "dutch-gov-mcp": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/dutch-gov-mcp", "run", "dutch-gov-mcp"]
    }
  }
}

Local development

git clone https://github.com/<you>/dutch-gov-mcp
cd dutch-gov-mcp
uv sync
uv run dutch-gov-mcp         # stdio server
uv run pytest -m 'not integration'

Python 3.11+ required.

Install from PyPI

pip install dutch-mcp-server

Examples

Search data.overheid.nl:

search_datasets(query="woningen", max_results=3)
→ {"count": 482, "results": [{"name": "...", "title": "Verkoop woningen", "organization": "...", "tags": [...]}]}

CBS — find, inspect, query:

search_cbs_datasets(query="bevolking")
→ [{"Identifier": "83765NED", "Title": "Kerncijfers wijken en buurten 2017", ...}]

get_cbs_dimensions(dataset_id="83765NED")
→ [{"Identifier": "WijkenEnBuurten", "Title": "Wijken en buurten", "sample_values": [...]}]

query_cbs_data(dataset_id="83765NED", max_results=5)
→ {"rows": [...], "returned": 5, "total": 1617279, "more_available": true, "next_offset": 5}

Future data sources

Planned for future sprints:

  • RDW — Vehicle registration

  • Kadaster BAG — Addresses and buildings

  • PDOK — Geospatial / GIS

Why this exists

France defined what "government AI readiness" looks like. Every government sits on massive public data behind unusable APIs. MCP makes that data accessible to agents. Unofficial, open-source, MIT-licensed.

License

MIT

Available Tools

14 tools
get_cbs_datasetB

Get detailed metadata for a CBS dataset.

Inputs: dataset_id (required). Returns: object

get_cbs_dimensionsC

Get dimension definitions for a CBS dataset.

Dimensions describe what the columns mean and which values they can take.

Inputs: dataset_id (required). Returns: result

get_datasetB

Get detailed metadata for a specific dataset.

Inputs: dataset_id (required). Returns: object

get_organizationB

Get details about a specific publishing organization.

Inputs: organization_id (required), include_datasets. Returns: object

get_resourceC

Get details about a specific file/resource.

Inputs: resource_id (required). Returns: object

list_cbs_themesB

List CBS statistical themes (Arbeid, Bevolking, Economie, etc.).

Inputs: no named parameters. Returns: result

list_organizationsB

List organizations that publish data on data.overheid.nl.

Inputs: include_details. Returns: result

list_resourcesB

List all files and resources in a dataset.

Inputs: dataset_id (required). Returns: result

list_tagsB

List available tags, optionally filtered by a search term.

Inputs: query. Returns: result

lookup_companyA

Look up a Dutch company by KVK number (Chamber of Commerce registry).

Only covers BV (private limited) and NV (public limited) companies in the free open dataset. Postal codes are truncated to the first 2 digits.

Inputs: kvk_number (required). Returns: object

lookup_company_financesB

Look up publicly filed financial statement metadata for a Dutch company.

Only covers BV and NV companies in the free open dataset.

Inputs: kvk_number (required). Returns: object

query_cbs_dataB

Query statistical data from a CBS dataset. Returns observation rows.

Inputs: dataset_id (required), select, filter, max_results, +1 more. Returns: object

search_cbs_datasetsB

Search CBS (Statistics Netherlands) for statistical datasets.

Inputs: query (required), max_results. Returns: result

search_datasetsB

Search Dutch government datasets on data.overheid.nl.

Inputs: query (required), max_results, offset, filter. Returns: object

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 14 tools

    Disambiguation4/5

    Most tools have distinct purposes, such as get_cbs_dataset vs. get_dataset for CBS-specific vs. general metadata, and lookup_company vs. lookup_company_finances for different company data types. However, some overlap exists between search_cbs_datasets and search_datasets, which could cause confusion despite their CBS vs. general focus.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern using snake_case, with clear prefixes like 'get_', 'list_', 'lookup_', 'query_', and 'search_' that align with their actions. This uniformity makes the tool set predictable and easy to navigate.

    Tool Count5/5

    With 14 tools, the server is well-scoped for its domain of Dutch government data access, covering CBS statistics, company lookups, and general dataset searches. Each tool serves a specific function without redundancy, making the count appropriate for the server's purpose.

    Completeness4/5

    The tool set provides comprehensive coverage for querying and retrieving Dutch government data, including metadata, dimensions, resources, and statistical queries. A minor gap is the lack of update or delete operations, but this is reasonable for a read-only data access server, and agents can work around this limitation.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      An MCP server for discovering, downloading, querying, and analyzing datasets from Ontario's open data portals, allowing natural language questions and high-performance analytics via DuckDB.
      23
      1
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      MCP server for accessing Indonesian local government data from Satu Data Ngawi. Enables querying datasets, organizations, categories, and statistics through natural language.
      6
      6 npm
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      An MCP server to find and fetch Norwegian open government data from data.norge.no. Enables search, metadata retrieval, and data download.
      5
      4
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables querying open data platforms like CKAN via natural language. Provides a configurable MCP server with plugins for different data sources.
      MIT