Skip to main content
Glama
jfortier93

Statement Normalizer

Statement Normalizer MCP

Deterministic bank-statement parsing for AI agents: messy CSV/OFX exports in, clean categorized ledger rows out.

Why this exists

Every bank exports transactions differently: shifted headers, inconsistent date formats, debit/credit sign conventions, junk rows. Agents doing bookkeeping either write fragile one-off parsing or hallucinate structure. This server does the boring part correctly, deterministically, and identically every time.

Related MCP server: financial-agent

Privacy posture (read this first)

Your transaction data is processed in memory only:

  • No storage. Nothing is written to disk or retained after the response

  • No external calls. Parsing is pure Python; data never leaves the process

  • No LLM in the loop. Deterministic rules, not model inference

  • Open source (MIT), so you can verify all of the above, or run it locally and send nothing anywhere

Tools (4)

  • detect_format(sample) - identify the export format, delimiter, header row, and date convention

  • normalize_statement(data, format_hint?) - full parse to clean ledger rows: ISO dates, signed amounts, merchant, category

  • summarize_statement(data) - totals by category, month, and direction (income/expense)

  • to_quickbooks_csv(data) - re-emit normalized rows as QuickBooks-importable 3-column CSV

Example

normalize_statement("Date,Description,Amount\n07/03/2026,COFFEE SHOP #42,-4.50\n...")
{
  "rows": [
    {"date": "2026-07-03", "description": "COFFEE SHOP #42", "amount": -4.50, "direction": "debit", "category": "dining"}
  ],
  "rows_parsed": 1,
  "rows_skipped": 0,
  "format_detected": "generic_csv_mdy"
}

Run

pip install "mcp>=2.0"
python server.py          # stdio transport

Tests: python test_server.py - hand-built fixtures covering CSV variants, OFX, sign conventions, and malformed rows.

Pricing (hosted)

  • Free tier: 50 requests/month (enough to evaluate every tool)

  • Then $0.01 per request, metered. Pay only for what you use

  • Or run it locally for free, forever (MIT)

Compliance posture

  • Educational and bookkeeping-assist tooling; not financial advice

  • Deterministic parsing only; no recommendations, no analysis beyond arithmetic totals

  • Category assignments are heuristic and user-reviewable, disclosed in-payload

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Parse crypto exchange CSVs (Coinbase, Binance, Kraken, +11 more) and bank statement PDFs (Chase, BofA, +11 more) into Koinly, TurboTax, CoinLedger, or ZenLedger formats. Free tier: 25 files/month, no credit card required.
    3 npm
    ISC
  • F
    license
    B
    quality
    C
    maintenance
    Enables AI agents to manage personal finances with deterministic, grounded tools for cash-flow projection, drift detection, reconciliation, and Todoist integration. All figures trace back to a local SQLite database.
    55
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables parsing and filtering of mBank CSV operation exports locally. Supports data aggregation and querying through natural language, running entirely offline with no network calls.
    3
    1
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Enables local-first personal finance management through deterministic tools for importing, categorizing, and analyzing bank transactions.
    36
    MIT