Iso20022 Readiness Suite Mcp

io.github.sebastienrousseau由 GitHub 帳號 sebastienrousseau 發布v0.0.6更新於 Oct 27, 2026

Orchestration MCP server: ISO 20022 readiness scoring, remediation, bank-response simulation.

已驗證STDIO僅桌面金融開發者工具

概覽

AI 產生的概覽

編排型 MCP 伺服器:為 ISO 20022 支付報文做就緒度評分、提出修復建議,並模擬銀行回應。

可以做什麼
  • 列出可用的清算設定檔(CBPR+、SEPA_Instant、FedNow、Generic)及其市場慣例規則
  • 辨識、結構驗證、依設定檔檢查並給出支付報文對目標清算設定的就緒度評分
  • 依清算設定執行自動修復,例如 2026 年 11 月的結構化地址修正
  • 產生 pacs.002 狀態報告,模擬銀行對發起報文回覆 ACCP、RJCT 或 PDNG
  • 透過 stdio 組合六個基礎 ISO 20022 子伺服器,發生錯誤時以 JSON 資料回傳而非拋出例外
適用情境
適合需要讓助理判斷某筆支付報文是否符合清算方案要求、若不符合該如何修改的情境。適用於 CBPR+、SEPA Instant、FedNow 及通用設定檔的遷移與測試工作,也適合想用單一閘道取代逐一呼叫驗證器的使用者。
執行需求
本機安裝 Python 3.10+ 的 pip 套件,由支援 MCP 的用戶端以 stdio 啟動。就緒度檢查與修復工具會透過 uvx 啟動六個基礎伺服器,因此需安裝 uv 或覆寫啟動命令對應。可選的 HTTP 傳輸需設定 OAuth 變數或 bearer 權杖。
安裝前請注意
未驗證的 streamable-http 與 sse 傳輸本身沒有驗證機制,只應綁定回環位址;驗證版 http 傳輸必須設定 OAuth 或使用 ISO20022_READINESS_TOKEN 的開發模式共用密鑰。兩個工具會透過 stdio 啟動子伺服器,擴大了攻擊面。進階規則包與入口網站為付費附加項目。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Iso20022 Readiness Suite Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

iso20022-readiness-suite-mcp: The ISO 20022 Readiness & Testing Gateway

[PyPI Version] [Python Versions] [License] [Tests] [Quality] [OpenSSF Scorecard] [Documentation] [Glama MCP server score]

A high-level orchestration Model Context Protocol server — the White-Label ISO 20022 Readiness & Testing Gateway. It is an MCP server to your agent and an MCP client to the foundational servers of the ISO 20022 MCP Suite. It composes them into readiness scoring, automated remediation, clearing-profile linting (CBPR+, SEPA_Instant, FedNow, Generic), and bank-response simulation — one gateway an agent can drive to answer "is this payment ready, and if not, fix it".

The November 2026 milestones. As the major schemes (CBPR+, HVPS+, T2, FedNow) tighten their ISO 20022 requirements — structured postal addresses chief among them — a payment that was fine yesterday can be rejected tomorrow. iso20022-readiness-suite-mcp puts a single readiness gateway in front of your agent: run_readiness_check scores a payload against a clearing profile, remediate_payload proposes the compliant form, and simulate_bank_response mocks how a bank would answer. v0.0.6, stdio (default), streamable HTTP, SSE or authenticated streamable HTTP, 4 tools, Python 3.10+.

[iso20022-readiness-suite-mcp Demo]


Contents

Overview

The Model Context Protocol (MCP) is an open standard that lets AI agents and assistants discover and call external tools in a uniform way. iso20022-readiness-suite-mcp is the orchestration front door of the ISO 20022 MCP Suite: it presents four high-level tools to the outer agent, and underneath it acts as an MCP client that spawns the foundational suite servers over stdio and composes their results — the meta-client pattern.

The headline capability is the one-shot readiness workflow: hand it a raw ISO 20022 payload and a target clearing profile, and it detects the message type, routes it to the correct base validator, lints it against the profile's market-practice rules, and returns a single readiness score with the findings — then, on request, remediates the payload and simulates how a bank would respond.

Every tool returns typed, JSON-serialisable data; on any failure — a bad input, an unparseable payload, a missing or erroring sub-server — it returns an {"error": ...} payload rather than raising into the client transport.

mermaid
flowchart TD    A["MCP client<br/>(Claude Desktop, IDE, agent)"] -->|stdio| B["iso20022-readiness-suite-mcp<br/>(orchestration gateway)"]    B -->|spawns over stdio via uvx| C["iso20022-mcp"]    B -->|spawns over stdio via uvx| D["camt053-mcp"]    B -->|spawns over stdio via uvx| E["pain001-mcp"]    B -->|spawns over stdio via uvx| F["reconcile-mcp"]    B -->|spawns over stdio via uvx| G["bankstatementparser-mcp"]    B -->|spawns over stdio via uvx| H["structured-address-fix-mcp"]

The gateway is a server to the client above it and a client to the six foundational servers below it. list_profiles and simulate_bank_response are fully local and need none of them; run_readiness_check and remediate_payload reach the sub-servers and therefore require them to be installed and resolvable (see Orchestration & the meta-client pattern).

The ISO 20022 MCP Suite

iso20022-readiness-suite-mcp is the orchestration gateway that sits on top of a set of coordinated, vendor-neutral MCP servers for the ISO 20022 migration. Dependency ranges are kept aligned across the suite, so the servers co-install cleanly in a single Python environment: install the foundational servers you need, then let this gateway compose them.

ServerScopeInstall
iso20022-mcpUnified gateway meta-tools (search / describe / validate / generate / parse) across the ISO 20022 message cataloguepip install iso20022-mcp
camt053-mcpISO 20022 camt.05x bank statements: parse, validate, filter, reverse; MT94x migration; CBPR+ readinesspip install camt053-mcp
pain001-mcpGenerate & validate ISO 20022 pain.001 payment-initiation files (v03–v12, pain.008, SEPA) with rulebook checkspip install pain001-mcp
reconcile-mcpReconcile ISO 20022 payments and statements; match initiations to their bank-side outcomespip install reconcile-mcp
bankstatementparser-mcpParse bank statements (MT940/MT942 and camt) into structured, agent-friendly datapip install bankstatementparser-mcp
structured-address-fix-mcpISO 20022 postal-address classification, assessment, and remediation for the Nov 2026 structured-address cliffpip install structured-address-fix-mcp

Where each foundational server does one job well, this gateway composes them: it detects and routes a payload to the right validator, lints it against a clearing profile, scores its readiness, remediates it, and simulates the bank's answer — all behind four agent tools.

Install

iso20022-readiness-suite-mcp runs on macOS, Linux, and Windows and requires Python 3.10+ and pip. It pulls in the MCP SDK, pydantic, and defusedxml automatically.

sh
python -m pip install iso20022-readiness-suite-mcp

To exercise run_readiness_check and remediate_payload end to end, also make the foundational servers resolvable — the gateway launches them with uvx, so installing uv is enough for a zero-install spawn:

sh
python -m pip install uv        # provides the `uvx` launcher
Using an isolated virtual environment (recommended)
sh
python -m venv venvsource venv/bin/activate        # macOS/Linuxvenv\Scripts\activate           # Windowspython -m pip install -U iso20022-readiness-suite-mcp

Quick Start

For the 10-minute install → MCP client config → first conversation tutorial, see docs/quickstart.md.

Launch the server over stdio (the default transport):

sh
iso20022-readiness-suite-mcp

Register it with any MCP client (e.g. Claude Desktop) by adding it to the client's configuration:

json
{  "mcpServers": {    "iso20022-readiness-suite": { "command": "iso20022-readiness-suite-mcp" }  }}

The command speaks MCP on stdin/stdout — it is meant to be launched by an MCP client, not used interactively. The agent can then call the tools below.

You can also invoke the tools in-process — without a transport — straight through the FastMCP instance. This mirrors what an agent receives over stdio. The two local tools (list_profiles, simulate_bank_response) need no sub-servers:

python
import asyncio
from iso20022_readiness_suite_mcp import server

async def main() -> None:    async def call(name, args):        result = await server.server.call_tool(name, args)        # mcp 2.x returns a CallToolResult (read .content); 1.x        # returns the content list, or a (content, meta) tuple.        content = getattr(result, "content", None)        if content is None:            content = result[0] if isinstance(result, tuple) else result        return content[0].text if content else ""
    # Which clearing profiles can I target? (fully local)    print(await call("list_profiles", {}))    # -> [{"profile_id": "CBPR+", ...}, {"profile_id": "SEPA_Instant", ...}, ...]
    # Mock how a bank would answer an initiation. (fully local)    pacs008 = '<Document><CdtTrfTxInf><Amt Ccy="EUR">10</Amt></CdtTrfTxInf></Document>'    print(await call("simulate_bank_response",                     {"inbound_payload": pacs008, "desired_behavior": "ACCP"}))    # -> {"status": "ACCP", "generated_response_type": "pacs.002.001.10", ...}

asyncio.run(main())

Transports

One command line, four transports:

CommandTransportEndpointProtocol revisions
iso20022-readiness-suite-mcpstdiothe client spawns the process2026-07-28, 2025-11-25
iso20022-readiness-suite-mcp --transport streamable-httpStreamable HTTPhttp://127.0.0.1:8000/mcp2026-07-28 (stateless, server/discover) and 2025-11-25 (initialize, Mcp-Session-Id) on the same endpoint; responses stream as server-sent events, GET opens the server-to-client stream
iso20022-readiness-suite-mcp --transport sseHTTP+SSE (2024-11-05)http://127.0.0.1:8000/sse and /messages/for clients that still expect the older transport
iso20022-readiness-suite-mcp --transport httpAuthenticated streamable HTTP (see http/transport.py)http://127.0.0.1:8080/mcp (--bind)bearer token or OAuth 2.1, X-MCP-Tenant scoping

--host and --port change the bind address of streamable-http and sse (defaults 127.0.0.1 and 8000). Those two carry no authentication of their own: bind loopback, or put the server behind a gateway you trust before binding a routable address; --transport http is the authenticated option. Whatever the outer transport, the gateway still spawns its sub-servers over stdio and pools those sessions. Every release is verified over streamable HTTP with scout in both protocol eras and over SSE with the MCP SDK client; see ADR 0001.

json
{  "mcpServers": {    "iso20022-readiness-suite": { "url": "http://127.0.0.1:8000/mcp" }  }}

Tools

All tools return JSON-serialisable data; on a domain, validation, or sub-server error they return an {"error": ...} payload rather than raising.

  • list_profiles — List the available clearing profiles (CBPR+, SEPA_Instant, FedNow, Generic) with their market practice and rules. Fully local; no sub-servers needed.
  • run_readiness_check — Detect, structurally validate, profile-lint, and score an ISO 20022 payload's readiness against a target clearing profile. Reaches the foundational sub-servers.
  • remediate_payload — Apply automated remediation (e.g. the Nov 2026 structured-address fixes) driven by a clearing profile, delegating to structured-address-fix-mcp. Reaches the foundational sub-servers.
  • simulate_bank_response — Emit a pacs.002 status report mocking a bank's ACCP / RJCT / PDNG response to an inbound initiation (a reason code is required for RJCT). Fully local; no sub-servers needed.

Reachability. run_readiness_check and remediate_payload spawn the underlying servers over stdio via uvx, so those servers must be installed / resolvable for the two tools to succeed. list_profiles and simulate_bank_response compute purely locally and always work standalone.

HTTP transport & authentication

By default the gateway speaks stdio — launched by a local MCP client, one process per operator, with no network surface and no authentication needed:

sh
iso20022-readiness-suite-mcp                 # stdio (default)

The suite's unauthenticated --transport streamable-http and --transport sse are described under Transports. For shared, multi-tenant deployments the gateway also offers an authenticated streamable-HTTP transport. The default --bind is loopback-only (127.0.0.1:8080); expose it explicitly with --bind=0.0.0.0:8080:

sh
iso20022-readiness-suite-mcp --transport=http --bind=0.0.0.0:8080

The HTTP transport requires authentication — starting it with none configured is refused. Two modes apply, strongest first.

OAuth 2.1 resource server (RFC 9728) — production. Set the ISO20022_READINESS_OAUTH_* environment variables and the server validates Authorization: Bearer <jwt> against your authorization server's JWKS:

VariableRequiredMeaning
ISO20022_READINESS_OAUTH_ISSUERyesAuthorization server issuer; the JWT iss must match it exactly.
ISO20022_READINESS_OAUTH_AUDIENCEyesThis server's canonical resource URI (RFC 8707); the JWT aud must contain it.
ISO20022_READINESS_OAUTH_JWKS_URLnoJWKS document URL (default <issuer>/.well-known/jwks.json).
ISO20022_READINESS_OAUTH_SCOPESnoSpace-separated scopes every token must carry.

JWTs are checked for signature (JWKS, with key rotation on an unknown kid), iss / aud / exp / nbf, and the required scopes. The RFC 9728 protected-resource metadata is served unauthenticated at /.well-known/oauth-protected-resource. Rejections return 401 (403 for insufficient_scope) with a WWW-Authenticate challenge pointing at that metadata.

Static bearer token — dev mode only. When no OAuth variables are set, a single shared secret in ISO20022_READINESS_TOKEN is accepted instead (compared with hmac.compare_digest). This is explicitly dev-mode — one shared secret, no expiry, no scopes — and is ignored when OAuth is also configured:

sh
ISO20022_READINESS_TOKEN=s3cret \  iso20022-readiness-suite-mcp --transport=http --bind=127.0.0.1:8080

HTTP callers may send an optional X-MCP-Tenant header, forwarded into a per-request tenant context; the authenticated token's scopes are exposed to tools too, so tool code can scope behaviour without branching on the transport. See docs/transport.md for the full setup.

Orchestration & the meta-client pattern

The gateway implements the "server that is also a client" half of the orchestration: an orchestrator depends only on a SubServerInvoker protocol, and the production StdioSubServerInvoker spins up an underlying server over stdio, calls one tool, and tears the session down. Every failure — a missing server, a spawn error, a tool error — is returned as data (a typed ToolOutcome), never raised across the caller boundary.

By default each foundational server is launched with a zero-install uvx command:

Sub-serverDefault launch command
iso20022-mcpuvx iso20022-mcp
camt053-mcpuvx camt053-mcp
pain001-mcpuvx pain001-mcp
reconcile-mcpuvx reconcile-mcp
bankstatementparser-mcpuvx bankstatementparser-mcp
structured-address-fix-mcpuvx structured-address-fix-mcp

The command map is overridable per deployment, so you can point the gateway at locally installed console scripts, a pinned virtualenv, or a remote-launched process instead of uvx. See docs/orchestration.md for the full pattern and how to point it at local or remote sub-servers.

Open-core vs premium

The gateway is open core: the baseline validation workflows and the generic scheme profiles are open source and always available. Higher-tier, institution-specific capabilities are commercial add-ons that plug into the same profile-engine and orchestration seams (the profile engine already exposes a register() hook for runtime-loaded rule packs).

CapabilityTier
Basic Validation WorkflowsOpen Source
Generic Scheme Profiles (CBPR+, SEPA_Instant, FedNow, Generic)Open Source
Advanced Proprietary Rule PacksPaid
White-Label PortalsPaid
Stateful Persistence LogsPaid

The paid tiers are on the roadmap (premium rule-pack entitlement gating, plus the sister iso20022-bank-profile-mcp and iso20022-evidence-pack-mcp servers), not in this release. Nothing in the open-source tier is time-limited or feature-gated.

When not to use iso20022-readiness-suite-mcp

  • You have no MCP client. This server only makes sense paired with an MCP-aware host (Claude Desktop, the IDE plugins, an agent framework).
  • You only need one message operation. If you just want to validate a pain.001 or parse a camt.053, call the relevant foundational server directly — the gateway's value is composing them.
  • You need run_readiness_check / remediate_payload without the sub-servers. Those two tools require the foundational servers to be resolvable (via uvx or an overridden command map). If you cannot install them, you are limited to list_profiles and simulate_bank_response.
  • You need a long-lived network service. stdio (the default) is one process per operator, launched by the client, with no network surface. --transport streamable-http and --transport sse listen on --host/--port without authentication (see Transports); for shared, multi-tenant deployments use the authenticated streamable-HTTP transport (--transport=http, with OAuth 2.1 or a dev-mode token) — see HTTP transport & authentication.
  • You need streaming responses. Tool calls return whole values, not streams.

Development

iso20022-readiness-suite-mcp uses Poetry and mise.

bash
git clone https://github.com/sebastienrousseau/iso20022-readiness-suite-mcp.git && cd iso20022-readiness-suite-mcpmise installpoetry installpoetry shell

Note: the test suite injects a fake sub-server invoker, so you do not need the foundational servers installed to run the tests — only to exercise run_readiness_check / remediate_payload against real servers. See CONTRIBUTING.md.

A Makefile orchestrates the quality gates (kept in lockstep with CI):

bash
make check        # all gates (REQUIRED before commit): lint + type-check + testmake test         # pytest (100% line + branch coverage)make lint         # ruff + blackmake type-check   # mypy --strictmake security     # bandit

Security

iso20022-readiness-suite-mcp returns errors as data — every tool catches the documented domain, validation, and value errors (and every sub-server failure) and returns an {"error": ...} envelope; it never propagates raw exceptions to the MCP client. XML payloads reached through the clearing-profile engine are parsed with defusedxml only (no XXE / billion-laughs). Reporting practice, supported versions, the meta-client attack surface, and the full supply-chain posture (SLSA L3 provenance, PEP 740 attestations, SBOMs, and the NIST SP 800-218 SSDF practice mapping) are documented in SECURITY.md. Vulnerabilities go via GitHub Private Vulnerability Reporting, not public issues.

Documentation


MCP Registry

mcp-name: io.github.sebastienrousseau/iso20022-readiness-suite-mcp


License

Licensed under the Apache License, Version 2.0. Any contribution submitted for inclusion shall be licensed as above, without additional terms.

Contributing

Contributions are welcome — see the contributing instructions. Thanks to all contributors.

Acknowledgements

Built on the foundational servers of the ISO 20022 MCP Suite and the Model Context Protocol Python SDK.

來源:README.md,提交 e155f81

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

2
  1. v0.0.6最新Oct 4, 2026
  2. v0.0.5Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分