
Iso20022 Evidence Pack Mcp
io.github.sebastienrousseau由 GitHub 帳號 sebastienrousseau 發布v0.0.6更新於 Nov 1, 2026
MCP server: seal & sign ISO 20022 readiness evidence into tamper-evident audit packs.
概覽
本機 MCP 伺服器,把 ISO 20022 就緒性檢查結果整理成分級、封存、可防竄改的稽核證據包與合規報告。
- 可以做什麼
- 將就緒性結果、修復結果與模擬銀行回應彙整成分級並封存的證據包
- 計算並驗證證據包標準化 JSON 的決定性 SHA-256 封條
- 以維運方 Ed25519 金鑰對證據包簽章,並用公開金鑰驗證分離式簽章
- 把證據包輸出為 Markdown 合規報告
- 適用情境
- 當你已從搭配的伺服器取得 ISO 20022 就緒性或修復結果,且需要可驗證的封存件供稽核或認證使用時。它只認證結果、不產生結果,因此需先搭配就緒性工具使用。
- 執行需求
- 本機 Python 3.10+ 程序,以 pip 安裝,預設由 MCP 用戶端透過 stdio 啟動。選用的 HTTP 傳輸需額外相依套件;驗證模式需 OAuth 變數(ISO20022_EVIDENCE_PACK_OAUTH_ISSUER、ISO20022_EVIDENCE_PACK_OAUTH_AUDIENCE)或 ISO20022_EVIDENCE_PACK_TOKEN 靜態權杖。簽章需 ISO20022_EVIDENCE_PACK_SIGNING_KEY 或 ISO20022_EVIDENCE_PACK_SIGNING_KEY_FILE。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Iso20022 Evidence Pack Mcp,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
iso20022-evidence-pack-mcp: Sealed ISO 20022 Audit Evidence Packs
[PyPI Version] [Python Versions] [License] [Tests] [Quality] [OpenSSF Scorecard] [Documentation] [Glama MCP server score]
[iso20022-evidence-pack-mcp Demo]
A fully local, closed-world Model Context Protocol (MCP) server that
compiles ISO 20022 readiness findings, remediation diffs, and simulated bank
responses into one sealed, exportable audit evidence pack. It is the audit
and certification sibling of
iso20022-readiness-suite-mcp
(which produces those findings) and
iso20022-bank-profile-mcp
in the ISO 20022 MCP Suite.
Tamper-evident by construction. The pack's seal is a deterministic SHA-256 digest over the pack's canonical JSON (the
digestfield excluded). Re-sealing identical content yields the identical digest, and changing any field breaks verification — so an auditor can detect undetected change. There is no network surface, no sub-servers, and no XML: every tool is a pure, local, deterministic transform over the JSON structures it is handed. v0.0.6, stdio, streamable HTTP, SSE or authenticated streamable HTTP, 11 tools including Ed25519 pack signing, Python 3.10+.
Contents
- Overview
- The ISO 20022 MCP Suite
- Install
- Quick Start
- Transports — stdio, streamable HTTP (2026-07-28 and 2025-11-25), SSE and authenticated HTTP from one command line
- Tools
- HTTP transport & authentication
- Signing evidence packs
- Examples
- How it fits the suite
- Open-core vs premium
- Seal vs signature
- When not to use iso20022-evidence-pack-mcp
- Development
- Security
- Documentation
- License
- Contributing
- Acknowledgements
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-evidence-pack-mcp is the audit/certification end of the ISO 20022
MCP Suite: it takes the results that
iso20022-readiness-suite-mcp
produces — a readiness score with findings, an optional remediation result,
and any simulated bank responses — and folds them into one strongly-typed,
graded, sealed evidence pack that can be exported, verified, and rendered
as a compliance report.
An EvidencePack folds three loosely-typed inputs into one self-describing
document: a readiness result (message type, validity, score, findings), an
optional remediation result (fixes applied, residual findings), and any
simulated bank responses (accepted / rejected statuses). The pack is graded
(A / B / C / F from the readiness score) and sealed.
The seal is the point: it is a deterministic SHA-256 digest computed over the
pack's canonical JSON form (sorted keys, tight separators, with the digest
field itself excluded). Sealing the same content always yields the same value,
which is exactly what makes the pack tamper-evident — recomputing the seal
and comparing it to the one carried in the pack tells an auditor whether any
byte changed since it was sealed.
Every tool returns typed, JSON-serialisable data; on any failure — bad input,
unparseable JSON, a shape that does not match the pack schema — it returns an
{"error": ...} payload rather than raising into the client transport.
- Website: https://sebastienrousseau.github.io/iso20022-evidence-pack-mcp/
- Source code: https://github.com/sebastienrousseau/iso20022-evidence-pack-mcp
- Bug reports: https://github.com/sebastienrousseau/iso20022-evidence-pack-mcp/issues
The server is fully local and closed-world: it holds no state, opens no sockets, and spawns no processes. You hand it JSON, it hands you a sealed pack.
The ISO 20022 MCP Suite
iso20022-evidence-pack-mcp is the audit and certification server 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.
Where the readiness suite decides whether a payment is ready and fixes it, this server certifies the outcome: it turns those findings into a sealed, auditable artifact.
Install
iso20022-evidence-pack-mcp runs on macOS, Linux, and Windows and requires
Python 3.10+ and pip. It pulls in only the MCP SDK and pydantic
automatically — there are no other runtime dependencies.
Using an isolated virtual environment (recommended)
Quick Start
For the 10-minute install → MCP client config → first conversation tutorial,
see docs/quickstart.md.
Launch the server over stdio (the FastMCP default transport):
Register it with any MCP client (e.g. Claude Desktop) by adding it to the client's configuration:
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 example below builds a sealed pack from a small readiness result, then shows the seal round-tripping (and breaking on tamper):
Transports
One command line, four transports:
--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. Every release is verified over streamable
HTTP with scout in both
protocol eras and over SSE with the MCP SDK client; see
ADR 0001.
Tools
All tools are read-only, local, idempotent, and closed-world. They return
JSON-serialisable data; on a validation or shape error they return an
{"error": ...} payload rather than raising.
build_evidence_pack— Fold a readiness result (plus an optional remediation result, optional simulated bank responses, and free-form metadata) into a graded, sealed evidence pack; returns the pack, its digest, and a rendered markdown report.seal_pack— Compute the deterministic SHA-256 seal for an evidence pack (raw JSON).verify_seal— Recompute a pack's seal and compare it to an expected digest.render_markdown— Render an evidence pack as a markdown compliance report.sign_pack— Sign a pack's canonical bytes with the operator's Ed25519 key (configured via the environment); returns the base64 detached signature, the PEM public key, and akey_id. Fails withEP_NO_SIGNING_KEYwhen no key is configured. See Signing evidence packs.verify_pack_signature— Verify a detached Ed25519 signature over a pack's canonical bytes against a public key passed as an argument; returnsverifiedandkey_id.
HTTP transport & authentication
The server speaks stdio by default — launched by a local MCP client, one process per operator, with no network surface and no authentication. For shared, multi-tenant deployments, v0.0.2 adds an optional streamable-HTTP transport:
--bind defaults to loopback 127.0.0.1:8080, so exposing the server (e.g.
--bind=0.0.0.0:8080) is an explicit opt-in. Starting the HTTP transport with
no auth configured is refused rather than serving an unauthenticated endpoint.
Two auth modes apply, strongest first:
-
OAuth 2.1 resource server (RFC 9728) — set the
ISO20022_EVIDENCE_PACK_OAUTH_*variables:Every request must present
Authorization: Bearer <jwt>; the JWT is validated against the JWKS (iss/aud/exp/nbfand any required scopes). Protected-resource metadata is served at/.well-known/oauth-protected-resource; failures are rejected401(or403for insufficient scope) with aWWW-Authenticatechallenge. -
Static dev-mode bearer token — set
ISO20022_EVIDENCE_PACK_TOKENto a non-empty secret. Every request must then sendAuthorization: Bearer <secret>. This is a single shared secret with no expiry and no scopes; use OAuth 2.1 in production.
HTTP callers may also send an optional X-MCP-Tenant header, forwarded into a
tool-visible request context for multi-tenant scoping. The HTTP transport pulls
in extra dependencies (pyjwt[crypto], httpx, starlette, uvicorn); the
default stdio transport needs none of them. See
docs/transport.md for the full reference.
Signing evidence packs
A pack's seal proves integrity — the content has not changed. A signature proves authenticity — a specific key attests to that content. v0.0.2 adds Ed25519 signing via two tools:
sign_packsigns the pack's canonical bytes — the exact same serialization the seal digests, with thedigestfield excluded. Because the signature covers the sealed content, it stays valid if only thedigestfield changes but breaks if any sealed field changes. It returns the base64 detached signature,algorithm"ed25519", the PEM public key, and akey_id(ed25519:<16 hex>).verify_pack_signatureverifies a detached signature over a pack's canonical bytes against a public key passed as a tool argument. Public keys are safe to pass across the tool boundary; it returnsverifiedandkey_id.
The Ed25519 private key is configured by the operator at launch, via the environment:
ISO20022_EVIDENCE_PACK_SIGNING_KEY— the PEM private key inline, orISO20022_EVIDENCE_PACK_SIGNING_KEY_FILE— a path to a PEM key file.
The private key never crosses the MCP tool boundary. The server never
generates or persists private keys — key material is generated and custodied by
the operator, ideally in an HSM/KMS. With no key configured, sign_pack returns
EP_NO_SIGNING_KEY; a malformed key or signature returns EP_INVALID_INPUT.
Signing with an operator-supplied key is available today. Keyless (sigstore) and PKI signing with a verification trust root remain roadmap items.
Examples
Runnable, self-contained examples live in examples/. Each script
drives the public tools directly and needs no network or sub-server:
See examples/README.md for the full catalogue, or run
them all with make examples.
How it fits the suite
The readiness suite and the evidence-pack server form a two-stage pipeline:
- Readiness → results.
iso20022-readiness-suite-mcprunsrun_readiness_check(score + findings),remediate_payload(automated fixes), andsimulate_bank_response(a mocked pacs.002 outcome). Each returns typed JSON. - Results → sealed pack. You hand those JSON results to
build_evidence_packhere. It normalises them into a strongly-typed pack, grades the readiness score (A/B/C/F), and seals the whole thing with a deterministic SHA-256 digest.verify_seallater proves the pack is unchanged;render_markdownturns it into a human-readable compliance report.
Because the seal is deterministic, the same inputs always produce the same digest — so a pack built today and re-sealed next quarter is provably the same pack, or provably not. The two servers stay decoupled: the readiness suite knows nothing about sealing, and this server knows nothing about how the findings were produced — it only folds and certifies them.
Open-core vs premium
The server is open core: building, sealing, verifying, and rendering packs are open source and always available. Higher-tier capabilities that turn a tamper-evident pack into an authenticatable, durably archived artifact are commercial add-ons on the roadmap.
Nothing in the open-source tier is time-limited or feature-gated: the seal and the reports are fully functional today.
Seal vs signature
The seal is an integrity digest, not a cryptographic signature. It proves that a pack has not changed since it was sealed (tamper-evidence); it does not prove who produced the pack (authenticity). Anyone who can build a pack can also compute a valid seal for it, so a seal is a checksum, not a proof of origin.
Authenticity — binding a pack to a specific key — is what
sign_pack / verify_pack_signature add on top of
the seal: an Ed25519 signature over the pack's canonical bytes attests that the
holder of the operator's key produced that content. The seal and the signature
are complementary: the seal is integrity, the signature is authenticity. Note
that a signature is only as trustworthy as your provenance for the public key —
keyless (sigstore) / PKI signing with a verification trust root remains a
roadmap item (see ROADMAP.md). If you have configured no
signing key, treat a sealed-but-unsigned pack as integrity-checked only:
transmit and store it over channels you already trust, and do not represent it
as a signed one. See SECURITY.md for the full threat-model
note.
When not to use iso20022-evidence-pack-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 need the readiness findings themselves. This server certifies
results; it does not produce them. Run
iso20022-readiness-suite-mcpto score, remediate, and simulate first, then fold its output in here. - You need keyless / PKI signatures against a public trust root. The seal is a tamper-evidence digest, not a signature (see Seal vs signature). Ed25519 signing with an operator-supplied key ships in v0.0.2 (Signing evidence packs), but keyless (sigstore) / PKI signing with a verification trust root remains on the roadmap.
- You want a zero-dependency network service. The default transport is stdio — one process per operator, launched by the client, no network surface. An optional authenticated HTTP transport (OAuth 2.1 / RFC 9728) ships in v0.0.2 (HTTP transport & authentication) for shared, multi-tenant deployments, but it pulls in extra dependencies and must be explicitly enabled.
- You need streaming responses. Tool calls return whole values, not streams.
Development
iso20022-evidence-pack-mcp uses Poetry and mise.
A Makefile orchestrates the quality gates (kept in lockstep with CI):
Security
iso20022-evidence-pack-mcp returns errors as data — every tool catches the
documented validation and value errors and returns an {"error": ...}
envelope; it never propagates raw exceptions to the MCP client. Over the default
stdio transport the server has no network surface, spawns no sub-processes, and
parses no XML — its whole attacker-reachable surface is JSON parsed with the
standard library and validated against pydantic models. The optional HTTP
transport is off by default and, when enabled, refuses to start without OAuth 2.1
(RFC 9728) or a static dev-mode bearer token (see
HTTP transport & authentication). The pack
seal is a tamper-evidence digest, not a signature; Ed25519 signing
(sign_pack) adds authenticity on top (see
Seal vs signature). Reporting
practice, supported versions, the seal threat-model note, 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
README.md— this fileCHANGELOG.md— release notesSECURITY.md— disclosure + supported versions + seal threat modelSUPPORT.md— how to get helpROADMAP.md— what's next (keyless/PKI signing, long-term storage, premium entitlement)MAINTAINERS.md— who can mergeARCHITECTURE.md— module map, transports, extension pointsRELEASING.md— what merits a release and how one is cutdocs/adr/— architecture decision recordsdocs/quickstart.md— 10-minute install → first conversationdocs/evidence-packs.md— the pack schema, the SHA-256 sealing model, Ed25519 signing, and the readiness → evidence pipelinedocs/transport.md— the optional HTTP transport and OAuth 2.1 (RFC 9728) authenticationglama.json— Glama directory manifest
MCP Registry
mcp-name: io.github.sebastienrousseau/iso20022-evidence-pack-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 alongside the servers of the ISO 20022 MCP Suite and the Model Context Protocol Python SDK.
來源:README.md,提交 2452d06
工具
0版本歷史
2- v0.0.6最新Oct 4, 2026
- v0.0.5Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分