EuroValidate MCP Server
MCP (Model Context Protocol) server for EuroValidate — lets Claude, ChatGPT and any MCP-capable agent validate EU VAT numbers (VIES), IBANs and EORI customs numbers, look up company data, and fetch VAT rates through one reliable REST API.
Why
Validating European business data normally means juggling five fragmented government services: the VIES SOAP API (which times out constantly — Germany alone generates 95% of its errors), the EC EORI endpoint, HMRC, GLEIF, and national registries. EuroValidate wraps them into one cache-first JSON API with per-country circuit breakers and graceful degradation — and this MCP server exposes it to LLM agents as ready-to-use tools.
Tools
| Tool | What it does |
|---|---|
validate_vat |
Validate an EU/UK VAT number via VIES/HMRC — returns validity + registered company name & address (where the member state exposes it) + confidence level |
validate_iban |
Validate an IBAN (offline MOD-97) and resolve bank name + BIC |
validate_eori |
Validate an EORI customs number (EU / GB / XI Northern Ireland) |
lookup_company_by_lei |
Company data by Legal Entity Identifier (GLEIF) |
lookup_company_by_vat |
Company data by VAT number — fallback for DE/ES where VIES hides names |
get_vat_rates |
Current VAT rates for an EU country |
check_service_status |
Live health of VIES (per country), EORI, HMRC, GLEIF — no API key needed |
Setup
- Get a free API key (100 requests/month, no credit card) at eurovalidate.com.
- Add the server to your MCP client:
Claude Desktop / Claude Code
{
"mcpServers": {
"eurovalidate": {
"command": "uvx",
"args": ["eurovalidate-mcp"],
"env": { "EUROVALIDATE_API_KEY": "your_api_key" }
}
}
}
Claude Code one-liner:
claude mcp add eurovalidate -e EUROVALIDATE_API_KEY=your_api_key -- uvx eurovalidate-mcp
Any other MCP client
Run over stdio:
EUROVALIDATE_API_KEY=your_api_key uvx eurovalidate-mcp
Or install permanently: pip install eurovalidate-mcp → eurovalidate-mcp.
Example prompts
- "Validate VAT number DE811569869 and tell me the company behind it"
- "Check if this IBAN is valid and which bank it belongs to: DE89 3704 0044 0532 0130 00"
- "Is VIES down for Germany right now?"
- "What's the VAT rate in Portugal?"
- "Validate the VAT numbers of these 5 suppliers before I invoice them"
Notes for agents (and humans)
- Germany and Spain never return company name/address over VIES (data-protection law) — use
lookup_company_by_vatas a fallback. - Greece is
ELin VIES butGRin ISO 3166 — both are accepted. - Every response carries
confidence: HIGH|MEDIUM|LOW|UNKNOWNand the upstreamsource, so agents can reason about data freshness when a government service is down. - Free tier: 100 requests/month. Paid plans from €19/mo (500,000 requests/month) at eurovalidate.com.
Environment variables
| Variable | Required | Default |
|---|---|---|
EUROVALIDATE_API_KEY |
yes (except check_service_status) |
— |
EUROVALIDATE_BASE_URL |
no | https://api.eurovalidate.com |
License
MIT
mcp-name: io.github.Nitrych/eurovalidate-mcp
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file eurovalidate_mcp-0.1.1.tar.gz.
File metadata
- Download URL: eurovalidate_mcp-0.1.1.tar.gz
- Upload date:
- Size: 5.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6a69f4dc90ea9f0d9c68a7ec28c9b8d7083405b2f83ee11a09f0c02c9c24a0f
|
|
| MD5 |
215e963aa1d602eae1ac8c1a27f831f0
|
|
| BLAKE2b-256 |
0c562bb537bdf1afc538f33d0738a0f42c20fc489572ff76a8333325ced4cde2
|
Provenance
The following attestation bundles were made for eurovalidate_mcp-0.1.1.tar.gz:
Publisher:
publish.yml on Nitrych/eurovalidate-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
eurovalidate_mcp-0.1.1.tar.gz -
Subject digest:
f6a69f4dc90ea9f0d9c68a7ec28c9b8d7083405b2f83ee11a09f0c02c9c24a0f - Sigstore transparency entry: 2602377784
- Sigstore integration time:
-
Permalink:
Nitrych/eurovalidate-mcp@1e55480b21773f853ae408bff9ecd6634f94d1d7 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/Nitrych
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1e55480b21773f853ae408bff9ecd6634f94d1d7 -
Trigger Event:
push
-
Statement type:
File details
Details for the file eurovalidate_mcp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: eurovalidate_mcp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 6.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1178392a78cafdd6047902dd308a9d67e55ae5b5792ec609b62f14b2e2ede463
|
|
| MD5 |
905594f5a190d8fa721fe59d69962349
|
|
| BLAKE2b-256 |
9b39156bd69f00778b5e863f3a44d8c89ac8eb1ffe8aa34390924389ddd59f44
|
Provenance
The following attestation bundles were made for eurovalidate_mcp-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on Nitrych/eurovalidate-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
eurovalidate_mcp-0.1.1-py3-none-any.whl -
Subject digest:
1178392a78cafdd6047902dd308a9d67e55ae5b5792ec609b62f14b2e2ede463 - Sigstore transparency entry: 2602378133
- Sigstore integration time:
-
Permalink:
Nitrych/eurovalidate-mcp@1e55480b21773f853ae408bff9ecd6634f94d1d7 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/Nitrych
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1e55480b21773f853ae408bff9ecd6634f94d1d7 -
Trigger Event:
push
-
Statement type: