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

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

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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.
    1
    ISC
  • F
    license
    B
    quality
    B
    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
    C
    maintenance
    Converts PDF bank statements into structured data (Markdown, JSON, CSV, JSONL) with verified transactions and balance checks, enabling agents to audit numbers.
    5
    16
    MIT
  • A
    license
    Not graded
    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.
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • Convert PDF bank statements into structured transactions, accounts, and balances.

  • Read-only bank access for your AI agent. Connects Claude, ChatGPT, Cursor, Gemini, Codex.

  • Deterministic AI agent microtools, no accounts/API keys. fetch_extract: 98% token cut. 38 tools.

View all MCP Connectors

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/jfortier93/statement-normalizer-mcp'

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