pypi pain001-mcpstdioupdated 8d ago
Model Context Protocol server exposing the pain001 ISO 20022 payment library as 17 first-class agent tools.
Was kannst du mit pain001 mcp machen?
B -->|delegates to| C["pain001"]
C -->|render + validate| D["ISO 20022 pain.001 XML"]
---
## When not to use pain001-mcp
- **You're not driving an MCP-aware agent.** Use the CLI
(`pain001 …`) or the REST API (`pain001 serve`) directly — both expose
the same surface with less indirection.
- **You need editor diagnostics, not agent tools.** Use
[`pain001-lsp`](https://pypi.org/project/pain001-lsp/) — it speaks
the Language Server Protocol to VS Code, Neovim, Helix, Emacs, etc.
- **You need to extend the tool surface in-tree.** The companion
[`pain001[mcp]`](https://github.com/sebastienrousseau/pain001) extra
exposes the same FastMCP instance and is easier to fork inside an
organisation's pain001 install.
---
## Development
`pain001-mcp` uses [Poetry](https://python-poetry.org/) and
[mise](https://mise.jdx.dev/).
```bash
git clone https://github.com/sebastienrousseau/pain001-mcp.git
cd pain001-mcp
mise install
poetry install
A Makefile orchestrates the quality gates (kept in lockstep with CI):
| Target | What it runs |
|---|---|
make check |
All gates (REQUIRED before commit) |
make test |
pytest --cov=pain001_mcp --cov-branch --cov-fail-under=100 |
make lint |
ruff check + black --check |
make type-check |
mypy --strict |
make docs |
interrogate --fail-under=100 (docstring coverage) |
Current state (v0.0.57): 71 tests passing, 100% line + branch
coverage against a 100% enforced floor, mypy --strict clean,
interrogate 100%.
Security
- No filesystem writes from tools.
generate_messageandgenerate_message_from_filereturn the XML as a string; no tool writes to disk. - XML parsing of
camt.053andpain.002is routed throughdefusedxml(via the corepain001library); XXE and entity expansion are rejected. - Validation failures are returned as structured
{"error": ...}payloads — never as stack traces — so the agent never sees an internal path leak. - Dependencies are pinned via
poetry.lockand audited bypip-auditand Bandit in CI.
To report a vulnerability, please use GitHub private vulnerability reporting rather than a public issue.
Documentation
- Runnable examples:
examples/ - Release history: CHANGELOG.md
- Core library docs: docs.pain001.com
- MCP specification: modelcontextprotocol.io
Contributing
Contributions are welcome — see the
contributing instructions.
Thanks to all the
contributors
who have helped build pain001-mcp.
Related MCP Servers
Part of the ISO 20022 MCP Suite — open-source, Apache-2.0 licensed MCP servers for banking and financial-services AI agents:
| Server | Purpose |
|---|---|
pacs008-mcp |
Generate, validate, parse & scheme-check ISO 20022 pacs.008 FI-to-FI credit transfers + Nov-2026 address linting |
camt053-mcp |
Parse & reconcile ISO 20022 camt.053 bank-to-customer statements — CBPR+/HVPS+ ready |
acmt001-mcp |
Generate & validate ISO 20022 acmt account-management messages |
bankstatementparser-mcp |
Parse bank statements (BAI2, MT940/MT942, CAMT.053, OFX, CSV) into structured transactions |
noyalib-mcp |
Lossless YAML 1.2 parsing, formatting & validation (Rust, 100% spec compliance) |
MCP Registry
mcp-name: io.github.sebastienrousseau/pain001-mcp
License
Licensed under the Apache License, Version 2.0. Any contribution submitted for inclusion shall be licensed as above, without additional terms.
Installation
pain001 mcp zu deinem Client hinzufügen. Wähl den, den du nutzt.
claude mcp add pain001-mcp -- uvx pain001-mcpcodex mcp add pain001-mcp -- uvx pain001-mcpamp mcp add pain001-mcp -- uvx pain001-mcp{
"mcpServers": {
"pain001-mcp": {
"command": "uvx",
"args": [
"pain001-mcp"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"pain001-mcp": {
"command": "uvx",
"args": [
"pain001-mcp"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"pain001-mcp","command":"uvx","args":["pain001-mcp"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"pain001-mcp": {
"command": "uvx",
"args": [
"pain001-mcp"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"pain001-mcp": {
"command": "uvx",
"args": [
"pain001-mcp"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"pain001-mcp": {
"command": "uvx",
"args": [
"pain001-mcp"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"pain001-mcp": {
"type": "local",
"command": "uvx",
"args": [
"pain001-mcp"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"pain001-mcp": {
"command": {
"path": "uvx",
"args": [
"pain001-mcp"
]
}
}
}
}Add to your Zed `settings.json`.
uvx pain001-mcpRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
17 Tools
pain001 mcp stellt einem verbundenen Agent 17 Tools bereit.
- list_message_types
- List the supported `pain.001` / `pain.008` message types
- get_required_fields
- Required input fields for a message type
- get_input_schema
- Full input JSON Schema for a message type
- inspect_template
- Template metadata + accepted formats for a message type
- validate_records
- Validate flat records against a message type
- validate_payment_scheme
- Run a scheme rulebook (`sepa-sct`, `sepa-sdd`, `sepa-inst`, `sepa-b2b`, `xborder-ct`)
- validate_identifier
- Validate an IBAN or BIC
- validate_xml_against_schema
- Validate an XML payload against its bundled XSD without writing to disk
- generate_message
- Generate a validated XML message and return the string
- generate_message_async
- Async variant of `generate_message` for long batches
- generate_message_from_file
- Render directly from a CSV path on disk
- list_supported_formats
- List the data formats `pain001` can load (CSV, SQLite, JSON, JSONL, Parquet)
- parse_camt053
- Parse a `camt.053` bank statement XML into structured data
- parse_pain002
- Parse a `pain.002` payment-status report XML into structured data
- migrate_records
- Migrate flat records between pain.001 schema versions
- sanitize_to_iso20022_charset
- Transliterate text to the ISO 20022 Latin set
- convert_mt101
- Convert a legacy SWIFT MT101 (Request for Transfer) into pain.001 records (one per transaction)
Score
76 / 100
Gut
- Dokumentation25/25
- Pflege25/25
- Vertrauen6/20
- Funktionsumfang8/15
- Installation12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 1 days ago
- Has a release history
- Repository is not archived
- No licence detected
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 17 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Versionsverlauf
| Versionen | Veröffentlicht |
|---|---|
| 0.0.65Aktuell | 29. Aug. 2026 |
| 0.0.63 | 29. Aug. 2026 |
| 0.0.62 | 21. Aug. 2026 |
| 0.0.61 | 21. Aug. 2026 |
| 0.0.60 | 20. Aug. 2026 |
| 0.0.59 | 20. Aug. 2026 |
| 0.0.58 | 28. Juli 2026 |
| 0.0.55 | 12. Juli 2026 |
| 0.0.54 | 6. Juli 2026 |