内容
<!-- SPDX-License-Identifier: Apache-2.0 -->
<p align="center">
<img
src="https://cloudcdn.pro/bankstatementparser/v1/logos/bankstatementparser.svg"
alt="bankstatementparser logo"
width="120"
height="120"
/>
</p>
<h1 align="center">bankstatementparser</h1>
<p align="center">
<b>模型上下文协议服务器,将 bankstatementparser 库作为一流的代理工具,用于读取银行对账单。</b>
</p>
<p align="center">
<a href="https://pypi.org/project/bankstatementparser-mcp/"><img src="https://img.shields.io/pypi/v/bankstatementparser-mcp?style=for-the-badge" alt="PyPI 版本" /></a>
<a href="https://pypi.org/project/bankstatementparser-mcp/"><img src="https://img.shields.io/pypi/pyversions/bankstatementparser-mcp.svg?style=for-the-badge" alt="Python 版本" /></a>
<a href="https://pypi.org/project/bankstatementparser-mcp/"><img src="https://img.shields.io/pypi/dm/bankstatementparser-mcp.svg?style=for-the-badge" alt="PyPI 下载量" /></a>
<a href="https://github.com/sebastienrousseau/bankstatementparser-mcp/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/sebastienrousseau/bankstatementparser-mcp/ci.yml?branch=main&label=测试&style=for-the-badge" alt="测试" /></a>
<a href="https://github.com/sebastienrousseau/bankstatementparser-mcp/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/sebastienrousseau/bankstatementparser-mcp/ci.yml?branch=main&label=覆盖率&style=for-the-badge" alt="覆盖率" /></a>
<a href="#许可"><img src="https://img.shields.io/pypi/l/bankstatementparser-mcp?style=for-the-badge" alt="许可" /></a>
<a href="https://glama.ai/mcp/servers/sebastienrousseau/bankstatementparser-mcp"><img src="https://glama.ai/mcp/servers/sebastienrousseau/bankstatementparser-mcp/badges/score.svg" alt="Glama MCP 服务器评分" /></a>
</p>
---
## 目录
**快速入门**
- [什么是 bankstatementparser?](#什么是-bankstatementparser) — 它解决的问题
- [ISO 20022 MCP 套件](#iso-20022-mcp-套件) — 四个协调的服务器及使用场景
- [安装](#安装) — PyPI、virtualenv、Docker
- [快速开始](#快速开始) — 30 秒内与 Claude Desktop 注册
**库参考**
- [工具](#工具) — 五个工具,一个资源,一个提示
- [使用工具](#使用工具) — 从 Python 在进程中调用
**操作**
- [何时不使用 bankstatementparser](#何时不使用-bankstatementparser) — 诚实的边界
- [开发](#开发) — 网关,制作目标
- [安全](#安全) — 沙盒姿势
- [文档](#文档) — 示例,指南
- [贡献](#贡献) — 如何获得更改
- [许可](#许可) — Apache-2.0
---
## 什么是 bankstatementparser?
[模型上下文协议](https://modelcontextprotocol.io)(MCP)是一种开放标准,允许 AI 代理以统一的方式发现和调用外部工具。**bankstatementparser** 是 MCP 服务器,它将 [`bankstatementparser`](https://github.com/sebastienrousseau/bankstatementparser) 库转换为一流的代理工具,以便助手可以直接从对话中读取、验证和总结银行对账单,支持 ISO 20022 CAMT.053、SWIFT MT940、OFX/QFX 和 CSV 等格式。
每个工具都是对 `bankstatementparser` 解析器核心(`create_parser`、`detect_statement_format`)的薄封装,因此结果与 CLI 相同。由于 MCP 客户端不共享服务器的文件系统,因此工具接受内联语句内容(加上文件名提示)并在单个调用期间在私有临时文件中物化。工具返回 JSON 可序列化数据。
| 关注点 | bankstatementparser 如何处理它 |
| --- | --- |
| 传输 | stdio(FastMCP 默认);客户端清单以外无需配置 |
| 输入模型 | 内联内容 + 文件名提示;无需共享文件系统 |
| 格式保真度 | 工具委托给 `bankstatementparser` 的 `create_parser` 管道 |
| 格式检测 | `detect_format` 镜像库的 `detect_statement_format` |
| 验证 | `validate_statement` 是返回结构化结果的干运行 |
| 隔离 | 每个调用写入一个私有临时文件,该文件在退出时删除 |
---
## ISO 20022 MCP 套件
`bankstatementparser` 是八个协调的、供应商中立的 MCP 服务器的**摄入层**,它们共同涵盖了 ISO 20022 银行对账单工作流和 2026 年 11 月的结构化地址切换 - 对账单深度、整个目录路由、和解、多格式摄入和地址修复。依赖范围在套件中保持一致,因此服务器可以在单个 Python 环境中干净地共同安装:从一个开始,根据工作流增长添加其余部分。
| 服务器 | 范围 | 接口 | 安装 | 使用场景 |
| --- | --- | --- | --- | --- |
| [`camt053-mcp`](https://github.com/sebastienrousseau/camt053-mcp) | ISO 20022 `camt.053`/`camt.052` 银行对账单:解析、验证、过滤、反向;MT940/MT942 迁移;CBPR+ 准备就绪;日记导出 | 22 个 MCP 工具 · 4 个提示 · 3 个资源 | `pip install camt053-mcp` | 您从头到尾处理银行到客户的对账单 - 套件的旗舰 |
| [`iso20022-mcp`](https://github.com/sebastienrousseau/iso20022-mcp) | 统一网关:`search` / `describe` / `validate` / `generate` / `parse` 元工具路由到 `pain` · `pacs` · `camt` · `acmt` 系列 | 7 个元工具 | `pip install "iso20022-mcp[all]"` | 您想要一个入口点到每个消息系列 |
| [`reconcile-mcp`](https://github.com/sebastienrousseau/reconcile-mcp) | 将预期的 `pain.001` 支付与观察到的 `camt.053` 条目相匹配 - 精确,部分,一对多,多对一,每个匹配都有评分和解释 | 7 个 MCP 工具 | `pip install reconcile-mcp` | 您需要可解释的对账单/支付和解 |
| [`bankstatementparser-mcp`](#安装) | 多格式对账单摄入:ISO 20022 CAMT.053 和 pain.001,SWIFT MT940,OFX/QFX,CSV | 5 个 MCP 工具 · 1 个提示 · 1 个资源 | `pip install bankstatementparser-mcp` | 您的对账单以混合或遗留格式到达 - **此软件包** |
| [`structured-address-fix-mcp`](https://github.com/sebastienrousseau/structured-address-fix-mcp) | ISO 20022 邮政地址分类,2026 年 11 月结构化地址切换的评估和修复,以及高级编排层 - 准备就绪评分,配置文件检查和审计证据(`pacs.008` / `pain.001` 债务人和债权人地址) | 9 个 MCP 工具 | `pip install structured-address-fix-mcp` | 您需要债务人/债权人地址在 2026 年 11 月切换前准备就绪 |
| [`iso20022-readiness-suite-mcp`](https://github.com/sebastienrousseau/iso20022-readiness-suite-mcp) | 编排网关:检测 → 结构验证 → 清理配置文件检查 → 准备就绪评分,以及自动修复和 `pacs.002` 银行响应模拟 - 基础服务器上的元客户端 | 4 个 MCP 工具 | `pip install iso20022-readiness-suite-mcp` | 您想要一个高级准备就绪/编排入口点 |
| [`iso20022-bank-profile-mcp`](https://github.com/sebastienrousseau/iso20022-bank-profile-mcp) | 管理,验证和提供银行特定的清理配置文件/规则包(CBPR+,SEPA_Instant,FedNow,Generic);高级规则包授权门控 | 4 个 MCP 工具 | `pip install iso20022-bank-profile-mcp` | 您根据自己的机构市场实践检查支付 |
| [`iso20022-evidence-pack-mcp`](https://github.com/sebastienrousseau/iso20022-evidence-pack-mcp) | 将准备就绪情况,修复差异和模拟响应编译成密封的,Ed25519 签名的审计证据包 | 6 个 MCP 工具 | `pip install iso20022-evidence-pack-mcp` | 您需要篡改证据审计/认证工件 |
一句话: **`camt053-mcp`** 是银行对账单旗舰(最深的 camt.05x 接口,stdio + 身份验证的流式 HTTP); **`iso20022-mcp`** 是通用消息工具包(整个目录的几个动词); **`reconcile-mcp`** 是和解工作流(预期的钱是否实际到达?); **`bankstatementparser-mcp`** 是摄入层(多种格式输入,一个交易形状输出);以及 **`structured-address-fix-mcp`** 是邮政地址专家(债务人/债权人地址在 2026 年 11 月切换前准备就绪)。
---
## 安装
| 渠道 | 命令 | 备注 |
| --- | --- | --- |
| PyPI | `pip install bankstatementparser-mcp` | 拉取 `bankstatementparser >= 0.0.11` + MCP SDK |
| 源代码 | `git clone https://github.com/sebastienrousseau/bankstatementparser-mcp && cd bankstatementparser-mcp && poetry install` | 用于开发 |
| Docker(GHCR) | `docker pull ghcr.io/sebastienrousseau/bankstatementparser-mcp:latest` | 多架构(linux/amd64,linux/arm64);在 stdio 上运行 `bankstatementparser-mcp` |
需要 Python 3.10 或更高版本。在 macOS、Linux 和 Windows 上运行。
<details>
<summary>使用隔离的虚拟环境(推荐)</summary>
```sh
python -m venv venv
source venv/bin/activate # macOS/Linux
venv\Scripts\activate # Windows
python -m pip install -U bankstatementparser-mcp
```
</details>
---
## 快速开始
使用任何 MCP 客户端(显示 Claude Desktop)注册服务器:
```json
{
"mcpServers": {
"bankstatementparser": { "command": "bankstatementparser-mcp" }
}
}
```
就这样。重启客户端,代理就可以使用这些工具了。
服务器通过 stdin/stdout 讲 JSON-RPC - 它是被 MCP 客户端启动的,而不是交互式使用的。
---
## 工具
所有工具都委托给 `bankstatementparser` 解析器核心,因此它们的行为与库相同。
- `list_supported_formats` — 列出解析器可以读取的每种银行对账单格式
- `detect_format` — 检测内联有效负载是哪种对账单格式
- `parse_statement` — 将对账单解析为结构化交易和摘要
- `validate_statement` — 干燥运行检查对账单是否解析干净
- `summarize_statement` — 仅返回对账单摘要(无每笔交易行)
另外还有一个资源和一个提示:
- 资源 `bankstatementparser://formats` — 只读目录,支持的格式及其文件扩展名
- 提示 `analyze_statement` — 有指导的多步骤提示,引导代理阅读和核对对账单
支持的格式: `camt` (ISO 20022 CAMT.053, `.xml`), `pain001` (ISO 20022 pain.001, `.xml`), `csv` (`.csv`), `ofx` (`.ofx`), `qfx` (`.qfx`),以及 `mt940` (SWIFT MT940, `.mt940` / `.sta`)。
---
## 使用工具
这些工具是 `bankstatementparser_mcp.server` 模块的普通函数,因此您可以从进程中调用它们:
```python
from bankstatementparser_mcp.server import (
detect_format,
parse_statement,
summarize_statement,
)
csv = (
"date,description,amount,currency,balance\n"
"2023-01-02,Salary,500.00,EUR,1500.00\n"
"2023-01-03,Groceries,-40.50,EUR,1459.50\n"
)
# 1. 从文件名提示和内容中检测格式。
print(detect_format(csv, "statement.csv"))
# -> csv
# 2. 将对账单解析为结构化行 + 摘要。
parsed = parse_statement(csv, "statement.csv")
print(parsed["transaction_count"], parsed["columns"])
# 3. 读取开仓/平仓余额。
print(summarize_statement(csv, "statement.csv"))
```
资源和提示也是普通函数:`formats_resource` 支持 `bankstatementparser://formats`,而 `analyze_statement` 返回有指导的分析提示。
```python
from bankstatementparser_mcp.server import (
analyze_statement,
formats_resource,
)
print(formats_resource()) # 支持的格式目录
print(analyze_statement("statement.csv")) # 有指导的分析提示
```
查看 [`examples/`](examples/) 文件夹,了解可运行的演练,包括 [`04_resource_and_prompt.py`](examples/04_resource_and_prompt.py)。
---
## 何时不使用 bankstatementparser
- **您不是在驱动一个 MCP 感知的代理。** 直接使用 [`bankstatementparser`](https://pypi.org/project/bankstatementparser/) CLI 或库 - 它公开了相同接口,间接性较小。
- **您需要批量解析已经在磁盘上的文件。** 库的 CLI 直接读取路径,避免了 MCP 工具使用的内联内容往返。
---
## 开发
`bankstatementparser-mcp` 使用 [Poetry](https://python-poetry.org/) 和 [mise](https://mise.jdx.dev/)。
```bash
git clone https://github.com/sebastienrousseau/bankstatementparser-mcp.git
cd bankstatementparser-mcp
mise install
poetry install
```
`Makefile` 协调质量门(与 CI 保持同步):
| 目标 | 它运行什么 |
| --- | --- |
| `make check` | 所有门(提交前需要) |
| `make test` | `pytest --cov=bankstatementparser_mcp --cov-branch --cov-fail-under=100` |
| `make lint` | `ruff check` + `black --check` |
| `make type-check` | `mypy --strict` |
| `make docs` | `interrogate --fail-under=100` (文档字符串覆盖率) |
当前状态(v0.0.14):**100% 行 + 分支覆盖率**,对抗 100% 强制底线,mypy `--strict` 清洁,询问 100%。
---
## 安全
- **工具不会写入持久文件系统。** 每个调用都会将内联内容写入私有临时文件,该文件在调用返回后立即删除。
- **`validate_statement` 失败** 以结构化 `{"is_valid": false, "error": ...}` 有效载荷返回 - 永远不会作为堆栈跟踪。
- **依赖项** 通过 `poetry.lock` 固定,并由 CI 中的 `pip-audit` 和 Bandit 审计。
若要报告漏洞,请使用 [GitHub 私有漏洞报告](https://github.com/sebastienrousseau/bankstatementparser-mcp/security) 而不是公共问题。
---
## 文档
- **可运行的示例:** [`examples/`](https://github.com/sebastienrousseau/bankstatementparser-mcp/tree/main/examples)
- **发布历史:** [CHANGELOG.md](https://github.com/sebastienrousseau/bankstatementparser-mcp/blob/main/CHANGELOG.md)
- **MCP 规范:** [modelcontextprotocol.io](https://modelcontextprotocol.io)
---
## 贡献
欢迎贡献 - 请参阅 [贡献说明](https://github.com/sebastienrousseau/bankstatementparser-mcp/blob/main/CONTRIBUTING.md)。感谢所有帮助构建 `bankstatementparser-mcp` 的 [贡献者](https://github.com/sebastienrousseau/bankstatementparser-mcp/graphs/contributors)。
---
## 相关 MCP 服务器
**ISO 20022 MCP 套件**的四个核心服务器在上面的 [ISO 20022 MCP 套件](#iso-20022-mcp-套件) 中进行了比较。更广泛的家族 - 开源,Apache-2.0 许可的 MCP 服务器,用于银行和金融服务 AI 代理 - 还包括:
| 服务器 | 目的 |
|---|---|
| [`pain001-mcp`](https://github.com/sebastienrousseau/pain001-mcp) | 生成和验证 ISO 20022 pain.001 支付文件(v03-v12,pain.008,SEPA)以及规则检查 |
| [`pacs008-mcp`](https://github.com/sebastienrousseau/pacs008-mcp) | 生成,验证,解析和方案检查 ISO 20022 pacs.008 银行间转账 + 2026 年 11 月地址检查 |
| [`acmt001-mcp`](https://github.com/sebastienrousseau/acmt001-mcp) | 生成和验证 ISO 20022 acmt 账户管理消息 |
| [`noyalib-mcp`](https://github.com/sebastienrousseau/noyalib) | 无损 YAML 1.2 解析,格式化和验证(Rust,100% 规范兼容) |
---
## MCP 注册表
`mcp-name: io.github.sebastienrousseau/bankstatementparser-mcp`
---
## 许可
根据 [Apache License, Version 2.0](https://opensource.org/license/apache-2.0/) 许可。任何提交的贡献都将根据上述许可,并附带额外的条款。
---
<p align="center">
<a href="https://bankstatementparser.com">bankstatementparser.com</a> ·
<a href="https://pypi.org/project/bankstatementparser-mcp/">PyPI</a> ·
<a href="https://github.com/sebastienrousseau/bankstatementparser-mcp">GitHub</a>
</p>
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器