关于 Ontology Mcp Server
Ontology MCP Server 将 ISO 20022 XML 转为可查询的 RDF 金融知识图谱,供银行、金融科技公司及支付处理商使用。它支持消息关联、生命周期查询、异常检测和实时流式导入。
主要功能
- 01解析 ISO 20022 XML 并映射为 RDF
- 02查询交易及消息生命周期
- 03运行 SPARQL 查询
- 04检测高额交易及余额异常
- 05按 BIC 汇总机构活动
- 06通过 WebSocket 流式导入
适用场景
- 01跨 XML 文件查找指定金额和机构的交易
- 02追踪取消请求与支付的完整关联链
- 03检查数据中的余额不匹配或异常
- 04实时接收并处理 XML 消息
MCP 相关
它将金融信号与图谱操作作为 MCP 工具提供给兼容客户端。工具涵盖 XML 导入、图查询、生命周期检索和异常检测。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm ghcr.io/mrcholis/ontology-mcp本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/mrcholis/ontology-mcpstdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Ontology MCP 服务
将 ISO 20022 银行消息转换为可查询的知识图谱——任何 AI Agent 都可通过 MCP 访问。
银行、金融科技公司和支付处理商每天都会处理数千条 ISO 20022 消息(pacs.008 付款、camt.056 撤销、camt.029 响应)。这些 XML 文件内容密集、相互关联,几乎无法跨文件查询——直到现在。
Ontology 可导入 ISO 20022 XML,提取结构化金融信号,构建 RDF 知识图谱,并将其作为原生工具开放,供任何兼容 MCP 的 AI Agent 使用。
pip install ontology-mcp
python mcp_server.py
# Connect Claude Desktop, Cursor, or any MCP client
为什么要做这个项目
ISO 20022 是全球金融消息传递标准。每一笔付款、结算、撤销和对账单都通过它传递。但这些数据却被困住了:
- XML 无法查询——要找出“所有涉及 BLUEUSNY 且金额超过 50,000 美元的交易”,就得在文件中逐一 grep
- 消息彼此关联——camt.056 撤销消息会引用 pacs.008 付款消息,但它们位于不同的 XML 文件中,彼此没有关联
- AI Agent 无法使用这些数据——即使使用 RAG,结构化金融数据也难以通过简单分块处理
Ontology 通过构建具有类型、彼此关联的知识图谱和自然语言界面,解决了以上所有问题。
快速开始
Docker(最简单)
docker pull ghcr.io/mrcholis/ontology-mcp:latest
docker run ghcr.io/mrcholis/ontology-mcp
或者运行演示:
docker run ghcr.io/mrcholis/ontology-mcp python demo.py
使用 pip 安装
pip install ontology-mcp
# Or with persistent storage:
pip install "ontology-mcp[oxigraph]"
2. 运行演示
python -m ontology_mcp.demo
此操作会加载示例 ISO 20022 消息,并展示知识图谱的样子。
3. 启动服务
python mcp_server.py
4. 连接到 Claude Desktop
将以下内容添加到 claude_desktop_config.json:
{
"mcpServers": {
"ontology": {
"command": "python",
"args": ["/path/to/ontology-mcp/mcp_server.py"]
}
}
}
重启 Claude。现在你可以这样提问:
“从我的 messages 文件夹加载 XML 文件,并找出所有涉及 BLUEUSNY、金额超过 50,000 美元的交易。”
“撤销案件 20220718USDDSA9407803873 的完整生命周期是什么?”
“加载的数据中是否存在异常或余额不匹配?”
可以做什么
| 工具 | 功能 |
|---|---|
extract_and_map | 解析 ISO 20022 XML → 信号 → RDF,并合并到知识图谱中 |
load_xml_file | 从磁盘加载并处理 XML 文件 |
load_output_directory | 从文件夹加载所有预构建的 .ttl 文件 |
query_lifecycle | 查询某个案件 ID/交易 ID/BIC 的完整消息链 |
sparql_query | 对知识图谱运行任意 SPARQL 查询 |
find_anomalies | 标记高价值交易、被拒绝的撤销请求和余额不匹配 |
get_institution_activity | 查询某个 BIC 代码的所有消息及按类型汇总的总数 |
graph_stats | 查询三元组数量、信号细分统计和 BIC 清单 |
start_stream_server | 启动 WebSocket 服务,以流式方式导入 XML |
push_stream_message | 通过 WebSocket 实时推送 XML 消息 |
支持的消息类型
| 消息 | 说明 |
|---|---|
pacs.008 | 付款发起(金融机构 → 金融机构) |
pacs.009 | 付款结算 |
camt.053 | 账户对账单 |
camt.054 | 借记/贷记通知 |
camt.056 | 撤销请求 |
camt.026 | 无法执行 |
camt.029 | 撤销响应/处理结果 |
架构
ISO 20022 XML
|
v
FinancialSignalExtractionPipeline → extracts typed Python signal objects
|
v
FinancialSignalToRDFMapper → maps signals to RDF triples
|
v
RDF Knowledge Graph (rdflib / Oxigraph)
| queryable via SPARQL
v
MCP Tools (mcp_server.py) → exposed over stdio transport
|
v
AI Agent / Claude Desktop
持久化存储使用 Oxigraph(基于 RocksDB)。如果未安装 Oxigraph,则回退到内存中的 rdflib。
示例
查询完整付款生命周期
User: What happened with cancellation case 20220718USDDSA9407803873BLUEUSNY001?
Agent: I found 4 messages in the lifecycle:
1. pacs.008 — Payment initiated (BLUEUSNY → FEDNYUSS)
$94,078.03 USD on 2022-07-18
2. camt.056 — Cancellation requested by BLUEUSNY
Reason: duplicate submission
3. camt.029 — Cancellation rejected
Reason: payment already settled
4. camt.026 — Unable to apply notification sent to BLUEUSNY
查找异常
User: Are there any unusual transactions?
Agent: Found 4 high-value transactions (>$50K):
- TXN_20220718_001: $94,078.03 (BLUEUSNY → FEDNYUSS)
...
Found 1 rejected cancellation:
- Case 20220718USDDSA9407803873: rejected (already settled)
开发
git clone https://github.com/mrcholis/ontology-mcp
cd ontology-mcp
python3.11 -m venv venv311
source venv311/bin/activate
pip install -e ".[all]"
# Run tests
python _test_mcp_v2.py
路线图
- 支持 ISO 20022 消息(pacs.008/009、camt.053/054/056/026/029)
- Oxigraph 持久化存储
- WebSocket 流式导入
- 生产环境 IRIs(替换
http://example.org/命名空间) - SPARQL HTTP 端点
-
pain.001/pain.002付款发起消息 - 提供 Docker 镜像,实现一键部署
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。