Skip to main content
Glama
bartosz-kuc

mbank-parser-mcp

README.md
# mbank-parser-mcp

Local MCP server that parses **mBank CSV operation exports** — the exact file you can download from the mBank web app under "Historia" → "Eksportuj do CSV". Runs entirely offline. Nothing leaves your machine.

Part of the [honest-mcp family](https://github.com/bartosz-kuc?tab=repositories) of small, auditable, local-first MCP servers.

## Why

Anyone using mBank in Poland — private, JDG, sp. z o.o. — does the same monthly ritual:

1. Log into mBank, download the CSV.
2. Open in Excel, squint at Polish-locale amounts (space-thousands, comma-decimals, ` PLN` suffix).
3. Filter by date, sum by category for VAT / income tax reconciliation.

This server automates step 2 and 3 through your AI. You keep your bank data on disk; the AI just calls a tool that reads and filters it locally.

Zero network calls. The `requirements.txt` is one line — the MCP SDK. No dependency footprint to audit.

## Features

Three tools:

- `read_statement_header` — quick preview of a file: client name, date range, listed accounts, inflow/outflow totals, operation count. No operation rows loaded.
- `list_operations` — parse + filter operations. Combine any of: `date_from`, `date_to`, `category`, `account`, `contains` (description substring), `min_amount`, `max_amount`, `limit`.
- `summarize_operations` — aggregate by `category`, `account`, or `month`. Returns count, inflow, outflow, net per bucket plus grand totals.

Amounts come back as signed floats (negative = expense), currency separate. Polish-locale numbers (`-3 283,33 PLN`) and non-breaking-space thousand separators are handled.

## Supported files

- ✅ **CSV export** from mBank web banking ("Historia operacji" → "Eksportuj do CSV")
- ❌ PDF statements — mBank's layout varies too much per statement type for reliable parsing. Skipped intentionally.

## Requirements

- Python 3.10+

## Setup

```bash
git clone https://github.com/bartosz-kuc/honest-mbank-parser-mcp.git
cd mbank-parser-mcp
python3 -m venv venv
./venv/bin/pip install -r requirements.txt
```

Register with Claude Code:

```bash
claude mcp add mbank /absolute/path/to/venv/bin/python /absolute/path/to/server.py
```

Claude Desktop `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "mbank": {
      "command": "/absolute/path/to/venv/bin/python",
      "args": ["/absolute/path/to/server.py"]
    }
  }
}
```

## Example usage

> "How much did I spend on 'Ubezpieczenia' in Q2?"

`summarize_operations(file_path=".../lista_operacji.csv", group_by="category", date_from="2026-04-01", date_to="2026-06-30")` → totals per category, including "Ubezpieczenia".

> "List all incoming transfers over 10 000 PLN this year."

`list_operations(file_path=".../lista_operacji.csv", min_amount=10000, date_from="2026-01-01")`

> "Show me every card purchase mentioning Anthropic."

`list_operations(file_path=".../lista_operacji.csv", contains="ANTHROPIC")`

## Data flow

```
Your AI client
     ↕  MCP stdio
This server (Python, on your machine)
     ↕  local filesystem
Your mBank CSV
```

No HTTP, no external service — the server has no `requests` or `httpx` dependency at all.

## Author

**Bartosz Kuć** — Warsaw-based developer, JDG owner running [skanfirmy.pl](https://skanfirmy.pl).

- GitHub: https://github.com/bartosz-kuc

- Email: firma@bartosza.pl

## Consulting

Available for consulting on Polish tax and business integrations (KSeF, GUS/NFZ/GIOŚ APIs, mBank data), MCP server design, and AI-assisted tooling for JDGs and small teams. See **[skanfirmy.pl/uslugi](https://skanfirmy.pl/uslugi)** for productized packages (audit 3k PLN, setup 8-15k PLN, retainer 2-4k PLN/mo), or reach out via email.

## License

MIT — see [LICENSE](LICENSE).

## Related

- Part of the honest-mcp family — see the [family index](https://github.com/bartosz-kuc?tab=repositories).

TDQS

A4.4/5.0

Scored across 3 tools

Disambiguation5/5

Each tool targets a distinct stage of working with an mBank CSV: header preview, operation rows, and aggregations. There is no meaningful overlap between reading metadata, listing transactions, and summarizing them.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern: read_statement_header, list_operations, summarize_operations. The verbs clearly indicate the action and the nouns clearly indicate the target resource.

Tool Count5/5

Three tools is well-scoped for a focused CSV parser server. Each tool covers a necessary capability without redundancy or feature bloat.

Completeness5/5

For the stated purpose of parsing mBank CSV exports, the surface is complete: preview the header, retrieve operations with filtering, and summarize them. No obvious missing operation is implied by the domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues