About eu-registry
eu-registry is an MCP server for cross-border company lookups across supported EU and EEA registries. It combines national registry data with GLEIF/LEI and VIES sources, with data depth varying by country.
Key features
- 01Company search by name or national ID
- 02Registry details and entity status
- 03Parent-company resolution
- 04EU VAT validation
- 05Country-specific data coverage
Use cases
- 01Checking a company in another EU country
- 02Validating an EU VAT number
- 03Finding a parent company across borders
MCP support
Exposes company search, company lookup, and VAT validation tools to MCP clients. It can be used as a stdio server or through its hosted MCP endpoint.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://eu-registry.cz-agents.dev/mcpclaude mcp add --transport http dev-cz-agents-eu-registry https://eu-registry.cz-agents.dev/mcp{"mcpServers":{"dev-cz-agents-eu-registry":{"type":"http","url":"https://eu-registry.cz-agents.dev/mcp"}}}Open in Cursor{"servers":{"dev-cz-agents-eu-registry":{"type":"http","url":"https://eu-registry.cz-agents.dev/mcp"}}}Open in VS Code{"mcpServers":{"dev-cz-agents-eu-registry":{"type":"http","url":"https://eu-registry.cz-agents.dev/mcp"}}}{"mcpServers":{"dev-cz-agents-eu-registry":{"serverUrl":"https://eu-registry.cz-agents.dev/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
3| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Company name or partial company name. |
| limit | integer | No | Max results per search, default 10, max 20. |
| country | string | No | ISO alpha-2 code or supported country name, e.g. "GB", "UK", or "United Kingdom". |
Details
From the project README@czagents/eu-registry
European business registry lookups in one MCP — verify companies across 16 EU/EEA countries via official national registries and GLEIF/LEI + VIES. Full national data for 9 countries; partial Lithuania JAR data; identity + ownership baseline for 6 other countries. Entity status, registration data, addresses, parent-company resolution, and EU VAT validation. Built for cross-border due-diligence and KYC directly in your AI assistant.
Part of the cz-agents suite.
Supported registries
Full national data (entity, status, address, registration date):
| Country | Source | Notes |
|---|---|---|
| GB | Companies House | Requires free CH_API_KEY from developer.company-information.service.gov.uk |
| SK | ORSR / RPO | No auth required |
| PL | KRS | No auth required |
| FR | SIRENE | No auth required |
| NO | Brønnøysund (BRREG) | No auth required |
| DK | CVR (Erhvervsstyrelsen) | Optional DK_CVR_USER/DK_CVR_PASS (free, request at [email protected]); public fallback otherwise |
| FI | PRH YTJ Open Data v3 | Free, no API key, CC BY 4.0 |
| EE | RIK open data dump | Daily bulk ingest to local SQLite via EE_RIK_DB_PATH; no API key, CC BY 4.0 |
| SE | Bolagsverket HVD API | Free OAuth credentials from Bolagsverket; exact organisation-number lookup. Name search uses GLEIF/LEI because HVD has no name-search endpoint. |
Partial national-registry data: Lithuania
| Country | Source | Notes |
|---|---|---|
| LT | Registrų centras JAR open data | Monthly local SQLite ingest via LT_JAR_DB_PATH; CC BY 4.0. Name, code and registration date are served from JAR. The official legal-status classifier label is exposed as status_label; application status remains unknown and normalized_status null. Addresses and officers are not published or enriched; JADIS and other enrichment are out of scope. VIES/GLEIF remains the fallback if the local store is unavailable or has no matching record. |
Identity + ownership baseline (name, address, status, VAT validity, GLEIF/LEI parent-company resolution — no officer/board data; for registries that are paywalled):
| Country | Source | Notes |
|---|---|---|
| DE | GLEIF/LEI + VIES | No auth required |
| NL | GLEIF/LEI + VIES | No auth required |
| IT | GLEIF/LEI + VIES | No auth required |
| AT | GLEIF/LEI + VIES | No auth required |
| ES | GLEIF/LEI + VIES | VIES returns validity only for ES (no name/address) |
| BE | GLEIF/LEI + VIES | No auth required |
Tools
Each example is an MCP tool-call argument object.
search_company— searches supported non-Czech registries by full or partial company name. Do not use it when you already have an exact national ID, or expect full national-registry data for GLEIF-only countries. Example:{"name":"Tesco","country":"GB","limit":5}.get_company— fetches a supported non-Czech company by its national ID and country. Do not use it for Czech companies, or with a name instead of the country-specific identifier. Example:{"id":"14356670","country":"GB"}.lookup_company_by_vat— validates an EU VAT number through VIES and returns disclosed registration details. Do not use it to obtain director/board data, or assume name/address are available for every member state. Example:{"vat":"NL123456789B01"}.
Configuration
| Variable | Required | Description |
|---|---|---|
CH_API_KEY | No | UK Companies House API key. Without it GB adapter returns empty results. |
GLEIF_CACHE_PATH | No | Path to SQLite cache file for GLEIF responses (DE/NL/IT/AT/ES/BE/LT). Falls back to in-memory if unset. |
GLEIF_CACHE_TTL_DAYS | No | Cache TTL in days. Default: 7. |
DK_CVR_USER / DK_CVR_PASS | No | Denmark CVR data credentials (free, request at [email protected]). Without them the DK adapter uses its public fallback. |
EE_RIK_DB_PATH | No | Path to SQLite store for Estonia RIK bulk data. Default: ./ee-rik.db. |
LT_JAR_DB_PATH | No | Path to SQLite store for Lithuania Registrų centras JAR open data. Default: ./lt-jar.db. |
SE_BOLAGSVERKET_CLIENT_ID / SE_BOLAGSVERKET_CLIENT_SECRET | No | Sweden Bolagsverket HVD OAuth credentials. Without them exact SE lookups return no result; name search still uses GLEIF. |
PORT | No | HTTP transport port. Default: 3036. |
Usage
npx (stdio transport)
{
"mcpServers": {
"eu-registry": { "command": "npx", "args": ["-y", "@czagents/eu-registry"] }
}
}
Hosted endpoint (no install)
{
"mcpServers": {
"eu-registry": { "url": "https://eu-registry.cz-agents.dev/mcp" }
}
}
Related packages
@czagents/ares— Czech ARES business registry@czagents/dd— Czech due-diligence aggregator (includesget_eu_parentandget_eu_dd_reporton Compliance tier)@czagents/sanctions— EU FSF + OFAC sanctions screening
Development
npm run build
npm test
npm run start:http
Estonia bulk ingest:
EE_RIK_DB_PATH=/absolute/path/ee-rik.db npm run build --workspace=@czagents/eu-registry
EE_RIK_DB_PATH=/absolute/path/ee-rik.db npm run ingest:ee-rik --workspace=@czagents/eu-registry
Lithuania JAR bulk ingest (run monthly):
LT_JAR_DB_PATH=/absolute/path/lt-jar.db npm run build --workspace=@czagents/eu-registry
LT_JAR_DB_PATH=/absolute/path/lt-jar.db npm run ingest:lt-jar --workspace=@czagents/eu-registry
LT results expose the upstream Last-Modified value as source_snapshot_at when available, separately expose ingested_at, and carry the CC BY 4.0 attribution. The official JAR open-data endpoint reported zero non-null values for both pilnas_adresas and adresas; the implementation therefore always returns no address and marks address not published in open data. It does not fetch JADIS, officers, or GLEIF-derived addresses.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.