关于 camt-exceptions
camt-exceptions 是面向金融工作流的 ISO 20022 E&I 消息生成与校验 MCP 服务,支持 camt.056 取消付款请求和 camt.029 调查结果。生成的 XML 会依据随附的官方 XSD 校验。
主要功能
- 01生成 camt.056 和 camt.029 XML
- 02按官方 XSD 校验生成内容
- 03校验原始 XML
- 04查询消息类型及必填字段
- 05支持 stdio、HTTP 和 SSE 传输
适用场景
- 01生成银行间付款取消请求
- 02生成调查处理结果消息
- 03检查 E&I XML 是否符合模式
MCP 相关
作为 MCP 服务提供 4 个工具:列出消息类型、查询必填字段、生成消息和校验 XML。支持 stdio、Streamable HTTP 与 SSE 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
camt-exceptions:ISO 20022 异常与调查,生成并通过 XSD 验证
生成并验证 ISO 20022 异常与调查(E&I)camt
消息——通过 MCP 服务实现。 起步支持 camt.056(金融机构间付款取消请求):银行发送此消息,以撤回或取消已发出的付款,例如重复付款、金额错误或欺诈撤回。返回结果前,会使用随包提供的官方 XSD 进行验证。
最新版本:v0.0.20:支持生成并验证
camt.056和camt.029,通过 stdio、流式 HTTP 或 SSE 提供 4 个 MCP 工具,分支覆盖率达 100%,适用于 Python 3.10+。这是 ISO 20022 MCP 套件的一部分。其他 E&I 消息(camt.029、camt.026、camt.027、camt.087)也可接入同一引擎。
为什么需要 E&I
付款出错时,需要通过异常与调查消息进行处理——而这正是 ISO 20022 中工具支持最少的领域。单是 camt.056 就能满足最常见的需求:“我需要取消/撤回这笔付款。” 这个库让 Agent 只需一次调用即可完成操作,并确保消息符合架构要求,其功能深度与套件中其他贷记转账生成器相当。
安装
pip install camt-exceptions
# or run the MCP server without installing:
uvx camt-exceptions
MCP 客户端配置(例如 Claude Desktop):
{
"mcpServers": {
"camt-exceptions": {
"command": "camt-exceptions-mcp"
}
}
}
快速开始 — 取消付款
from camt_exceptions import generator as g
xml = g.generate_message("camt.056.001.12", {
"assignment_id": "CXL-001",
"assigner_agent_bic": "DEUTDEFF",
"assignee_agent_bic": "COBADEFF",
"creation_date_time": "2026-03-02T10:00:00",
"original_msg_id": "MSG-ORIG-001",
"original_msg_nm_id": "pacs.008.001.08",
"transactions": [{
"original_end_to_end_id": "E2E-001",
"original_interbank_settlement_amount": "1000.00",
"original_interbank_settlement_currency": "EUR",
"cancellation_reason_cd": "DUPL", # duplicate payment
}],
})
assert g.validate_xml("camt.056.001.12", xml)["is_valid"] # True
传输方式
一条命令行,三种传输方式:
| 命令 | 传输方式 | 端点 | 协议修订版本 |
|---|---|---|---|
camt-exceptions-mcp | stdio | 客户端启动进程 | 2026-07-28、2025-11-25 |
camt-exceptions-mcp --transport streamable-http | 流式 HTTP | http://127.0.0.1:8000/mcp | 2026-07-28(无状态,server/discover)和 2025-11-25(initialize、Mcp-Session-Id)共用同一端点;响应以服务器发送事件的形式流式传输,GET 会打开服务器到客户端的流 |
camt-exceptions-mcp --transport sse | HTTP+SSE(2024-11-05) | http://127.0.0.1:8000/sse 和 /messages/ | 面向仍使用较旧传输方式的客户端 |
--host 和 --port 用于更改绑定地址(默认值分别为 127.0.0.1 和
8000)。HTTP 传输方式本身不提供身份验证:请绑定到环回地址;或者在绑定到可路由地址前,将服务置于你信任的网关之后。每个版本都会使用 scout 在两个协议时期通过流式 HTTP 进行验证,并通过 MCP SDK 客户端验证 SSE;请参阅
ADR 0001。
{
"mcpServers": {
"camt-exceptions": { "url": "http://127.0.0.1:8000/mcp" }
}
}
工具
list_message_types— 列出支持的 E&I 消息类型及名称。get_required_fields— 获取消息类型必需的顶层字段。generate_message— 根据记录生成经过验证的 E&I XML 消息(返回前会使用随包提供的 XSD 进行验证)。validate_xml— 根据消息类型对应的随包提供的 XSD 验证原始 XML。
支持的消息
| 消息 | 名称 | 状态 |
|---|---|---|
camt.056.001.12 | 金融机构间付款取消请求 | ✅ |
camt.029.001.14 | 调查结果处理 | ✅ |
camt.026 | 无法应用 | 计划中 |
camt.027 | 未收到款项索赔 | 计划中 |
camt.087 | 付款修改请求 | 计划中 |
每种新消息都接入同一引擎:将其官方 XSD 和
template.xml 打包,并在 MESSAGE_TYPES 中注册。生成的输出在返回前始终
经过 XSD 验证,因此正确性由机器检查,而非口头断言。
注意:E&I 系列的付款状态和退回消息 —
pacs.002(付款状态报告)和pacs.004(付款退回)— 已由pacs008-mcp生成,并通过 XSD 验证。
套件
这是一个供应商中立、原生采用 Python 的 ISO 20022 MCP 服务系列的一部分:
iso20022-mcp— 跨系列的统一网关。pain001-mcp·pacs008-mcp·camt053-mcp·acmt001-mcp— 各系列专用服务。reconcile-mcp— 对账单/付款对账。
文档
- 已渲染的文档: sebastienrousseau.github.io/camt-exceptions — API 参考、ADR、路线图、变更日志
- 可运行示例:
examples/ - 发布历史: CHANGELOG.md
开发
git clone https://github.com/sebastienrousseau/camt-exceptions
cd camt-exceptions
python -m venv .venv && . .venv/bin/activate
pip install -e . && pip install pytest pytest-cov hypothesis ruff black mypy interrogate "mutmut>=3.7,<4"
pytest # 100% branch coverage gate; output is XSD-validated
ruff check camt_exceptions tests && black --check camt_exceptions tests && mypy camt_exceptions
interrogate -c pyproject.toml camt_exceptions # 100% docstring gate
mutmut run && mutmut export-cicd-stats && python scripts/mutation_gate.py --floor 90
许可证
根据您的选择,采用 Apache License, Version 2.0 或
MIT License 许可。随附的 ISO 20022 消息架构
(*.xsd)版权归 ISO 20022 所有,并依据 ISO 20022 条款重新分发;这些架构
与 iso20022.org 发布的相同。
mcp-name: io.github.sebastienrousseau/camt-exceptions
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。