pacs008-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pacs008-mcpgenerate a pacs.008 XML for a 1000 EUR cross-border payment"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
pacs008-mcp: An MCP Server for ISO 20022 FI-to-FI Credit Transfers
A Model Context Protocol server that exposes the pacs008
ISO 20022 FI-to-FI Customer Credit Transfer library as tools for AI agents and
assistants — discover message types and scheme profiles, validate records
against the JSON Schema and against a rail's usage guidelines, generate
validated XML, validate raw XML against the bundled XSD, and parse inbound
messages, all from your favourite MCP client.
Latest release: v0.0.1 — nine MCP tools over stdio, all backed by the
pacs008library, for Python 3.10+.
Contents
Related MCP server: jPOS MCP Server
Overview
The Model Context Protocol (MCP) is an open standard that lets AI agents
and assistants discover and call external tools in a uniform way. pacs008-mcp
is an MCP server that turns the pacs008 library into a set of
first-class agent tools, so an assistant can generate, validate, and parse
ISO 20022 pacs.008 FI-to-FI Customer Credit Transfer XML messages — and
the related pacs.002/.004 status and return messages — directly from a
conversation.
Every tool is a thin, typed wrapper over the pacs008 library — the same
package used by the CLI and REST API — so all interfaces behave identically.
Tools return JSON-serialisable data; on a validation error they return an
{"error": ...} payload rather than raising.
Website: https://pacs008.com
Source code: https://github.com/sebastienrousseau/pacs008-mcp
Bug reports: https://github.com/sebastienrousseau/pacs008-mcp/issues
flowchart LR
A["MCP client<br/>(Claude Desktop, IDE, agent)"] -->|stdio| B["pacs008-mcp"]
B -->|delegates to| C["pacs008 library"]
C -->|render + validate| D["ISO 20022 pacs XML"]Install
pacs008-mcp runs on macOS, Linux, and Windows and requires Python 3.10+
and pip. It pulls in the core pacs008 library and the MCP SDK
automatically.
python -m pip install pacs008-mcpNote: while the core
pacs008library is not yet on PyPI, install it from source first:python -m pip install "git+https://github.com/sebastienrousseau/pacs008.git" python -m pip install pacs008-mcp
Quick Start
Launch the server over stdio (the FastMCP default transport):
pacs008-mcpRegister it with any MCP client (e.g. Claude Desktop) by adding it to the client's configuration:
{
"mcpServers": {
"pacs008": { "command": "pacs008-mcp" }
}
}Tools
All tools wrap the pacs008 library, so they behave identically to the CLI and
REST API.
Tool | Purpose |
| List the 20 supported ISO 20022 pacs message types |
| List the registered scheme / usage-guideline profiles |
| Inspect a scheme profile's rules |
| Required input fields for a message type |
| Full input JSON Schema for a message type |
| Validate flat records against a message type's schema |
| Validate records against a scheme's usage guidelines |
| Generate a validated pacs XML message |
| Validate a raw XML string against the bundled XSD |
| Parse & classify an inbound ISO 20022 message |
Using the tools
You can invoke the tools in-process — without a transport — straight through the
FastMCP instance. This mirrors what an agent receives over stdio. The runnable
version of this snippet lives in examples/mcp_tools.py.
import asyncio
from pacs008_mcp.server import server
record = [
{
"msg_id": "MSG001",
"creation_date_time": "2026-01-15T10:30:00",
"nb_of_txs": "1",
"settlement_method": "CLRG",
"interbank_settlement_date": "2026-01-15",
"end_to_end_id": "E2E001",
"interbank_settlement_amount": "1000.00",
"interbank_settlement_currency": "EUR",
"charge_bearer": "SHAR",
"debtor_name": "Debtor Corp",
"debtor_agent_bic": "DEUTDEFF",
"creditor_agent_bic": "COBADEFF",
"creditor_name": "Creditor Ltd",
}
]
async def main() -> None:
async def call(name, args):
result = await server.call_tool(name, args)
content = result[0] if isinstance(result, tuple) else result
return content[0].text if content else ""
print(await call("list_schemes", {}))
xml = await call("generate_message",
{"message_type": "pacs.008.001.08", "records": record})
print(xml[:46]) # -> <?xml version="1.0" encoding="UTF-8"?> ...
asyncio.run(main())Run it directly:
python examples/mcp_tools.pyDevelopment
pacs008-mcp uses Poetry and mise.
git clone https://github.com/sebastienrousseau/pacs008-mcp.git && cd pacs008-mcp
mise install
poetry install
poetry shellThis package depends on the core
pacs008library. Until it is on PyPI, install it from source first:pip install "git+https://github.com/sebastienrousseau/pacs008.git".
A Makefile orchestrates the quality gates (kept in lockstep with CI):
make check # all gates (REQUIRED before commit)
make test # pytest
make lint # ruff + black
make type-check # mypy --strictMCP Registry
mcp-name: io.github.sebastienrousseau/pacs008-mcp
Licence
Licensed under the Apache Licence, Version 2.0. Any contribution submitted for inclusion shall be licensed as above, without additional terms.
Contribution
Contributions are welcome — see the contributing instructions. Thanks to all contributors.
Acknowledgements
Built on the pacs008 ISO 20022 FI-to-FI Customer Credit Transfer
library and the Model Context Protocol Python SDK.
Maintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sebastienrousseau/pacs008-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server