acmt001-mcp: An MCP Server for ISO 20022 Account Management
[acmt001-mcp banner]
[Build]
[Registry]
[Docs]
[OpenSSF Scorecard]
[OpenSSF Best Practices]
[License: Apache-2.0 OR MIT]
[Python 3.11 or newer]
[Glama MCP server listing]
A Model Context Protocol server that exposes the acmt001
ISO 20022 Account Management library as tools for AI agents and assistants —
discover message types, inspect input schemas, validate records and financial
identifiers, and generate validated XML, all from your favourite MCP client.
Latest release: v0.0.15: 7 MCP tools over stdio, streamable HTTP or
SSE, all backed by the shared acmt001.services layer, for Python 3.11+.
Ships in lockstep with acmt001 0.0.15; every CI and image install is
hash-pinned, and the tools are fuzzed. See what's new →
[acmt001-mcp Demo]
Contents
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. acmt001-mcp
is an MCP server that turns the acmt001 library into a set of
first-class agent tools, so an assistant can generate and validate ISO 20022
acmt Account Management XML messages — the standardised instructions,
confirmations, and reports that govern the lifecycle of a bank account (opening,
maintenance, closing, identification, and switching) — directly from a
conversation.
Every tool is a thin, typed wrapper over acmt001.services — the single shared
facade also 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.
This package is part of the acmt001 suite — a set of independently
installable packages that share the acmt001.services layer:
acmt001 — the core library (CLI + REST API)
acmt001-mcp — this package, the Model Context Protocol server
acmt001-lsp — the Language Server Protocol server for editors
Install
acmt001-mcp runs on macOS, Linux, and Windows and requires Python 3.11+
and pip. It pulls in the core acmt001 library and the MCP SDK
automatically.
Note: while the core acmt001 library is not yet on PyPI, install it from
source first:
Using an isolated virtual environment (recommended)
Quick Start
Launch the server over stdio (the default transport):
Register it with any MCP client (e.g. Claude Desktop) by adding it to the
client's configuration:
The agent can then call the tools below to validate account data and generate
ISO 20022 messages on demand.
Transports
One command line, three transports:
--host and --port change the bind address (defaults 127.0.0.1 and
8000). The HTTP transports carry no authentication of their own: bind
loopback, or put the server behind a gateway you trust before binding a
routable address. Every release is verified over streamable HTTP with
scout in both protocol
eras and over SSE with the MCP SDK client; see
ADR 0001.
Tools
All tools delegate to the shared acmt001.services layer, so they behave
identically to the CLI and REST API.
list_message_types — List the 34 supported acmt message types
get_required_fields — Required input fields for a message type
get_input_schema — Full input JSON Schema for a message type
validate_records — Validate flat records against a message type
validate_identifier — Validate an IBAN, BIC, or LEI
generate_message — Generate a validated acmt XML message
verify_lei_online — Look an LEI up in the live GLEIF register (needs the online extra)
Using the tools
You can invoke the tools in-process — without a transport — straight through the
server instance. This mirrors what an agent receives over stdio. The runnable
version of this snippet lives in examples/mcp_tools.py.
Run it directly:
Benchmarks
The benchmark measures what an agent waits for: the dispatch floor
(list_message_types, around a microsecond), the metadata lookups used
to build a request, and the two batch tools side by side.
The result worth knowing is the asymmetry between those two.
validate_records checks every record, so it is linear in batch size.
generate_message, for a single-account message type like the default
acmt.007.001.05, renders only the first record — twenty-seven of
the thirty-four templates work this way. So validating a hundred records
and generating from them costs roughly 260 ms of validation against 6 ms
of generation, and returns one message rather than a hundred.
That is correct ISO 20022 behaviour and a real trap when batching, which
is why the benchmark prints output size beside the timings: flat bytes
across growing input is what tells you the rest of the batch was not
rendered. See docs/benchmarks.md.
Documentation
Development
acmt001-mcp uses Poetry and
mise.
This package depends on the core acmt001 library. Until it is on PyPI,
install it from source first:
pip install "git+https://github.com/sebastienrousseau/acmt001.git".
A Makefile orchestrates the quality gates (kept in lockstep with CI):
The property-based tests (Hypothesis) run as part of make test; set
HYPOTHESIS_PROFILE=mutation for the slimmer profile the mutation run
uses.
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:
MCP Registry
mcp-name: io.github.sebastienrousseau/acmt001-mcp
License
Licensed under the Apache License, 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 acmt001 ISO 20022 Account Management library and the
Model Context Protocol Python SDK.