Skip to main content

Unofficial MCP server for Dutch government open data (data.overheid.nl, CBS, KVK)

Project description

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.

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

Claude Desktop

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

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

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

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.

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dutch_gov_mcp-0.3.0.tar.gz (88.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dutch_gov_mcp-0.3.0-py3-none-any.whl (14.0 kB view details)

Uploaded Python 3

File details

Details for the file dutch_gov_mcp-0.3.0.tar.gz.

File metadata

  • Download URL: dutch_gov_mcp-0.3.0.tar.gz
  • Upload date:
  • Size: 88.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for dutch_gov_mcp-0.3.0.tar.gz
Algorithm Hash digest
SHA256 3dd78912291628138f33d3215b3193a78b5b2cd61e248d24737910e1abc45851
MD5 f48df0cb912b1741b50881999cbc5f61
BLAKE2b-256 4e2e0be0431eeeca3e4e290fb142ecb933883836243effdfbd7d19276911354d

See more details on using hashes here.

File details

Details for the file dutch_gov_mcp-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: dutch_gov_mcp-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 14.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for dutch_gov_mcp-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 527a1ef38cbf79628be2f9676fe3e0ba29a0371030cd5b8a68e9e503e61f30dc
MD5 8710d2673347a723546b9bed19f4b9b7
BLAKE2b-256 123af5724b1def69d4d6b25d1664d4d7a4754b886b0a602309fbca3c1d58d9c3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page