Skip to main content
Glama
sebastienrousseau

bankstatementparser-mcp


Contents

Getting started

Library reference

  • Tools — the five tools, one resource, one prompt

  • Using the tools — call them in-process from Python

Operational


Related MCP server: Financial Data MCP Server

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.

Concern

How bankstatementparser-mcp handles it

Transport

stdio (FastMCP default); zero config beyond the client manifest

Input model

Inline content + filename hint; no shared filesystem required

Format fidelity

Tools delegate to bankstatementparser's create_parser pipeline

Format detection

detect_format mirrors the library's detect_statement_format

Validation

validate_statement is a dry run that returns structured results

Isolation

Each call writes to a private temp file that is deleted on exit


Install

Channel

Command

Notes

PyPI

pip install bankstatementparser-mcp

Pulls in bankstatementparser >= 0.0.9 + MCP SDK

Source

git clone https://github.com/sebastienrousseau/bankstatementparser-mcp && cd bankstatementparser-mcp && poetry install

For development

Docker (GHCR)

docker pull ghcr.io/sebastienrousseau/bankstatementparser-mcp:latest

Multi-arch (linux/amd64, linux/arm64); runs bankstatementparser-mcp over stdio

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

python -m venv venv
source venv/bin/activate        # macOS/Linux
venv\Scripts\activate           # Windows
python -m pip install -U bankstatementparser-mcp

Quick start

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

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

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

The server speaks JSON-RPC over stdin/stdout — it is meant to be launched by an MCP client, not used interactively.


Tools

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

Tool

Purpose

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:

Kind

Name

Purpose

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:

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"))

See the examples/ folder for runnable walkthroughs.


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.

git clone https://github.com/sebastienrousseau/bankstatementparser-mcp.git
cd bankstatementparser-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=bankstatementparser_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.1): 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.


License

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


A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
2Releases (12mo)
Commit activity

Latest Blog Posts

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/bankstatementparser-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server