pypi pain001-mcpstdioupdated 8d ago
Model Context Protocol server exposing the pain001 ISO 20022 payment library as 17 first-class agent tools.
¿Qué puedes hacer con pain001 mcp?
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.
Instalación
Añade pain001 mcp a tu cliente. Elige el que uses.
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 herramientas
pain001 mcp expone 17 herramientas a un agente conectado.
- 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)
Puntuación
76 / 100
Buena
- Documentación25/25
- Mantenimiento25/25
- Confianza6/20
- Capacidad8/15
- Instalación12/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
Historial de versiones
| Versiones | Publicada |
|---|---|
| 0.0.65Última | 29 ago 2026 |
| 0.0.63 | 29 ago 2026 |
| 0.0.62 | 21 ago 2026 |
| 0.0.61 | 21 ago 2026 |
| 0.0.60 | 20 ago 2026 |
| 0.0.59 | 20 ago 2026 |
| 0.0.58 | 28 jul 2026 |
| 0.0.55 | 12 jul 2026 |
| 0.0.54 | 6 jul 2026 |