Bankstatementparser Mcp

io.github.sebastienrousseauPublished by GitHub account sebastienrousseauv0.0.19Updated Oct 24, 2026

MCP server for parsing bank statements (BAI2, MT940/MT942, CAMT.053, OFX) via stdio.

VerifiedSTDIODesktop onlyFinanceData & Analytics

Overview

AI-generated overview

Local MCP server that lets an assistant detect, parse, validate and summarize bank statements in CAMT.053, pain.001, MT940, OFX/QFX and CSV formats.

What you can do
  • List and detect statement formats, including a read-only catalogue of supported formats and file extensions
  • Parse inline statement content into structured transactions plus a summary
  • Validate a statement as a dry run and return structured results
  • Summarize a statement without per-transaction rows
  • Run a guided multi-step prompt that walks an agent through reading and reconciling a statement
When to use it
Useful when statements arrive in mixed or legacy formats and you want an assistant to read, check and summarize them inside a conversation rather than through a CLI. The README suggests using the library or CLI directly instead for bulk parsing of files already on disk.
Requirements
Python 3.10 or later on macOS, Linux or Windows; installed from PyPI as bankstatementparser-mcp and launched by an MCP client over stdio. Optional streamable HTTP or SSE transports can be enabled with command-line flags. No accounts, API keys or environment variables are declared.
Before you install
The HTTP transports carry no authentication of their own, so bind to loopback or place the server behind a trusted gateway. Tools take inline statement content, which is written to a private temporary file for each call and deleted afterwards. Statement data is financial and sensitive; check where the client sends it.

Installation

In SourceWeft

  1. Open Bankstatementparser Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[bankstatementparser-mcp logo]

bankstatementparser-mcp

Model Context Protocol server exposing the bankstatementparser library as first-class agent tools for reading bank statements.

[Tests] [Coverage] [PyPI version] [Python versions] [PyPI downloads] [OpenSSF Scorecard] [License: Apache-2.0 OR MIT] [Glama MCP server score]

[bankstatementparser-mcp Demo]


Contents

Getting started

Library reference

  • Tools — the five tools, one resource, one prompt
  • Using the tools — call them in-process from Python

Operational


What is bankstatementparser-mcp?

The Model Context Protocol (MCP) is an open standard that lets AI agents discover and call external tools in a uniform way. bankstatementparser-mcp is the MCP server that turns the bankstatementparser library into first-class agent tools — so an assistant can read, validate, and summarise bank statements in formats such as ISO 20022 CAMT.053, SWIFT MT940, OFX/QFX, and CSV directly from a conversation.

Every tool is a thin wrapper over the bankstatementparser parser core (create_parser, detect_statement_format), so the results behave identically to the CLI. Because an MCP client does not share the server's filesystem, the tools take inline statement content (plus a filename hint) and materialise it in a private temporary file for the duration of a single call. Tools return JSON-serialisable data.

ConcernHow bankstatementparser-mcp handles it
Transportstdio by default; --transport streamable-http (2026-07-28 and 2025-11-25 on one endpoint) or --transport sse for HTTP
Input modelInline content + filename hint; no shared filesystem required
Format fidelityTools delegate to bankstatementparser's create_parser pipeline
Format detectiondetect_format mirrors the library's detect_statement_format
Validationvalidate_statement is a dry run that returns structured results
IsolationEach call writes to a private temp file that is deleted on exit

The ISO 20022 MCP Suite

bankstatementparser-mcp is the ingestion layer of eight coordinated, vendor-neutral MCP servers that together cover the ISO 20022 bank-statement workflow and the November 2026 structured-address cutover — statement depth, whole-catalogue routing, reconciliation, multi-format ingestion, and address remediation. Dependency ranges are kept aligned across the suite, so the servers co-install cleanly in a single Python environment: start with one, add the rest as your workflow grows.

ServerScopeSurfaceInstallUse it when
camt053-mcpISO 20022 camt.053/camt.052 bank statements: parse, validate, filter, reverse; MT940/MT942 migration; CBPR+ readiness; journal export24 MCP tools · 4 prompts · 3 resourcespip install camt053-mcpYou work with bank-to-customer statements end to end — the suite's flagship
iso20022-mcpUnified gateway: search / describe / validate / generate / parse meta-tools routed across the pain · pacs · camt · acmt families7 meta-toolspip install "iso20022-mcp[all]"You want one entry point to every message family
reconcile-mcpMatches expected pain.001 payments against observed camt.053 entries — exact, partial, one-to-many, many-to-one, every match scored and explained7 MCP toolspip install reconcile-mcpYou need explainable statement/payment reconciliation
bankstatementparser-mcpMulti-format statement ingestion: ISO 20022 CAMT.053 and pain.001, SWIFT MT940, OFX/QFX, CSV5 MCP tools · 1 prompt · 1 resourcepip install bankstatementparser-mcpYour statements arrive in mixed or legacy formats — this package
structured-address-fix-mcpISO 20022 postal-address classification, assessment & remediation for the November 2026 structured-address cutover, plus a high-level orchestration layer — readiness scoring, clearing-profile linting, and audit evidence (pacs.008 / pain.001 debtor & creditor addresses)9 MCP toolspip install structured-address-fix-mcpYou need debtor/creditor addresses cliff-ready ahead of 14 Nov 2026
iso20022-readiness-suite-mcpOrchestration gateway: detect → structurally validate → clearing-profile lint → readiness score, plus automated remediation and pacs.002 bank-response simulation — a meta-client over the foundational servers4 MCP toolspip install iso20022-readiness-suite-mcpYou want one high-level readiness / orchestration entry point over the suite
iso20022-bank-profile-mcpManages, validates and serves bank-specific clearing profiles / rule packs (CBPR+, SEPA_Instant, FedNow, Generic); premium rule-pack entitlement gating4 MCP toolspip install iso20022-bank-profile-mcpYou lint payments against your own institution's market practice
iso20022-evidence-pack-mcpCompiles readiness findings, remediation diffs and simulated responses into a sealed, Ed25519-signable audit evidence pack6 MCP toolspip install iso20022-evidence-pack-mcpYou need tamper-evident audit / certification artifacts

In one line each: camt053-mcp is the bank-statement flagship (deepest camt.05x surface, stdio + authenticated streamable HTTP); iso20022-mcp is the generic message toolkit (a handful of verbs over the whole catalogue); reconcile-mcp is the reconciliation workflow (did the money we expected actually arrive?); bankstatementparser-mcp is the ingestion layer (many formats in, one transaction shape out); and structured-address-fix-mcp is the postal-address specialist (debtor/creditor addresses cliff-ready for the Nov 2026 cutover).


Install

ChannelCommandNotes
PyPIpip install bankstatementparser-mcpPulls in bankstatementparser >= 0.0.28 + MCP SDK
Sourcegit clone https://github.com/sebastienrousseau/bankstatementparser-mcp && cd bankstatementparser-mcp && poetry installFor development
Docker (GHCR)docker pull ghcr.io/sebastienrousseau/bankstatementparser-mcp:latestMulti-arch (linux/amd64, linux/arm64); runs bankstatementparser-mcp over stdio; pass --transport streamable-http --host 0.0.0.0 and publish port 8000 for HTTP

Requires Python 3.10 or later. Works on macOS, Linux, and Windows.

Using an isolated virtual environment (recommended)
sh
python -m venv venvsource venv/bin/activate        # macOS/Linuxvenv\Scripts\activate           # Windowspython -m pip install -U bankstatementparser-mcp

Quick start

Register the server with any MCP client (Claude Desktop shown):

json
{  "mcpServers": {    "bankstatementparser": { "command": "bankstatementparser-mcp" }  }}

That's it. Restart the client and the tools are available to the agent.

By default the server speaks JSON-RPC over stdin/stdout — it is meant to be launched by an MCP client, not used interactively. For a shared deployment, see Transports.


Transports

One command line, three transports:

CommandTransportEndpointProtocol revisions
bankstatementparser-mcpstdiothe client spawns the process2026-07-28, 2025-11-25
bankstatementparser-mcp --transport streamable-httpStreamable HTTPhttp://127.0.0.1:8000/mcp2026-07-28 (stateless, server/discover) and 2025-11-25 (initialize, Mcp-Session-Id) on the same endpoint; responses stream as server-sent events, GET opens the server-to-client stream
bankstatementparser-mcp --transport sseHTTP+SSE (2024-11-05)http://127.0.0.1:8000/sse and /messages/for clients that still expect the older transport

--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 passmcp in both protocol eras and over SSE with the MCP SDK client; see ADR 0001.

json
{  "mcpServers": {    "bankstatementparser": { "url": "http://127.0.0.1:8000/mcp" }  }}

Tools

All tools delegate to the bankstatementparser parser core, so they behave identically to the library.

  • list_supported_formats — List every bank statement format the parser can read
  • detect_format — Detect which statement format an inline payload is
  • parse_statement — Parse a statement into structured transactions plus a summary
  • validate_statement — Dry-run check whether a statement parses cleanly
  • summarize_statement — Return only the statement summary (no per-transaction rows)

Plus one resource and one prompt:

  • Resource bankstatementparser://formats — Read-only catalogue of supported formats and their file extensions
  • Prompt analyze_statement — Guided multi-step prompt that walks an agent through reading and reconciling a statement

Supported formats: camt (ISO 20022 CAMT.053, .xml), pain001 (ISO 20022 pain.001, .xml), csv (.csv), ofx (.ofx), qfx (.qfx), and mt940 (SWIFT MT940, .mt940 / .sta).


Using the tools

The tools are plain functions on the bankstatementparser_mcp.server module, so you can call them in-process:

python
from bankstatementparser_mcp.server import (    detect_format,    parse_statement,    summarize_statement,)
csv = (    "date,description,amount,currency,balance\n"    "2023-01-02,Salary,500.00,EUR,1500.00\n"    "2023-01-03,Groceries,-40.50,EUR,1459.50\n")
# 1. Detect the format from the filename hint + content.print(detect_format(csv, "statement.csv"))# -> csv
# 2. Parse the statement into structured rows + a summary.parsed = parse_statement(csv, "statement.csv")print(parsed["transaction_count"], parsed["columns"])
# 3. Read just the opening/closing balances.print(summarize_statement(csv, "statement.csv"))

The resource and prompt are plain functions too: formats_resource backs bankstatementparser://formats, and analyze_statement returns the guided multi-step prompt.

python
from bankstatementparser_mcp.server import (    analyze_statement,    formats_resource,)
print(formats_resource())          # the supported-formats catalogueprint(analyze_statement("statement.csv"))  # the guided analysis prompt

See the examples/ folder for runnable walkthroughs, including 04_resource_and_prompt.py.


When not to use bankstatementparser-mcp

  • You're not driving an MCP-aware agent. Use the bankstatementparser CLI or library directly — it exposes the same surface with less indirection.
  • You need to parse files already on disk in bulk. The library's CLI reads paths directly and avoids the inline-content round-trip the MCP tools use.

Development

bankstatementparser-mcp uses Poetry and mise.

bash
git clone https://github.com/sebastienrousseau/bankstatementparser-mcp.gitcd bankstatementparser-mcpmise installpoetry install

A Makefile orchestrates the quality gates (kept in lockstep with CI):

TargetWhat it runs
make checkAll gates (REQUIRED before commit)
make testpytest --cov=bankstatementparser_mcp --cov-branch --cov-fail-under=100
make lintruff check + black --check
make type-checkmypy --strict
make docsinterrogate --fail-under=100 (docstring coverage)

Current state (v0.0.28): 100% line + branch coverage against a 100% enforced floor, mypy --strict clean, interrogate 100%.


Security

  • No persistent filesystem writes from tools. Each call writes the inline content to a private temporary file that is deleted as soon as the call returns.
  • Validation failures from validate_statement are returned as structured {"is_valid": false, "error": ...} payloads — never as stack traces.
  • 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 bankstatementparser-mcp.


Related MCP Servers

The four core servers of the ISO 20022 MCP Suite are compared in The ISO 20022 MCP Suite above. The wider family — open-source, Apache-2.0 licensed MCP servers for banking and financial-services AI agents — also includes:

ServerPurpose
pain001-mcpGenerate & validate ISO 20022 pain.001 payment files (v03–v12, pain.008, SEPA) with rulebook checks
pacs008-mcpGenerate, validate, parse & scheme-check ISO 20022 pacs.008 FI-to-FI credit transfers + Nov-2026 address linting
acmt001-mcpGenerate & validate ISO 20022 acmt account-management messages
noyalib-mcpLossless YAML 1.2 parsing, formatting & validation (Rust, 100% spec compliance)

MCP Registry

mcp-name: io.github.sebastienrousseau/bankstatementparser-mcp


Ecosystem

bankstatementparser is part of a modular financial ecosystem. Optional companion packages provide specialized loaders, writers, AI agents, language servers, and transport protocol adapters:

PackageGitHub RepositoryPyPIRoleDescription
bankstatementparsersebastienrousseau/bankstatementparser[PyPI]Core EngineUnified parser for CAMT (052/053), PAIN.001, CSV, OFX, QFX, MT940, and PDF statements
bankstatementparser-mcpsebastienrousseau/bankstatementparser-mcp[PyPI]AI ProtocolModel Context Protocol (MCP) server exposing statement tools to LLMs & AI agents
bankstatementparser-lspsebastienrousseau/bankstatementparser-lsp[PyPI]Developer ToolingLanguage Server Protocol (LSP) with live SWIFT MT940 statement validation & diagnostics
bankstatementparser-transport-ebicssebastienrousseau/bankstatementparser-transport-ebics[PyPI]TransportAutomated bank statement retrieval over EBICS 3.0 (H005) and 2.5 (H004) protocols
bankstatementparser-writer-xlsxsebastienrousseau/bankstatementparser-writer-xlsx[PyPI]Output WriterFormats and exports parsed banking transactions into styled Microsoft Excel (.xlsx) workbooks
bankstatementparser-writer-qifsebastienrousseau/bankstatementparser-writer-qif[PyPI]Output WriterSerializes transactions into standard Quicken Interchange Format (.qif) exchange files
bankstatementparser-writer-ofxsebastienrousseau/bankstatementparser-writer-ofx[PyPI]Output WriterSerializes transactions into standard Open Financial Exchange (.ofx) XML/SGML files
bankstatementparser-writer-swiftsebastienrousseau/bankstatementparser-writer-swift[PyPI]Output WriterExports transactions to SWIFT MT940 customer statements and MT942 interim reports
bankstatementparser-loader-bai2sebastienrousseau/bankstatementparser-loader-bai2[PyPI]Input LoaderParses BAI2 cash-management and account balance statements
bankstatementparser-loader-mt942sebastienrousseau/bankstatementparser-loader-mt942[PyPI]Input LoaderParses SWIFT MT942 interim transaction reports with credit/debit summary reconciliation
bankstatementparser-loader-cfonbsebastienrousseau/bankstatementparser-loader-cfonb[PyPI]Input LoaderParses French CFONB 120 / AFB120 120-byte fixed-width banking statement files
bankstatementparser-loader-camt054sebastienrousseau/bankstatementparser-loader-camt054[PyPI]Input LoaderIngests ISO 20022 CAMT.054 real-time debit/credit notification stream XML
bankstatementparser-loader-sepasebastienrousseau/bankstatementparser-loader-sepa[PyPI]Input LoaderIngests ISO 20022 SEPA PAIN.002 payment status reports and PAIN.008 direct debit mandates
bankstatementparser-loader-bacssebastienrousseau/bankstatementparser-loader-bacs[PyPI]Input LoaderParses UK BACS Standard 18 / Faster Payments 106-byte fixed-width transmission files

License

Licensed under the Apache License, Version 2.0. Any contribution submitted for inclusion shall be licensed as above, without additional terms.


bankstatementparser.com · PyPI · GitHub

Source: README.md at commit 883f73b

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.0.19LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts