{
  "markdown": "# camt053-mcp: An MCP Server for ISO 20022 Bank Statements\n\n<p align=\"center\">\n  <img src=\"https://cloudcdn.pro/camt053/v1/logos/camt053.svg\" alt=\"camt053-mcp logo\" width=\"128\" />\n</p>\n\n[![PyPI Version][pypi-badge]][07]\n[![Python Versions][python-versions-badge]][07]\n[![License][license-badge]][01]\n[![Tests][tests-badge]][tests-url]\n[![Quality][quality-badge]][quality-url]\n[![OpenSSF Scorecard][scorecard-badge]][scorecard-url]\n[![OpenSSF Best Practices][bestpractices-badge]][bestpractices-url]\n[![Documentation][docs-badge]][docs-url]\n\n<a href=\"https://glama.ai/mcp/servers/sebastienrousseau/camt053-mcp\"><img src=\"https://glama.ai/mcp/servers/sebastienrousseau/camt053-mcp/badges/score.svg\" alt=\"Glama MCP server score\" /></a>\n\n**A [Model Context Protocol][mcp] server that exposes the [`camt053`][core]\nISO 20022 Bank Statement library as tools for AI agents and assistants** —\ndiscover message types and return reasons, inspect input schemas, validate\nrecords and financial identifiers, parse incoming statements, and generate\nvalidated reversing-entry XML, all from your favourite MCP client.\n\n> **Latest release: v0.0.14** — OAuth 2.1 resource-server auth (RFC 9728)\n> on the HTTP transport, Prometheus metrics, a tamper-evident audit chain,\n> and real-HTTP load benchmarks; 22 MCP tools over stdio or authenticated\n> streamable HTTP, all backed by the shared `camt053.services` layer,\n> for Python 3.10+.\n> [See what's new →][release-0014]\n\n## Contents\n\n- [Overview](#overview)\n- [The ISO 20022 MCP Suite](#the-iso-20022-mcp-suite)\n- [Install](#install)\n- [Quick Start](#quick-start)\n- [Tools](#tools)\n- [Prompts](#prompts)\n- [Resources](#resources)\n- [Rulebook search](#rulebook-search)\n- [Using the tools](#using-the-tools)\n- [The camt053 suite](#the-camt053-suite)\n- [When not to use camt053-mcp](#when-not-to-use-camt053-mcp)\n- [Development](#development)\n- [Security](#security)\n- [Documentation](#documentation)\n- [License](#license)\n- [Contributing](#contributing)\n- [Acknowledgements](#acknowledgements)\n\n## Overview\n\nThe [Model Context Protocol][mcp] (MCP) is an open standard that lets AI agents\nand assistants discover and call external tools in a uniform way. **camt053-mcp**\nis an MCP server that turns the [`camt053`][core] library into a set of\nfirst-class agent tools, so an assistant can read and reverse **ISO 20022\n`camt.05x` cash-management messages** — the standardised bank-to-customer\naccount reports, statements, and debit/credit notifications — directly from a\nconversation.\n\nThe headline capability is the one-shot reversing-entry workflow: read an\nincoming camt.053 statement, find the entries carrying a return reason code\n(e.g. AC04 Closed Account), and emit a validated reversing entry.\n\nEvery tool is a thin, typed wrapper over `camt053.services` — the single shared\nfacade also used by the CLI and REST API — so all interfaces behave identically.\nTools return JSON-serialisable data; on an error they return an\n`{\"error\": ...}` payload rather than raising.\n\n- **Website:** <https://sebastienrousseau.github.io/camt053/>\n- **Source code:** <https://github.com/sebastienrousseau/camt053-mcp>\n- **Bug reports:** <https://github.com/sebastienrousseau/camt053-mcp/issues>\n\nThis package is part of the **camt053 suite** — a set of independently\ninstallable packages that share the `camt053.services` layer:\n\n- [`camt053`][core] — the core library (CLI + REST API)\n- `camt053-mcp` — this package, the **Model Context Protocol** server\n- [`camt053-lsp`][lsp] — the **Language Server Protocol** server for editors\n\n```mermaid\nflowchart LR\n    A[\"MCP client<br/>(Claude Desktop, IDE, agent)\"] -->|stdio| B[\"camt053-mcp\"]\n    B -->|delegates to| C[\"camt053.services\"]\n    C -->|parse + reverse + validate| D[\"ISO 20022 camt.053 XML\"]\n```\n\n## The ISO 20022 MCP Suite\n\n`camt053-mcp` is the **bank-statement flagship** of eight coordinated,\nvendor-neutral MCP servers that together cover the ISO 20022\nbank-statement workflow and the November 2026 structured-address\ncutover — statement depth, whole-catalogue routing, reconciliation,\nmulti-format ingestion, and address remediation. Dependency ranges are kept\naligned across the suite, so the servers co-install cleanly in a single\nPython environment: start with one, add the rest as your workflow grows.\n\n| Server | Scope | Surface | Install | Use it when |\n|------|------|------|------|------|\n| [`camt053-mcp`](#install) | ISO 20022 `camt.053`/`camt.052` bank statements: parse, validate, filter, reverse; MT940/MT942 migration; CBPR+ readiness; journal export | 24 MCP tools · 4 prompts · 3 resources | `pip install camt053-mcp` | You work with bank-to-customer statements end to end — **this package**, the suite's flagship |\n| [`iso20022-mcp`](https://github.com/sebastienrousseau/iso20022-mcp) | Unified gateway: `search` / `describe` / `validate` / `generate` / `parse` meta-tools routed across the `pain` · `pacs` · `camt` · `acmt` families | 7 meta-tools | `pip install \"iso20022-mcp[all]\"` | You want one entry point to every message family |\n| [`reconcile-mcp`](https://github.com/sebastienrousseau/reconcile-mcp) | Matches expected `pain.001` payments against observed `camt.053` entries — exact, partial, one-to-many, many-to-one, every match scored and explained | 7 MCP tools | `pip install reconcile-mcp` | You need explainable statement/payment reconciliation |\n| [`structured-address-fix-mcp`](https://github.com/sebastienrousseau/structured-address-fix-mcp) | ISO 20022 postal-address classification, assessment & remediation for the November 2026 structured-address cutover, plus a high-level orchestration layer — readiness scoring, clearing-profile linting, and audit evidence (`pacs.008` / `pain.001` debtor & creditor addresses) | 9 MCP tools | `pip install structured-address-fix-mcp` | You need debtor/creditor addresses cliff-ready ahead of 14 Nov 2026 |\n| [`iso20022-readiness-suite-mcp`](https://github.com/sebastienrousseau/iso20022-readiness-suite-mcp) | Orchestration gateway: detect → structurally validate → clearing-profile lint → readiness score, plus automated remediation and `pacs.002` bank-response simulation — a meta-client over the foundational servers | 4 MCP tools | `pip install iso20022-readiness-suite-mcp` | You want one high-level readiness / orchestration entry point over the suite |\n| [`iso20022-bank-profile-mcp`](https://github.com/sebastienrousseau/iso20022-bank-profile-mcp) | Manages, validates and serves bank-specific clearing profiles / rule packs (CBPR+, SEPA_Instant, FedNow, Generic); premium rule-pack entitlement gating | 4 MCP tools | `pip install iso20022-bank-profile-mcp` | You lint payments against your own institution's market practice |\n| [`iso20022-evidence-pack-mcp`](https://github.com/sebastienrousseau/iso20022-evidence-pack-mcp) | Compiles readiness findings, remediation diffs and simulated responses into a sealed, Ed25519-signable audit evidence pack | 6 MCP tools | `pip install iso20022-evidence-pack-mcp` | You need tamper-evident audit / certification artifacts |\n\nIn one line each: **`camt053-mcp`** is the bank-statement flagship\n(deepest camt.05x surface, stdio + authenticated streamable HTTP);\n**`iso20022-mcp`** is the generic message toolkit (a handful of verbs\nover the whole catalogue); **`reconcile-mcp`** is the reconciliation\nworkflow (did the money we expected actually arrive?);\n**`bankstatementparser-mcp`** is the ingestion layer (many formats in,\none transaction shape out); and **`structured-address-fix-mcp`** is the\npostal-address specialist (debtor/creditor addresses cliff-ready for the\nNov 2026 cutover).\n\nThe suite also includes per-family servers —\n[`pain001-mcp`](https://github.com/sebastienrousseau/pain001-mcp)\n(credit transfer initiation),\n[`pacs008-mcp`](https://github.com/sebastienrousseau/pacs008-mcp)\n(FI-to-FI credit transfers), and\n[`acmt001-mcp`](https://github.com/sebastienrousseau/acmt001-mcp)\n(account management) — reachable through the `iso20022-mcp` gateway.\n\n## Install\n\n**camt053-mcp** runs on macOS, Linux, and Windows and requires **Python 3.10+**\nand **pip**. It pulls in the core `camt053` library and the MCP SDK\nautomatically.\n\n```sh\npython -m pip install camt053-mcp\n```\n\n<details>\n<summary>Using an isolated virtual environment (recommended)</summary>\n\n```sh\npython -m venv venv\nsource venv/bin/activate        # macOS/Linux\nvenv\\Scripts\\activate           # Windows\npython -m pip install -U camt053-mcp\n```\n</details>\n\n## Quick Start\n\nFor the 10-minute install → MCP client config → first conversation\ntutorial, see [`docs/quickstart.md`](docs/quickstart.md).\n\nLaunch the server over stdio (the FastMCP default transport):\n\n```sh\ncamt053-mcp\n```\n\nRegister it with any MCP client (e.g. Claude Desktop) by adding it to the\nclient's configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"camt053\": { \"command\": \"camt053-mcp\" }\n  }\n}\n```\n\nThe agent can then call the tools below to parse incoming statements and\ngenerate validated reversing entries on demand.\n\nFor a shared, multi-tenant deployment, the server can also serve\n**streamable HTTP** with mandatory bearer-token auth and optional\nper-request `Camt053-Account` tenant scoping:\n\n```sh\nCAMT053_MCP_TOKEN=<secret> camt053-mcp --transport=http --bind=0.0.0.0:8080\n```\n\nSee [Multi-tenant HTTP deployment](docs/quickstart.md#6-multi-tenant-http-deployment)\nand the [deployment cookbook](docs/deployment-cookbook.md).\n\n## Tools\n\nAll tools delegate to the shared `camt053.services` layer, so they behave\nidentically to the CLI and REST API.\n\n- `list_message_types` — List the 3 supported camt.05x message types\n- `list_return_reasons` — List the ISO external return reason codes\n- `get_required_fields` — Required input fields for a message type\n- `get_input_schema` — Full input JSON Schema for a message type\n- `validate_records` — Validate flat records against a message type\n- `validate_identifier` — Validate an IBAN, BIC, or LEI\n- `validate_statement` — Validate a statement against its XSD and detect its type\n- `convert_mt940_to_camt053` — MT940 → camt.053 migration: convert legacy SWIFT MT940 statement text into a camt.053 structure\n- `convert_mt942` — MT942 → camt.052 migration: convert legacy SWIFT MT942 interim transaction report text into a camt.052 structure\n- `check_cbpr_readiness` — Flag CBPR+ Nov 2026 cliff issues in a statement\n- `get_cbpr_cutover_date` — Return the official CBPR+ cutover date (2026-11-16)\n- `cite_rulebook` — Quote a curated SEPA / CBPR+ / HVPS+ rulebook clause\n- `list_rulebook_clauses` — List the available rulebook citations (optionally filtered)\n- `search_rulebook_vector` — Find rulebook clauses by natural-language similarity when you do not know the clause id (needs the `[vector]` extra)\n- `export_journal` — Export statement entries as Xero `BankTransactions` or QBO `JournalEntry` payloads\n- `list_export_journal_targets` — List the accounting-platform targets `export_journal` supports\n- `classify_entry` — Classify a statement entry via MCP Sampling (uses the *client's* LLM)\n- `list_classify_entry_categories` — List the default categories `classify_entry` uses\n- `get_tenant_context` — Report the multi-tenant scope of the call (the `Camt053-Account` header on the HTTP transport; `None` over stdio)\n- `parse_statement` — Parse an incoming camt.05x statement into data\n- `detect_statement_anomalies` — Screen a statement for duplicate references, unusual fee deductions, and velocity spikes (deterministic rules, no model or network)\n- `list_entries` — List every entry across all statements (paginated)\n- `filter_entries` — Return entries carrying a return reason code (paginated)\n- `generate_reversal` — Generate a validated reversing-entry XML document\n\n### Pagination\n\n`list_entries` and `filter_entries` accept optional `offset` (default `0`) and\n`limit` (default `None`) parameters. When `limit` is omitted they return the\nfull list, exactly as before. When `limit` is given they return a paginated\nenvelope instead:\n\n```json\n{\"total\": 42, \"offset\": 10, \"limit\": 5, \"entries\": [/* ... */]}\n```\n\nA negative `offset` or `limit` returns an `{\"error\": ...}` payload, consistent\nwith the rest of the server's error convention.\n\n## Prompts\n\n| Prompt | Purpose |\n|--------|---------|\n| `reversal_preview` | Guide an agent through a safe, confirm-before-generate reversal workflow |\n| `reconcile_against_pain001` | Match booked statement entries to the originating pain.001 batch on `EndToEndId`, surface exceptions |\n| `find_duplicate_entries` | Flag exact + suspected duplicates on a statement with confidence and next-action hints |\n| `match_to_invoice_set` | Match incoming credits to an AR invoice ledger (exact + remittance + partial / multi-invoice tiers) |\n\n`reversal_preview` takes an optional `reason_code` (default `\"AC04\"`) and\nreturns a four-step message template: parse the statement, preview the matching\nentries with `filter_entries`, confirm with the operator, then call\n`generate_reversal`. The other three prompts take no parameters and return a\ntwo-message user-prompt + assistant-walkthrough template the agent can replay\nverbatim.\n\n## Resources\n\nResources give an agent read-only reference context it can load without\ncalling a tool. Each resource returns a JSON payload.\n\n| Resource URI | Contents |\n|--------------|----------|\n| `camt053://return-reasons` | The ISO external return-reason catalog — a list of `{\"code\", \"name\"}` |\n| `camt053://message-types` | The supported camt.05x message types — a list of `{\"message_type\", \"name\"}` |\n| `camt053://session/{session_id}/bank/{bic}` | Templated per-(session, bank) context: parsed BIC country/kind, recommended SEPA / CBPR+ / HVPS+ rulebook clauses, Nov 2026 cutover date |\n\nBoth back onto the shared `camt053.services` layer, so they stay in sync with\nthe equivalent `list_return_reasons` / `list_message_types` tools. On an error\nthey return a serialised `{\"error\": ...}` payload.\n\n## Rulebook search\n\n`cite_rulebook` needs a `scheme`, `version` and `clause` id. When you know\nwhat a rule is *about* but not what it is *called*,\n`search_rulebook_vector` closes that gap:\n\n```jsonc\nsearch_rulebook_vector(\"structured address requirement\", top_k=3)\n{\n  \"query\": \"structured address requirement\",\n  \"returned\": 3,\n  \"results\": [\n    {\n      \"scheme\": \"HVPS+\",\n      \"version\": \"2026\",\n      \"clause\": \"structured-address-alignment\",\n      \"title\": \"HVPS+ aligns with CBPR+ structured-address rule\",\n      \"score\": 0.702729,\n      // ...\n    }\n  ]\n}\n```\n\nTake the winning `scheme`/`version`/`clause` and pass it to\n`cite_rulebook` for the full citation.\n\n**It is not a neural embedding model.** Retrieval is a deterministic\nlexical-vector cosine search: each clause and the query are hashed into a\nfixed 256-dimension term-frequency vector — whole words plus character\n3- and 4-grams, so `address` matches `addresses` without a stemmer —\nbucketed with BLAKE2b rather than Python's salted `hash`, and ranked with\n`sqlite-vec`. That has three consequences worth knowing:\n\n- The same query always returns the same ranking, in every process and\n  every CI run.\n- Nothing is downloaded and no network call happens at query time.\n- It matches wording, not meaning. A query sharing no vocabulary with a\n  clause will not find it, however related the concepts are.\n\n**Only the curated summaries are indexed** — the same ones behind\n`cite_rulebook`. No external, copyrighted, or auth-gated rulebook text is\nstored or searched.\n\n### Installing it\n\n`sqlite-vec` ships in an optional extra and is imported lazily, so the\nbase install pulls in nothing:\n\n```sh\npython -m pip install 'camt053-mcp[vector]'\n```\n\nWithout it the tool returns a plain error payload naming the extra\nrather than raising, so a client that calls it on a base install gets a\nusable message instead of a stack trace.\n\nThere is a second requirement that is easy to miss: **your Python must be\nbuilt with loadable SQLite extension support**. The python.org macOS\ninstallers and several distribution packages ship it disabled, in which\ncase `sqlite-vec` installs perfectly and still cannot load. The tool\ndetects that and says so, naming the build flag\n(`--enable-loadable-sqlite-extensions`) to look for. Homebrew, `uv` and\n`pyenv` builds normally have it enabled.\n\nSee [docs/vector-search.md](docs/vector-search.md) for the retrieval\ndesign and its limits.\n\n## Using the tools\n\nYou can invoke the tools in-process — without a transport — straight through the\nFastMCP instance. This mirrors what an agent receives over stdio. The runnable\nversion of this snippet lives in [`examples/mcp_tools.py`](examples/mcp_tools.py).\n\n```python\nimport asyncio\n\nfrom camt053_mcp.server import server\n\n# A complete camt.053 statement with one entry returned AC04 (Closed Account).\nstatement_xml = \"\"\"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Document xmlns=\"urn:iso:std:iso:20022:tech:xsd:camt.053.001.14\">\n  <BkToCstmrStmt>\n    <GrpHdr><MsgId>STMT-MSG-0001</MsgId><CreDtTm>2026-06-15T08:00:00</CreDtTm></GrpHdr>\n    <Stmt>\n      <Id>STMT-0001</Id><CreDtTm>2026-06-15T08:00:00</CreDtTm>\n      <Acct><Id><IBAN>GB29NWBK60161331926819</IBAN></Id><Ccy>EUR</Ccy></Acct>\n      <Bal><Tp><CdOrPrtry><Cd>CLBD</Cd></CdOrPrtry></Tp>\n        <Amt Ccy=\"EUR\">10000.00</Amt><CdtDbtInd>CRDT</CdtDbtInd>\n        <Dt><Dt>2026-06-15</Dt></Dt></Bal>\n      <Ntry>\n        <NtryRef>NTRY-0001</NtryRef>\n        <Amt Ccy=\"EUR\">1500.00</Amt><CdtDbtInd>CRDT</CdtDbtInd>\n        <Sts><Cd>BOOK</Cd></Sts>\n        <NtryDtls><TxDtls>\n          <RtrInf><Rsn><Cd>AC04</Cd></Rsn></RtrInf>\n        </TxDtls></NtryDtls>\n      </Ntry>\n    </Stmt>\n  </BkToCstmrStmt>\n</Document>\"\"\"\n\n\nasync def main() -> None:\n    async def call(name, args):\n        result = await server.call_tool(name, args)\n        # mcp 2.x returns a CallToolResult (read .content); 1.x\n        # returns the content list, or a (content, meta) tuple.\n        content = getattr(result, \"content\", None)\n        if content is None:\n            # mcp 2.x returns a CallToolResult (read .content); 1.x\n            # returns the content list, or a (content, meta) tuple.\n            content = getattr(result, \"content\", None)\n            if content is None:\n                content = result[0] if isinstance(result, tuple) else result\n        return content[0].text if content else \"\"\n\n    # Validate an identifier.\n    print(await call(\"validate_identifier\",\n                     {\"kind\": \"bic\", \"value\": \"NWBKGB2LXXX\"}))\n    # -> {\"kind\": \"bic\", \"value\": \"NWBKGB2LXXX\", \"valid\": true}\n\n    # Page through the matching entries (paginated envelope).\n    print(await call(\"filter_entries\",\n                     {\"xml\": statement_xml, \"reason_code\": \"AC04\",\n                      \"offset\": 0, \"limit\": 5}))\n    # -> {\"total\": 1, \"offset\": 0, \"limit\": 5, \"entries\": [...]}\n\n    # Generate a validated reversing-entry document for the AC04 entries.\n    xml = await call(\"generate_reversal\",\n                     {\"xml\": statement_xml, \"reason_code\": \"AC04\"})\n    print(xml[:46])  # -> <?xml version=\"1.0\" encoding=\"UTF-8\"?> ...\n\n\nasyncio.run(main())\n```\n\nRun it directly:\n\n```sh\npython examples/mcp_tools.py\n```\n\n## The camt053 suite\n\n`camt053-mcp` is part of a set of independently installable packages\nbuilt around the [`camt053`][core] library — pick whichever ones\nyour stack needs:\n\n| Package | Role |\n| :--- | :--- |\n| [`camt053`](https://pypi.org/project/camt053/) | Core library + CLI + FastAPI REST API |\n| [`camt053-mcp`](https://pypi.org/project/camt053-mcp/) | **Model Context Protocol server (this package)** |\n| [`camt053-lsp`](https://pypi.org/project/camt053-lsp/) | Language Server Protocol server (for editors) |\n| [`camt053-writer-xlsx`](https://pypi.org/project/camt053-writer-xlsx/) | Excel `.xlsx` writer for parsed statements |\n| [`camt053-loader-mt940`](https://pypi.org/project/camt053-loader-mt940/) | SWIFT MT940 → camt.053 loader |\n\nEvery tool here is a thin typed wrapper over `camt053.services` —\nthe same facade the CLI, REST API, and LSP use — so all four\ninterfaces behave identically.\n\n## When not to use camt053-mcp\n\n- **You have no MCP client.** This server only makes sense paired\n  with an MCP-aware host (Claude Desktop, the IDE plugins, an agent\n  framework). For scripted / CI use, the camt053 CLI and REST API\n  cover the same ground without the stdio protocol overhead.\n- **You need to run as a long-lived daemon without an MCP client.**\n  The server does run persistently over the streamable HTTP transport\n  (`--transport=http`), but every consumer must still speak MCP\n  JSON-RPC. For plain REST semantics, use the camt053 FastAPI service.\n- **You need streaming responses.** Tool calls return whole values,\n  not streams. Large statements are paginated through the existing\n  `list_entries(xml, offset, limit)` envelope, not chunked over\n  multiple responses.\n- **You need per-user OAuth flows brokered for you.** The HTTP\n  transport authenticates callers (OAuth 2.1 resource server with\n  RFC 9728 metadata, or a static bearer token in dev mode) and scopes\n  requests via the `Camt053-Account` tenant header, but it does not\n  run an authorization server: bring your own IdP.\n- **You need to *generate* pain.001 outbound payment files.** Out of\n  scope; use [`pain001-mcp`](https://github.com/sebastienrousseau/pain001-mcp).\n\n## Development\n\n**camt053-mcp** uses [Poetry](https://python-poetry.org/) and\n[mise](https://mise.jdx.dev/).\n\n```bash\ngit clone https://github.com/sebastienrousseau/camt053-mcp.git && cd camt053-mcp\nmise install\npoetry install\npoetry shell\n```\n\nA `Makefile` orchestrates the quality gates (kept in lockstep with CI):\n\n```bash\nmake check        # all gates (REQUIRED before commit)\nmake test         # pytest\nmake lint         # ruff + black\nmake type-check   # mypy --strict\n```\n\n## Security\n\n`camt053-mcp` is a thin wrapper — every tool delegates to\n`camt053.services`, where the defence-in-depth (defusedxml +\n`xml_guard` byte cap + DOCTYPE / ENTITY pre-flight) lives. Tools\ncatch `(ValueError, Camt053Error)` and return an `{\"error\": ...}`\nenvelope per the suite convention; they never propagate raw\nexceptions to the MCP client. Reporting practice, supported\nversions, and the full supply-chain posture are documented in\n[`SECURITY.md`](SECURITY.md). Vulnerabilities go via GitHub Private\nVulnerability Reporting, not public issues.\n\n## Documentation\n\n- [`README.md`](README.md) — this file\n- [`CHANGELOG.md`](CHANGELOG.md) — release notes\n- [`SECURITY.md`](SECURITY.md) — disclosure + supported versions\n- [`SUPPORT.md`](SUPPORT.md) — how to get help\n- [`MAINTAINERS.md`](MAINTAINERS.md) — who can merge\n- [`examples/`](examples/) — runnable scripts\n- [`glama.json`](glama.json) — Glama directory manifest\n- [`docs/iso20022-mcp-servers-compared.md`](docs/iso20022-mcp-servers-compared.md) — ISO 20022 MCP servers compared (2026)\n- [`docs/BENCHMARKS.md`](docs/BENCHMARKS.md) — measured HTTP load benchmarks\n- Glama listing: <https://glama.ai/mcp/servers/sebastienrousseau/camt053-mcp>\n\n## Related MCP Servers\n\nPart of the **ISO 20022 MCP Suite** — open-source, Apache-2.0 licensed MCP servers for banking and financial-services AI agents:\n\n| Server | Purpose |\n|---|---|\n| [`pain001-mcp`](https://github.com/sebastienrousseau/pain001-mcp) | Generate & validate ISO 20022 pain.001 payment files (v03–v12, pain.008, SEPA) with rulebook checks |\n| [`pacs008-mcp`](https://github.com/sebastienrousseau/pacs008-mcp) | Generate, validate, parse & scheme-check ISO 20022 pacs.008 FI-to-FI credit transfers + Nov-2026 address linting |\n| [`acmt001-mcp`](https://github.com/sebastienrousseau/acmt001-mcp) | Generate & validate ISO 20022 acmt account-management messages |\n| [`noyalib-mcp`](https://github.com/sebastienrousseau/noyalib) | Lossless YAML 1.2 parsing, formatting & validation (Rust, 100% spec compliance) |\n\n---\n\n## MCP Registry\n\n`mcp-name: io.github.sebastienrousseau/camt053-mcp`\n\n---\n\n## License\n\nLicensed under the [Apache License, Version 2.0][01]. Any contribution submitted\nfor inclusion shall be licensed as above, without additional terms.\n\n## Contributing\n\nContributions are welcome — see the [contributing instructions][04]. Thanks to\nall [contributors][05].\n\n## Acknowledgements\n\nBuilt on the [`camt053`][core] ISO 20022 Bank Statement library and the\n[Model Context Protocol][mcp] Python SDK.\n\n[01]: https://opensource.org/license/apache-2-0/\n[04]: https://github.com/sebastienrousseau/camt053-mcp/blob/main/CONTRIBUTING.md\n[05]: https://github.com/sebastienrousseau/camt053-mcp/graphs/contributors\n[07]: https://pypi.org/project/camt053-mcp/\n[core]: https://github.com/sebastienrousseau/camt053\n[lsp]: https://github.com/sebastienrousseau/camt053-lsp\n[mcp]: https://modelcontextprotocol.io\n[release-0014]: https://github.com/sebastienrousseau/camt053-mcp/releases/tag/v0.0.14\n[docs-badge]: https://img.shields.io/badge/Docs-camt053-blue?style=for-the-badge\n[docs-url]: https://sebastienrousseau.github.io/camt053/\n[license-badge]: https://img.shields.io/pypi/l/camt053-mcp?style=for-the-badge\n[pypi-badge]: https://img.shields.io/pypi/v/camt053-mcp?style=for-the-badge\n[python-versions-badge]: https://img.shields.io/pypi/pyversions/camt053-mcp.svg?style=for-the-badge\n[quality-badge]: https://img.shields.io/github/actions/workflow/status/sebastienrousseau/camt053-mcp/ci.yml?branch=main&label=Quality&style=for-the-badge\n[quality-url]: https://github.com/sebastienrousseau/camt053-mcp/actions/workflows/ci.yml\n[scorecard-badge]: https://api.scorecard.dev/projects/github.com/sebastienrousseau/camt053-mcp/badge?style=for-the-badge\n[scorecard-url]: https://scorecard.dev/viewer/?uri=github.com/sebastienrousseau/camt053-mcp\n[bestpractices-badge]: https://www.bestpractices.dev/projects/13374/badge\n[bestpractices-url]: https://www.bestpractices.dev/projects/13374\n[tests-badge]: https://img.shields.io/github/actions/workflow/status/sebastienrousseau/camt053-mcp/ci.yml?branch=main&label=Tests&style=for-the-badge\n[tests-url]: https://github.com/sebastienrousseau/camt053-mcp/actions/workflows/ci.yml\n",
  "bytes": 25960,
  "sha": "572271e89b71e56b64b8e001e4666b374b92a802b8f8a8f3e8cd56294675ce62",
  "repo_slug": "sebastienrousseau/camt053-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_sebastienrousseau_camt053_mcp_c5624350/readme"
}