@omnizoek/mcp-server
v0.1.6
Published
MCP server that exposes OmniZoek Dutch government data APIs as AI agent tools (Claude Desktop, Cursor, and any MCP-compatible client).
Maintainers
Readme
@omnizoek/mcp-server
Model Context Protocol server for OmniZoek — exposes 16 Dutch government data APIs as AI agent tools.
Add this server to Claude Desktop, Cursor, or any MCP-compatible AI client and your agent can instantly look up Dutch addresses, validate IBANs, geocode locations, look up exchange rates, check company LEI records, check vehicle history, check ZE-zone compliance, look up energy labels, and more — all backed by live BAG, EP-Online, RDW, VIES, NS, ENTSO-E, PDOK, ECB, and GLEIF data.
Available tools
| Tool | Description |
|---|---|
| omnizoek_address_enrich | Validate and enrich a Dutch address — BAG ID, building year, surface area, coordinates, energy label |
| omnizoek_iban_to_bic | Resolve an IBAN to BIC/SWIFT and bank name |
| omnizoek_vat_verify | Verify a European VAT number via EU VIES |
| omnizoek_validate_finance | Checksum-validate a Dutch BSN or IBAN |
| omnizoek_energy_label | Look up the official EP-Online energy label for an address |
| omnizoek_emission_zone | Check whether a vehicle (by kenteken) may enter Dutch ZE-zones |
| omnizoek_transit_disruptions | Get current NS train disruptions, optionally filtered by station |
| omnizoek_grid_trigger | Get current ENTSO-E electricity price and whether the negative-price trigger is active |
| omnizoek_minimum_wage | Look up the Dutch statutory minimum wage for a given age |
| omnizoek_holiday_surcharge | Check if a date is a Dutch public holiday and get the wage surcharge multiplier |
| omnizoek_exchange_rates | Get the latest ECB daily euro foreign exchange reference rates |
| omnizoek_vat_rates | Get VAT rates for an EU country (full category breakdown for NL) |
| omnizoek_geocode | Forward geocode a free-text query to Dutch coordinates (PDOK Locatieserver) |
| omnizoek_reverse_geocode | Reverse geocode WGS84 coordinates to a Dutch address |
| omnizoek_lei_lookup | Look up a legal entity by LEI code or search by company name (GLEIF) |
| omnizoek_vehicle_history | Full vehicle history from RDW: specs, fuel, APK expiry, open recalls |
Quick start
You need an OmniZoek API key. Get one free at omnizoek.nl →
Use an omni_test_... key during development — it returns fixture data and is never billed.
Claude Desktop
Add the following to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"omnizoek": {
"command": "npx",
"args": ["-y", "@omnizoek/mcp-server"],
"env": {
"OMNIZOEK_API_KEY": "omni_live_YOUR_KEY_HERE"
}
}
}
}Restart Claude Desktop. You'll see the OmniZoek tools available in the tool panel.
Cursor
Add to your Cursor MCP config (~/.cursor/mcp.json or the workspace .cursor/mcp.json):
{
"mcpServers": {
"omnizoek": {
"command": "npx",
"args": ["-y", "@omnizoek/mcp-server"],
"env": {
"OMNIZOEK_API_KEY": "omni_live_YOUR_KEY_HERE"
}
}
}
}Docker
docker run --rm -i \
-e OMNIZOEK_API_KEY=omni_live_YOUR_KEY_HERE \
omnizoek/mcp-serverTo use via Docker in your MCP config:
{
"mcpServers": {
"omnizoek": {
"command": "docker",
"args": ["run", "--rm", "-i", "-e", "OMNIZOEK_API_KEY=omni_live_YOUR_KEY_HERE", "omnizoek/mcp-server"]
}
}
}Environment variables
| Variable | Required | Description |
|---|---|---|
| OMNIZOEK_API_KEY | ✅ Yes | Your OmniZoek API key. Prefix omni_test_ for sandbox mode. |
Example prompts
Once configured, you can ask your AI agent:
- "What street is postcode 1012LG house number 1?"
- "Is IBAN NL91ABNA0417164300 valid, and what bank is it from?"
- "Can a diesel Euro 4 van with kenteken AB123C drive through an Amsterdam ZE-zone?"
- "What is the minimum wage for a 19-year-old in the Netherlands today?"
- "Is 25 December 2025 a public holiday, and what is the retail surcharge multiplier?"
- "What is the current electricity price in the Netherlands, and is the negative-price trigger active?"
- "What are today's euro exchange rates from the ECB?"
- "What are the VAT rates in the Netherlands, broken down by category?"
- "Geocode the address Damrak 1 Amsterdam to coordinates."
- "What address is nearest to coordinates 52.3756, 4.8951?"
- "Look up the LEI record for ING Bank N.V. in the Netherlands."
- "What is the APK expiry date and are there any open recalls for kenteken AB123C?"
Remote deployment (HTTP / Glama.ai Connector)
The package ships a second entry point — dist/http.js — that exposes the same
16 tools via MCP Streamable HTTP transport. Use this to run OmniZoek MCP as a
remote server.
Run locally
PORT=3000 OMNIZOEK_API_KEY=omni_live_... npx omnizoek-mcp-http
# MCP endpoint: POST http://localhost:3000/mcp
# Health check: GET http://localhost:3000/healthDocker (HTTP mode)
docker run -p 3000:3000 \
-e OMNIZOEK_API_KEY=omni_live_... \
-e HTTP_MODE=1 \
omnizoek/mcp-serverCloud Run (Google Cloud)
gcloud run deploy omnizoek-mcp \
--image omnizoek/mcp-server \
--set-env-vars HTTP_MODE=1 \
--port 3000 \
--allow-unauthenticated
# Map custom domain (CNAME mcp → ghs.googlehosted.com already set in DNS)
gcloud run domain-mappings create \
--service omnizoek-mcp \
--domain mcp.omnizoek.nl \
--region europe-west4The MCP endpoint will be available at https://mcp.omnizoek.nl/mcp.
Authentication
Pass your OmniZoek API key on each request via either header:
Authorization: Bearer omni_live_YOUR_KEY
X-Api-Key: omni_live_YOUR_KEYThe server requires a key on every request — there is no server-side fallback key. This means the deployed endpoint cannot be abused to bill a single account; each caller must supply their own key.
For private/single-tenant deployments you can set
OMNIZOEK_ALLOW_ENV_KEY=1alongsideOMNIZOEK_API_KEYto use the env var as a fallback.
Glama.ai Connector submission
| Field | Value |
|---|---|
| Name | OmniZoek |
| Description | 16 Dutch government data APIs — address enrichment, IBAN→BIC, VAT verify, geocode, vehicle history, energy labels, exchange rates and more. |
| Server URL | https://mcp.omnizoek.nl/mcp |
| Private Notes | Authorization: Bearer omni_test_YOUR_KEY (use a test key — never billed) |
Development
# Clone the monorepo
git clone https://github.com/JakoRens/searchworks-nl.git
cd searchworks-nl/omni-mcp
# Install dependencies
npm install
# Build
npm run build
# Run locally (requires OMNIZOEK_API_KEY)
OMNIZOEK_API_KEY=omni_test_... npm startTest with MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.jsSet OMNIZOEK_API_KEY in the inspector's environment variable panel, then use the tool explorer to call any tool interactively.
