vatnode-mcp
   
Official Model Context Protocol server for vatnode β VAT validation and EU tax data for AI agents.
Lets AI assistants (Claude Desktop, Cursor, ChatGPT, Continue, Cline, β¦) look up VAT rates, check VAT number formats, and validate VAT IDs against the EU VIES service without leaving the chat.
- Free, offline β VAT rates and format checks for 45 European countries, no account needed
- Live validation β verify EU VAT numbers against VIES, get the registered company + audit-grade consultation number (requires a free vatnode API key)
- Five focused tools β well-described for accurate agent tool selection
- Pure stdio, zero hosted dependencies, runs locally via
npx
---
Tools
| Tool | Free | Description | |---|---|---| | get_country_vat_rates | β
| Standard / reduced / super-reduced / parking rates + VAT number format for a country | | list_eu_vat_rates | β
| All 27 EU member states (plus XI for Northern Ireland) at once | | check_vat_format | β
| Offline syntactic check of a VAT number against the country regex | | list_supported_countries | β
| All 45 supported countries and which ones support full VIES validation | | validate_vat_number | π | Live VIES validation β returns validity, company name, address, registration date, and optional consultation number for audit proof |
Free tools work fully offline β data is bundled via eu-vat-rates-data and updated daily from the European Commission TEDB.
validate_vat_number requires a vatnode API key. The free tier includes a monthly request quota β get one in 30 seconds.
---
Install
Claude Desktop
Add to your claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"vatnode": {
"command": "npx",
"args": ["-y", "vatnode-mcp"],
"env": {
"VATNODE_API_KEY": "vat_live_..."
}
}
}
}
Restart Claude Desktop. The vatnode tools will appear in the tool picker.
You can omit VATNODE_API_KEY if you only need the free tools (rates, format checks).
Cursor
Settings β MCP β Add new server:
{
"mcpServers": {
"vatnode": {
"command": "npx",
"args": ["-y", "vatnode-mcp"],
"env": { "VATNODE_API_KEY": "vat_live_..." }
}
}
}
ChatGPT (custom connectors / Apps SDK)
Configure as an stdio MCP server with the same npx -y vatnode-mcp command. See the Apps SDK docs.
Continue / Cline / other clients
Any MCP-compatible client can connect β point it at npx -y vatnode-mcp and (optionally) pass VATNODE_API_KEY via environment.
---
Get an API key
validate_vat_number requires a vatnode account. The platform also offers things the MCP doesn't expose:
- Webhooks for VAT status changes (monitor a customer's VAT continuously)
- Bulk validation
- National-database fallback when VIES is down
- VIES consultation numbers (audit-grade proof of validation)
- Per-key rate limiting + dashboard analytics
---
Example session
You: What's the VAT rate in Finland and Germany? (Agent calls
get_country_vat_ratesfor FI and DE β free, no key.) Agent: Finland's standard VAT is 25.5%, Germany's is 19%. Finland has reduced rates of 14% and 10%; Germany has 7%.
You: Is IE6388047V a valid VAT? (Agent calls
validate_vat_numberβ requires API key.) Agent: Yes, it's valid. Registered to GOOGLE IRELAND LIMITED at Gordon House, Barrow Street, Dublin 4.
---
Configuration
| Env var | Required | Default | Purpose | |---|---|---|---| | VATNODE_API_KEY | for validate_vat_number | β | API key from https://vatnode.dev | | VATNODE_API_URL | no | https://api.vatnode.dev | Override the API base (self-hosting / staging) |
---
Contributing
Bug reports and PRs welcome. Open an issue first for non-trivial changes so we can align on direction.
git clone https://github.com/vatnode/vatnode-mcp.git
cd vatnode-mcp
npm install
npm test
Releasing
Releases are published to npm via Trusted Publishing β no NPM_TOKEN secret, every release signed with npm provenance.
# bump the version in ALL of: package.json, src/index.ts (VERSION),
# and server.json (top-level "version" + packages[0].version β the MCP
# Registry publish reads server.json and rejects a duplicate version).
# Commit, then:
git tag v0.3.2
git push --tags
CI on .github/workflows/release.yml picks up the tag and publishes.
License
MIT











