VIES VAT Validator MCP

io.github.PanStoriesPublished by GitHub account PanStoriesv1.0.1Updated Oct 24, 2026

Validate EU VAT numbers against the official VIES service with a local pre-check.

VerifiedStreamable HTTPWeb executableFinanceBusiness & Commerce

Overview

AI-generated overview

Validates EU VAT numbers via the official VIES service, with a free local format pre-check and bilingual error codes.

What you can do
  • Check a VAT number's format locally, with no network call
  • Validate a VAT number against the official EU VIES service, optionally using a cache
  • List supported countries with native names and local VAT number terms
  • Look up the bilingual error-code table
  • Read bundled resources and prompts for VAT compliance guidance and result explanations
When to use it
Useful for cross-border EU/UK B2B trade and e-commerce workflows where a counterparty's VAT number must be verified for reverse-charge or compliance records, and where a quick offline format check is wanted before a live lookup.
Requirements
Remote Streamable HTTP endpoint on Apify, authenticated with an Apify token sent as an Authorization Bearer header; the README also documents a local Node.js install built from source. Network access is needed for live VIES checks.
Before you install
Live validation is billed per event on Apify (a small per-call fee, rising on the date stated in the README); format, country and error-code queries are free. Submitted VAT numbers are forwarded to the official EU VIES service and may be kept in a memory-only cache. An Apify token is required for the remote endpoint.

Installation

In SourceWeft

  1. Open VIES VAT Validator MCP in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.PanStories%2Fvies-vat-validator-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

{
  "mcpServers": {
    "vies-vat-validator": {
      "type": "http",
      "url": "https://neeenja--vies-vat-validator-mcp.apify.actor/mcp"
    }
  }
}

README

VIES VAT Validator MCP 🇪🇺

[M8ven Verified] [M8ven Score]

VIES VAT Validator MCP validates EU VAT numbers through the official free VIES SOAP API, wrapped with a local format pre-check + free TTL cache and bilingual (中文 / English) error codes. A "regulatory must-have" compliance tool for cross-border e-commerce and trade sellers.

Current version: 1.0.3 · License: MIT · Trust: built read-only, no secret exfiltration, self-healing bilingual errors.

EN — Two-stage EU VAT validation: free offline format pre-check, then live VIES, with bilingual error codes. 简体中文 — 两段式欧盟 VAT 校验:本地免费格式预检 + 官方 VIES 实查,中英双语错误码。 繁體中文 — 兩段式歐盟 VAT 校驗:本地免費格式預檢 + 官方 VIES 實查,中英雙語錯誤碼。

🌐 English · 简体中文 · 繁體中文

It lives atLink
MCP endpointhttps://neeenja--vies-vat-validator-mcp.apify.actor/mcp
Apify Storehttps://apify.com/neeenja/vies-vat-validator-mcp
Sourcehttps://github.com/PanStories/vies-vat-validator-mcp
Featured onSartbot Featured

English

Why this exists

  • Regulatory must-have — EU B2B transactions require verifying the counterparty's VAT number (reverse charge / compliance proof).
  • VIES is slow and flaky — the official SOAP endpoint rate-limits and goes down often, so a cache + graceful degradation are mandatory.
  • Zero cold-start cost — a free official data source wrapped with a thin layer + bilingual, explainable output, sold per-event.

What you get

CapabilityNotesPricing
validate_vatfree local format check, then optional live VIES verification; structured + bilingual errors$0.0005 / event (→ $0.005 from 2026-11-06)
check_vat_formatpure local regex format check — no network, freefree
list_supported_countriessupported countries — native name + local VAT term + 中文/ENfree
get_error_codesfull bilingual error-code tablefree
resourcesvat://error-codes / vat://supported-countries / vat://specfree
promptsvat_compliance_guide / explain_vat_resultfree

Covers EU 27 + GB + XI (Northern Ireland). Every country also carries its native name and — far more useful — the local term for the VAT number, which is what people actually search for:

代码 Code母语名 Native当地 VAT 叫法 Local VAT term中文EnglishEU
ATÖsterreichUID-Nummer奥地利Austria✅
BEBelgië / BelgiqueBTW-nummer / numéro de TVA比利时Belgium✅
BGБългарияДДС номер保加利亚Bulgaria✅
CYΚύπρος / KıbrısΑριθμός ΦΠΑ塞浦路斯Cyprus✅
CZČeskoDIČ捷克Czech Republic✅
DEDeutschlandUSt-IdNr.德国Germany✅
DKDanmarkCVR-nummer丹麦Denmark✅
EEEestiKMKR number爱沙尼亚Estonia✅
ELΕλλάδαΑριθμός ΦΠΑ希腊Greece✅
ESEspañaNIF (IVA)西班牙Spain✅
FISuomiALV-numero芬兰Finland✅
FRFrancenuméro de TVA法国France✅
HRHrvatskaPDV broj克罗地亚Croatia✅
HUMagyarországÁFA-szám匈牙利Hungary✅
IEIreland / ÉireVAT number爱尔兰Ireland✅
ITItaliaPartita IVA意大利Italy✅
LTLietuvaPVM kodas立陶宛Lithuania✅
LULëtzebuerg / Luxembourgnuméro TVA卢森堡Luxembourg✅
LVLatvijaPVN numurs拉脱维亚Latvia✅
MTMaltaVAT number马耳他Malta✅
NLNederlandbtw-nummer荷兰Netherlands✅
PLPolskaNIP波兰Poland✅
PTPortugalNIF葡萄牙Portugal✅
RORomâniacod de TVA罗马尼亚Romania✅
SESverigemomsregistreringsnummer瑞典Sweden✅
SISlovenijaID za DDV斯洛文尼亚Slovenia✅
SKSlovenskoIČ DPH斯洛伐克Slovakia✅
GBUnited KingdomVAT registration number英国United Kingdom—
XINorthern IrelandVAT registration number (XI)北爱尔兰Northern Ireland—

叫法取当地商务常用写法;部分国家有不止一种官方接受的写法,表中列最主要的那种。 Terms follow common local business usage — some countries accept more than one form; the main one is shown.

Quick start (local)

bash
npm installnpm run buildnpm start            # stdio transport, connects to any MCP clientnpm test             # vitest, all greennpm run verify       # generate verify-report.html with real payloads

Connect with an MCP client (stdio)

json
{  "mcpServers": {    "vat-validator": {      "command": "node",      "args": ["/abs/path/vies-vat-validator-mcp/dist/index.js"]    }  }}

Connect over HTTP (remote / Apify)

Point your MCP client at the Streamable HTTP endpoint:

https://neeenja--vies-vat-validator-mcp.apify.actor/mcp

with the header Authorization: Bearer <APIFY_TOKEN>.

Example calls

Format pre-check (free)

json
{ "name": "check_vat_format", "arguments": { "vat": "FR123456789" } }

→ { "formatValid": true, "normalized": "FR123456789", "pattern": "^([A-Z]{2})?\\d{9}$" }

Live verification (paid event)

json
{ "name": "validate_vat", "arguments": { "vat": "FR123456789", "useCache": true, "live": true } }

→ { "valid": true, "formatValid": true, "viesValid": true, "source": "vies", "name": "...", "address": "..." }

Error codes (excerpt)

Code中文EN
VAT_FORMAT_INVALID格式不符format mismatch
VAT_VIES_INVALIDVIES 判定无效VIES says invalid
VIES_MS_UNAVAILABLE成员国系统不可用member state down
VIES_TIMEOUT超时timeout
NETWORK_ERROR网络错误network error

Full table via get_error_codes or vat://error-codes.

Deploy (Apify Pay-Per-Event)

bash
npm run apify:login      # complete KYC yourself first (one-time)npm run apify:validate   # validate actor.jsonnpm run apify:push       # publish to Apify Store

Pricing lives in .actor/actor.json → pricingEvents: format / error / country queries are free; only mcp-validate-vat is billed.

Design red lines

  • No express / soap / fast-xml-parser: the SOAP envelope is hand-built and the response parsed with namespace-agnostic regex.
  • Never crash: VIES faults / network errors map to bilingual error codes.
  • Free layer (format check + cache) guarantees zero cold-start cost.

See SPEC.md for the full contract.


简体中文

为什么做这个

  • 监管刚需 —— 欧盟 B2B 交易要求核验对方 VAT 税号(逆向征收 / 合规凭证)。
  • VIES 又慢又抖 —— 官方 SOAP 接口频繁限流、偶发停机,缓存 + 优雅降级是必选项。
  • 零冷启动成本 —— 免费官方数据源,叠加一层封装 + 可解释的双语输出,按事件计费。

你能拿到什么

能力说明计费
validate_vat先做免费本地格式校验,再按需调用欧盟官方 VIES 接口核验真实性;结构化 + 双语错误$0.0005 / 次(2026-11-06 起 $0.005)
check_vat_format纯本地正则格式校验,零网络、零成本免费
list_supported_countries返回支持国家(母语名 + 当地 VAT 叫法 + 中/英)免费
get_error_codes返回完整中英双语错误码表免费
resourcesvat://error-codes / vat://supported-countries / vat://spec免费
promptsvat_compliance_guide / explain_vat_result免费

覆盖 EU 27 + GB + XI(北爱尔兰)。每个国家还带母语名,以及更实用的当地对 VAT 号的叫法——这才是当地人真正会搜的词:

代码 Code母语名 Native当地 VAT 叫法 Local VAT term中文EnglishEU
ATÖsterreichUID-Nummer奥地利Austria✅
BEBelgië / BelgiqueBTW-nummer / numéro de TVA比利时Belgium✅
BGБългарияДДС номер保加利亚Bulgaria✅
CYΚύπρος / KıbrısΑριθμός ΦΠΑ塞浦路斯Cyprus✅
CZČeskoDIČ捷克Czech Republic✅
DEDeutschlandUSt-IdNr.德国Germany✅
DKDanmarkCVR-nummer丹麦Denmark✅
EEEestiKMKR number爱沙尼亚Estonia✅
ELΕλλάδαΑριθμός ΦΠΑ希腊Greece✅
ESEspañaNIF (IVA)西班牙Spain✅
FISuomiALV-numero芬兰Finland✅
FRFrancenuméro de TVA法国France✅
HRHrvatskaPDV broj克罗地亚Croatia✅
HUMagyarországÁFA-szám匈牙利Hungary✅
IEIreland / ÉireVAT number爱尔兰Ireland✅
ITItaliaPartita IVA意大利Italy✅
LTLietuvaPVM kodas立陶宛Lithuania✅
LULëtzebuerg / Luxembourgnuméro TVA卢森堡Luxembourg✅
LVLatvijaPVN numurs拉脱维亚Latvia✅
MTMaltaVAT number马耳他Malta✅
NLNederlandbtw-nummer荷兰Netherlands✅
PLPolskaNIP波兰Poland✅
PTPortugalNIF葡萄牙Portugal✅
RORomâniacod de TVA罗马尼亚Romania✅
SESverigemomsregistreringsnummer瑞典Sweden✅
SISlovenijaID za DDV斯洛文尼亚Slovenia✅
SKSlovenskoIČ DPH斯洛伐克Slovakia✅
GBUnited KingdomVAT registration number英国United Kingdom—
XINorthern IrelandVAT registration number (XI)北爱尔兰Northern Ireland—

叫法取当地商务常用写法;部分国家有不止一种官方接受的写法,表中列最主要的那种。 Terms follow common local business usage — some countries accept more than one form; the main one is shown.

快速开始(本地)

bash
npm installnpm run buildnpm start            # stdio 传输,接任意 MCP 客户端npm test             # vitest 全绿npm run verify       # 生成真实 payload 验证报告 verify-report.html

与 MCP 客户端对接(stdio)

json
{  "mcpServers": {    "vat-validator": {      "command": "node",      "args": ["/abs/path/vies-vat-validator-mcp/dist/index.js"]    }  }}

通过 HTTP 对接(远程 / Apify)

把你的 MCP 客户端指向 Streamable HTTP 端点:

https://neeenja--vies-vat-validator-mcp.apify.actor/mcp

并带上请求头 Authorization: Bearer <APIFY_TOKEN>。

调用示例

格式预校验(免费)

json
{ "name": "check_vat_format", "arguments": { "vat": "FR123456789" } }

→ { "formatValid": true, "normalized": "FR123456789", "pattern": "^([A-Z]{2})?\\d{9}$" }

实查(付费事件)

json
{ "name": "validate_vat", "arguments": { "vat": "FR123456789", "useCache": true, "live": true } }

→ { "valid": true, "formatValid": true, "viesValid": true, "source": "vies", "name": "...", "address": "..." }

错误码(节选)

代码中文EN
VAT_FORMAT_INVALID格式不符format mismatch
VAT_VIES_INVALIDVIES 判定无效VIES says invalid
VIES_MS_UNAVAILABLE成员国系统不可用member state down
VIES_TIMEOUT超时timeout
NETWORK_ERROR网络错误network error

完整表见 get_error_codes 或 vat://error-codes。

部署(Apify Pay-Per-Event)

bash
npm run apify:login      # 本人先完成 KYC(一次性)npm run apify:validate   # 校验 actor.jsonnpm run apify:push       # 上架

计费见 .actor/actor.json 的 pricingEvents:格式 / 错误 / 国家查询免费,仅 mcp-validate-vat 计费。

设计红线

  • 不引入 express / soap / fast-xml-parser:SOAP 信封手写、响应用命名空间无关的正则提取。
  • 永不崩溃:VIES 故障 / 网络错误全部映射为双语错误码。
  • 免费层(格式校验 + 缓存)保证冷启动零成本。

完整契约见 SPEC.md。


繁體中文

為什麼做這個

  • 監管剛需 —— 歐盟 B2B 交易要求核驗對方 VAT 稅號(逆向徵收 / 合規憑證)。
  • VIES 又慢又抖 —— 官方 SOAP 介面頻繁限流、偶發停機,快取 + 優雅降級是必選項。
  • 零冷啟動成本 —— 免費官方資料源,疊加一層封裝 + 可解釋的雙語輸出,按事件計費。

你能拿到什麼

能力說明計費
validate_vat先做免費本地格式校驗,再依需求呼叫歐盟官方 VIES 介面核驗真實性;結構化 + 雙語錯誤$0.0005 / 次(2026-11-06 起 $0.005)
check_vat_format純本地正則格式校驗,零網路、零成本免費
list_supported_countries回傳支援國家(母語名 + 當地 VAT 叫法 + 中/英)免費
get_error_codes回傳完整中英雙語錯誤碼表免費
resourcesvat://error-codes / vat://supported-countries / vat://spec免費
promptsvat_compliance_guide / explain_vat_result免費

涵蓋 EU 27 + GB + XI(北愛爾蘭)。每個國家還帶母語名,以及更實用的當地對 VAT 號的叫法——這才是當地人真正會搜的詞:

代码 Code母语名 Native当地 VAT 叫法 Local VAT term中文EnglishEU
ATÖsterreichUID-Nummer奥地利Austria✅
BEBelgië / BelgiqueBTW-nummer / numéro de TVA比利时Belgium✅
BGБългарияДДС номер保加利亚Bulgaria✅
CYΚύπρος / KıbrısΑριθμός ΦΠΑ塞浦路斯Cyprus✅
CZČeskoDIČ捷克Czech Republic✅
DEDeutschlandUSt-IdNr.德国Germany✅
DKDanmarkCVR-nummer丹麦Denmark✅
EEEestiKMKR number爱沙尼亚Estonia✅
ELΕλλάδαΑριθμός ΦΠΑ希腊Greece✅
ESEspañaNIF (IVA)西班牙Spain✅
FISuomiALV-numero芬兰Finland✅
FRFrancenuméro de TVA法国France✅
HRHrvatskaPDV broj克罗地亚Croatia✅
HUMagyarországÁFA-szám匈牙利Hungary✅
IEIreland / ÉireVAT number爱尔兰Ireland✅
ITItaliaPartita IVA意大利Italy✅
LTLietuvaPVM kodas立陶宛Lithuania✅
LULëtzebuerg / Luxembourgnuméro TVA卢森堡Luxembourg✅
LVLatvijaPVN numurs拉脱维亚Latvia✅
MTMaltaVAT number马耳他Malta✅
NLNederlandbtw-nummer荷兰Netherlands✅
PLPolskaNIP波兰Poland✅
PTPortugalNIF葡萄牙Portugal✅
RORomâniacod de TVA罗马尼亚Romania✅
SESverigemomsregistreringsnummer瑞典Sweden✅
SISlovenijaID za DDV斯洛文尼亚Slovenia✅
SKSlovenskoIČ DPH斯洛伐克Slovakia✅
GBUnited KingdomVAT registration number英国United Kingdom—
XINorthern IrelandVAT registration number (XI)北爱尔兰Northern Ireland—

叫法取当地商务常用写法;部分国家有不止一种官方接受的写法,表中列最主要的那种。 Terms follow common local business usage — some countries accept more than one form; the main one is shown.

快速開始(本地)

bash
npm installnpm run buildnpm start            # stdio 傳輸,接任意 MCP 用戶端npm test             # vitest 全綠npm run verify       # 產生真實 payload 驗證報告 verify-report.html

與 MCP 用戶端對接(stdio)

json
{  "mcpServers": {    "vat-validator": {      "command": "node",      "args": ["/abs/path/vies-vat-validator-mcp/dist/index.js"]    }  }}

透過 HTTP 對接(遠端 / Apify)

將你的 MCP 用戶端指向 Streamable HTTP 端點:

https://neeenja--vies-vat-validator-mcp.apify.actor/mcp

並帶上請求標頭 Authorization: Bearer <APIFY_TOKEN>。

呼叫範例

格式預校驗(免費)

json
{ "name": "check_vat_format", "arguments": { "vat": "FR123456789" } }

→ { "formatValid": true, "normalized": "FR123456789", "pattern": "^([A-Z]{2})?\\d{9}$" }

實查(付費事件)

json
{ "name": "validate_vat", "arguments": { "vat": "FR123456789", "useCache": true, "live": true } }

→ { "valid": true, "formatValid": true, "viesValid": true, "source": "vies", "name": "...", "address": "..." }

錯誤碼(節選)

代碼中文EN
VAT_FORMAT_INVALID格式不符format mismatch
VAT_VIES_INVALIDVIES 判定無效VIES says invalid
VIES_MS_UNAVAILABLE成員國系統不可用member state down
VIES_TIMEOUT逾時timeout
NETWORK_ERROR網路錯誤network error

完整表見 get_error_codes 或 vat://error-codes。

部署(Apify Pay-Per-Event)

bash
npm run apify:login      # 本人先完成 KYC(一次性)npm run apify:validate   # 校驗 actor.jsonnpm run apify:push       # 上架

計費見 .actor/actor.json 的 pricingEvents:格式 / 錯誤 / 國家查詢免費,僅 mcp-validate-vat 計費。

設計紅線

  • 不引入 express / soap / fast-xml-parser:SOAP 信封手寫、回應用命名空間無關的正則提取。
  • 永不崩潰:VIES 故障 / 網路錯誤全部映射為雙語錯誤碼。
  • 免費層(格式校驗 + 快取)保證冷啟動零成本。

完整契約見 SPEC.md。


License

MIT — see LICENSE.

Privacy

Read-only and stateless — no accounts, no personal data collected. Submitted VAT numbers are forwarded to the official EU VIES service and may be held in a memory-only cache. See PRIVACY.md.


Support · 赞助 · 贊助

EN — VIES VAT Validator MCP is open source (MIT), ad-free. It is funded by the community, not by ads. If it powers your agents or workflow, please support it:

简体中文 — VIES VAT Validator MCP 开源(MIT)、无广告,由社区资助而非广告。若它支撑了你的智能体或工作流,欢迎赞助:点本仓库的 Sponsor 按钮(跳转 Ko-fi)或前往 https://ko-fi.com/panstories

繁體中文 — VIES VAT Validator MCP 開源(MIT)、無廣告,由社群資助而非廣告。若它支撐了你的智能體或工作流,歡迎贊助:點本倉庫的 Sponsor 按鈕(導向 Ko-fi)或前往 https://ko-fi.com/panstories

Thank you! · 谢谢 · 謝謝 💙

Source: README.md at commit e70b23c

Tools

0
This server asks for a credential such as an API key, so SourceWeft could not read its tools without one and has not indexed them.

Version history

1
  1. v1.0.1LatestOct 9, 2026

Score

85% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts