Vatnode

by vatnode

1 stars
355 downloads
Not rated
GitHub Website

About

Official Model Context Protocol (MCP) server for vatnode — EU VAT validation, rates, and format checks for AI agents (Claude, Cursor, ChatGPT).

Details

Author
vatnode
GitHub stars
1
Downloads
355
Categories
Finance, Security, Other

- Free offline VAT rate and format checks for 45 countries
- Live VIES validation with audit-grade consultation number
- Five clearly described tools for accurate agent selection
- Pure stdio, runs locally via npx, no hosted dependencies
- Data bundled from EU Commission, updated daily

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Vatnode
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Add Vatnode to your MCP client configuration (e.g., Claude Desktop, Cursor, ChatGPT) by specifying the command npx -y vatnode-mcp and optionally setting the VATNODE_API_KEY environment variable. Free tools (rates, format checks) work without an API key; live validation requires a free vatnode account and key.

list_eu_vat_rates

Returns current VAT rates for all EU member states (plus XI for Northern Ireland). Read-only and offline: no network call, no API key, no rate limit, no side effects. Takes no arguments. Output: { rates: Array<{ countryCode, countryName, vatName, vatAbbr, currency, standardRate, reducedRates[], superReducedRate, parkingRate, vatNumberFormat, vatNumberPattern, updatedAt }>, count, updatedAt }. Rates are percentages (e.g. 25.5). Use when the user asks for an overview, a comparison across countries, or "all EU VAT rates". For a single country prefer get_country_vat_rates. Data is sourced from the EU Commission TEDB and updated daily. Free, no API key required.

get_country_vat_rates

Returns the standard, reduced, super-reduced and parking VAT rates for a single European country, plus the VAT number format and regex. Read-only and offline: no network call, no API key, no rate limit, no side effects. Accepts ISO 3166-1 alpha-2 codes (DE, FR, IT, …); also covers non-EU European jurisdictions where available (NO, CH, GB, UA, TR, …). Output: { countryCode, countryName, vatName, vatAbbr, currency, standardRate, reducedRates[], superReducedRate, parkingRate, vatNumberFormat, vatNumberPattern, updatedAt }; rates are percentages and may be null where not applicable. Returns an error if the country code is unknown. Use when the user asks "what is the VAT rate in X" or needs the VAT number format for a country. Free, no API key required.

check_vat_format

Performs an offline syntactic check of a VAT number against the country-specific regex pattern. Read-only and offline: no network call, no API key, no rate limit, no side effects. Does NOT verify the VAT with VIES (a valid format does not mean the VAT is real or active) — use validate_vat_number for that. Output: { input, normalized, countryCode, validFormat (boolean), error }; countryCode is null when the prefix is unknown. Use when the user wants a quick sanity check on the shape of a VAT ID without burning a quota call. Free, no API key required.

list_supported_countries

Returns every country the vatnode server has VAT data for (EU-27 + XI for Northern Ireland + ~17 other European jurisdictions such as NO, CH, GB, UA, TR). Read-only and offline: no network call, no API key, no rate limit, no side effects. Takes no arguments. Output: { countries: Array<{ countryCode, countryName, isEUMember, viesValidationSupported }>, count, euCount, updatedAt }, sorted by countryCode. `viesValidationSupported: true` means validate_vat_number can do live VIES verification; non-EU jurisdictions are rate-lookup only. Use to discover coverage or to pick a valid countryCode before calling get_country_vat_rates or validate_vat_number.

validate_vat_number

Verifies an EU VAT number against the official VIES service and returns validity, company name, address, registration date and other metadata. The audit-grade VIES consultation number (`consultationNumber`) is produced when a requester VAT is configured once in the vatnode dashboard Settings — a one-time account setup, not a per-call parameter. With a requester configured, every response is either a success with a non-null `consultationNumber` or an error; without one, `consultationNumber` is null and national-registry fallback stays enabled. Use whenever the user wants to confirm a VAT is real, look up the company behind a VAT, or needs evidence for accounting/compliance. Side effects: makes an authenticated network call to api.vatnode.dev (which queries the EU VIES service) and consumes one request from your monthly quota; it is read-only (verifies, never mutates) and safe to retry. Requires a vatnode API key (free tier available; set VATNODE_API_KEY). Only EU-27 + XI (Northern Ireland) are supported by VIES; other countries return an error.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "vatnode": {
            "vatnode": {
                "command": "npx",
                "args": [
                    "-y",
                    "vatnode-mcp"
                ],
                "env": {
                    "VATNODE_API_KEY": "<YOUR_VATNODE_API_KEY>"
                }
            }
        }
    }
}

McpServers

{
    "vatnode": {
        "command": "npx",
        "args": [
            "-y",
            "vatnode-mcp"
        ],
        "env": {
            "VATNODE_API_KEY": "<YOUR_VATNODE_API_KEY>"
        }
    }
}

vatnode-mcp

npm version
Tests
License: MIT
vatnode/vatnode-mcp MCP server

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

Sign up free →

---

Example session

> You: What's the VAT rate in Finland and Germany?
>
> (Agent calls get_country_vat_rates for 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.

```bash

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.