@validatefin/mcp
MCP server to validate SEPA, UBL/Peppol, camt.052/053/054 and ACH/NACHA e-invoice / payment files — 100% locally, no data leaves your machine. Powered by ValidateFin.
Tools
validate_sepa— SEPA Credit Transfer (pain.001) & Direct Debit (pain.008): validates against the official ISO 20022 XSD schemas and the EPC Rulebook business rules (IBAN mod-97, BIC, SEPA character set, mandates, Creditor Scheme Identifier, control sums).validate_ubl— UBL / Peppol BIS Billing 3.0: runs the official EN 16931 + Peppol BIS 3.0 Schematron — the same rule sets used by the official European e-invoicing validators — and returns the failed business rules with their official IDs (BR-, BR-CO-, Peppol rules). Accepts both the UBL and CII syntaxes (auto-detected).validate_xrechnung— German XRechnung (the German CIUS of EN 16931, mandatory for B2G): runs the official EN 16931 core Schematron + the KoSIT XRechnung BR-DE rules — the same rule sets as the official German validator. Accepts UBL and CII. Returns failed rules with their IDs (BR-, BR-DE-).validate_camt— ISO 20022 camt cash-management file — camt.053 (bank-to-customer statement), camt.052 (account report / intraday) or camt.054 (debit/credit notification), versions .02/.06/.08/.10/.11: extracts account, balances and entries (camt.053 also validated against the official ISO 20022 XSD schema).convert_mt940— convert a legacy SWIFT MT940 bank statement (Customer Statement Message) to an ISO 20022 camt.053.001.02 XML statement: parses the balances and transactions, checks that opening balance + turnover = closing balance (RC/RD reversals handled), and returns the camt.053 XML.validate_ach— US ACH / NACHA file (fixed-width Nacha format): validates the 94-character record structure (File Header, Batch Header, Entry Detail, Addenda, Batch/File Control), the ABA routing-number check digit (3-7-1), the entry hash, and all batch & file control totals (debits, credits, entry/addenda count, block count).validate_iban— IBAN (mod-97 checksum, country & length).generate_camt_test— generate a camt.053 test statement from a pain.001 / pain.008 file.
The XML validation tools take the file content as xml (a string) and return the
result (valid/invalid, errors, summary) as JSON. validate_ach and convert_mt940
take the raw file as content, validate_iban takes an iban string, and
generate_camt_test and convert_mt940 return the generated camt.053 XML.
Install
Add this to your MCP client configuration (Claude Desktop, Cursor, etc.):
{
"mcpServers": {
"validatefin": { "command": "npx", "args": ["-y", "@validatefin/mcp"] }
}
}
Then ask your assistant to validate a SEPA, UBL/Peppol, camt.052/053/054 or ACH/NACHA file.
Privacy
Validation runs entirely on your machine. No file or data is ever uploaded to a server — the same privacy guarantee as the ValidateFin website.
License
The MCP server code is MIT. It bundles third-party components under their own licenses:
- SaxonJS (© Saxonica) — runs the official Schematron; redistributed under the SaxonJS license (free, used unmodified).
- EN 16931 validation rules (© European Union / ConnectingEurope) — Apache-2.0.
- Peppol BIS 3.0 validation rules (© OpenPEPPOL).
- libxml2 (libxml2-wasm) — MIT.
ValidateFin is an independent tool and is not certified or endorsed by OpenPEPPOL, the European Commission, or any Peppol Authority. "Official" refers to the rule sets/schemas used, not to any accreditation of this tool.