Skip to main content
|stdio| B["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_message and generate_message_from_file return the XML as a string; no tool writes to disk.
  • XML parsing of camt.053 and pain.002 is routed through defusedxml (via the core pain001 library); 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.lock and audited by pip-audit and Bandit in CI.

To report a vulnerability, please use GitHub private vulnerability reporting rather than a public issue.


Documentation


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.


pain001.com · PyPI · GitHub

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pain001_mcp-0.0.70.tar.gz (33.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pain001_mcp-0.0.70-py3-none-any.whl (30.2 kB view details)

Uploaded Python 3

File details

Details for the file pain001_mcp-0.0.70.tar.gz.

File metadata

  • Download URL: pain001_mcp-0.0.70.tar.gz
  • Upload date:
  • Size: 33.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pain001_mcp-0.0.70.tar.gz
Algorithm Hash digest
SHA256 59bc6cdff9ca1ea52f3d0413fdb5a3777aab2c833632f67d4ed2c0aaebe42f85
MD5 54d6886ddd972bd16b2bbb1c7ce42620
BLAKE2b-256 4f897a4837d00d3b739ef0ad184465d53d8463ef0c4ec845a2eedac1f8f9ef92

See more details on using hashes here.

Provenance

The following attestation bundles were made for pain001_mcp-0.0.70.tar.gz:

Publisher: release.yml on sebastienrousseau/pain001-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pain001_mcp-0.0.70-py3-none-any.whl.

File metadata

  • Download URL: pain001_mcp-0.0.70-py3-none-any.whl
  • Upload date:
  • Size: 30.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for pain001_mcp-0.0.70-py3-none-any.whl
Algorithm Hash digest
SHA256 57607b893edf7c989f9fdc1788901bb510049f53897b23c318ac8ef75a7db324
MD5 9c268e748b87ad2f134e27330165b68b
BLAKE2b-256 6a94cc2df3ad8344525b3981dcd9e376ea40569cc8fe3c86ff4ca2c1d33de529

See more details on using hashes here.

Provenance

The following attestation bundles were made for pain001_mcp-0.0.70-py3-none-any.whl:

Publisher: release.yml on sebastienrousseau/pain001-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.0.70 This release

2 files

0.0.69

2 files

0.0.68

2 files

0.0.67

2 files

0.0.66

2 files

0.0.65

2 files

0.0.63

2 files

0.0.62

2 files

0.0.61

2 files

0.0.60

2 files

0.0.59

2 files

0.0.58

2 files

0.0.57

2 files

0.0.56

2 files

0.0.55

2 files

0.0.54

2 files

0.0.53

2 files

0.0.52

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page