Unified Model Context Protocol (MCP) gateway for ISO 20022: one small set of meta-tools (search, describe, validate, generate, parse) routing across the pain, pacs, camt and acmt message families.
Project description
iso20022-mcp: The Unified MCP Gateway for ISO 20022
One Model Context Protocol server, one small set of meta-tools —
search, list_families, describe, validate, generate, parse — that
route across every ISO 20022 message family (pain · pacs · camt ·
acmt). Install one thing, discover the whole suite: an agent sees a handful
of verbs instead of the 60+ tools spread across five individual servers.
Latest release: v0.0.1 — 6 routing meta-tools over stdio, light core (only
mcp), backing family servers as optional extras, for Python 3.10+. The front door to the ISO 20022 MCP suite.
Why a gateway
The suite has a dedicated, best-in-class server per message family. That depth
is the point — but an agent shouldn't have to know which of five servers and
which of sixty tools it needs before it can act. iso20022-mcp is the thin
routing layer on top: ask it in plain terms ("I need to reconcile a
statement", "generate a credit transfer"), and it points you at — or executes
against — the right family. Small tool surface, whole-suite reach.
Install
The core is light. Add the families you need as extras (or [all]):
pip install "iso20022-mcp[all]" # every family
pip install "iso20022-mcp[pacs,camt]" # just interbank + statements
pip install iso20022-mcp # core only; families report as not installed
# or run without installing:
uvx --from "iso20022-mcp[all]" iso20022-mcp
MCP client config (e.g. Claude Desktop):
{
"mcpServers": {
"iso20022": {
"command": "iso20022-mcp"
}
}
}
The meta-tools
| Tool | What it does | Families |
|---|---|---|
search |
Find message types by use-case / keyword ("reconciliation", "pacs.008"). | all (catalogue) |
list_families |
List families, their capabilities, and which backing packages are installed. | all |
describe |
Required fields + input JSON Schema for a message type. | all |
validate |
Validate records against a message type's schema. | all |
generate |
Generate a validated ISO 20022 XML message from records. | pain · pacs · acmt |
parse |
Parse an inbound ISO 20022 XML message into structured data. | pacs · camt |
Operations are capability-aware: generate on a camt.053 statement (an
inbound format) returns a clear, explanatory error rather than failing
obscurely, and every "package not installed" case tells you exactly what to
pip install.
Routing
| Prefix | Family | Backing server | generate | parse |
|---|---|---|---|---|
pain |
Customer Credit Transfer Initiation | pain001-mcp |
✅ | — |
pacs |
FI-to-FI Customer Credit Transfer | pacs008-mcp |
✅ | ✅ |
camt |
Bank-to-Customer Statement | camt053-mcp |
— | ✅ |
acmt |
Account Opening Instruction | acmt001-mcp |
✅ | — |
The gateway imports each backing server lazily and optionally — the core
depends only on mcp, and a family's server is loaded on first use. Message
types are matched on their prefix (pacs.008.001.08 → pacs).
Example
search(query="reconciliation")
→ [{ "message_type": "camt.053", "family": "camt", "package": "camt053-mcp" }]
describe(message_type="pacs.008") # required fields + input schema
validate(message_type="pacs.008", records=[…])
generate(message_type="pain.001", records=[…]) # → validated XML
parse(message_type="camt.053", xml="<Document>…")
For the dedicated reconciliation engine that matches camt.053 statements
against expected pain.001 payments, see reconcile-mcp.
The suite
iso20022-mcp is the front door to a family of vendor-neutral, Python-native
ISO 20022 MCP servers:
pain001-mcp— customer credit transfer initiation.pacs008-mcp— FI-to-FI credit transfers.camt053-mcp— bank-to-customer statements.acmt001-mcp— account opening instructions.reconcile-mcp— explainable statement/payment reconciliation.bankstatementparser-mcp— MT94x / BAI2 / OFX parsing.
Development
git clone https://github.com/sebastienrousseau/iso20022-mcp
cd iso20022-mcp
python -m venv .venv && . .venv/bin/activate
pip install -e . && pip install pytest pytest-cov ruff black mypy
pytest # 100% branch coverage gate (backends faked)
ruff check iso20022_mcp tests && black --check iso20022_mcp tests && mypy iso20022_mcp
Licence
Licensed under the Apache License, Version 2.0.
mcp-name: io.github.sebastienrousseau/iso20022-mcp
Project details
Release history Release notifications | RSS feed
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 iso20022_mcp-0.0.1.tar.gz.
File metadata
- Download URL: iso20022_mcp-0.0.1.tar.gz
- Upload date:
- Size: 11.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aaae6cdf4c3871690f2ce27f945570709f3c1ac8bf31d4617d94a52f41e35cb2
|
|
| MD5 |
dfd18f3606da7a5f529ecb7308b40224
|
|
| BLAKE2b-256 |
d420fe13baade9caedb9ed53b56765253bc0399c90a8d1cd07574618fe6e7a60
|
Provenance
The following attestation bundles were made for iso20022_mcp-0.0.1.tar.gz:
Publisher:
release.yml on sebastienrousseau/iso20022-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
iso20022_mcp-0.0.1.tar.gz -
Subject digest:
aaae6cdf4c3871690f2ce27f945570709f3c1ac8bf31d4617d94a52f41e35cb2 - Sigstore transparency entry: 2152302299
- Sigstore integration time:
-
Permalink:
sebastienrousseau/iso20022-mcp@e688572268ac1538ce5e857541596c216bb5d143 -
Branch / Tag:
refs/tags/v0.0.1 - Owner: https://github.com/sebastienrousseau
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e688572268ac1538ce5e857541596c216bb5d143 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file iso20022_mcp-0.0.1-py3-none-any.whl.
File metadata
- Download URL: iso20022_mcp-0.0.1-py3-none-any.whl
- Upload date:
- Size: 14.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8696e96795ba40e20a3e522601cf4d7b5177dda66edd7f13e7847433e1cb3667
|
|
| MD5 |
1127ec2d75ac21fb679fcd1408deb2c3
|
|
| BLAKE2b-256 |
d434e82837647c9974f0c61ebed3b75830e5b27b648a774d344c1d3df2a5464d
|
Provenance
The following attestation bundles were made for iso20022_mcp-0.0.1-py3-none-any.whl:
Publisher:
release.yml on sebastienrousseau/iso20022-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
iso20022_mcp-0.0.1-py3-none-any.whl -
Subject digest:
8696e96795ba40e20a3e522601cf4d7b5177dda66edd7f13e7847433e1cb3667 - Sigstore transparency entry: 2152302303
- Sigstore integration time:
-
Permalink:
sebastienrousseau/iso20022-mcp@e688572268ac1538ce5e857541596c216bb5d143 -
Branch / Tag:
refs/tags/v0.0.1 - Owner: https://github.com/sebastienrousseau
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e688572268ac1538ce5e857541596c216bb5d143 -
Trigger Event:
workflow_dispatch
-
Statement type: