MCP server for MoneyMoney financial data with Claude, Perplexity, and other MCP-compatible clients
Strong tool naming (verb_noun pattern throughout) and comprehensive parameter schemas with type definitions. Descriptions are detailed and actionable (avg 150+ chars). All 12 tools have explicit input schemas with properties and descriptions. However, output schemas are not documented, LLMs cannot predict response structure. Error handling guidance is absent. Some parameter descriptions could be more prescriptive about constraints (e.g., transaction_id format, category_path syntax). Dry-run support on write operations is excellent (categorize_transaction, batch_categorize_transactions, create_rule). Missing: per-tool output schema documentation, error recovery guidance, and explicit parameter constraints (min/max, regex patterns).
Analyze spending patterns by period (week/month/quarter/year) or compare multiple years (2020-2025). Shows income, expenses, and savings rate.
Assign categories to multiple transactions in one request. Supports dry-run previews and partial success reporting.
Assign a MoneyMoney category to a single transaction by transaction ID. Accepts category UUID, full path, or category name. Supports dry-run previews.
Create a persistent categorization rule in MoneyMoney. Transactions whose payee/sender name contains the given pattern will automatically be assigned the specified category — both for past and future transactions. Uses GUI automation (requires Accessibility permission). Prefer this over categorize_transaction when the same payee recurs regularly.
Fetch all MoneyMoney accounts
Get hierarchical category structure with spending totals. Returns all categories with their full paths (e.g., Ausgaben > Verbrauchsgüter > Gastronomie) and spending amounts.
Output schemas not documented. LLMs cannot predict response structure for any tool. Downstream tool chaining requires guessing field names.
Error handling guidance absent. No recovery hints (e.g., 'If transaction not found, call get_transactions() first'). LLMs cannot self-correct on failures.
Parameter constraints not formalized. transaction_id format (tx-... vs raw ID) mentioned in description but not enforced. category_path syntax (Ausgaben > Konsum > Shopping) not validated. LLMs may pass invalid formats.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Resolve a single bank statement by its exact file name (as returned by list_statements) and return it as a PDF binary.
Get MCP server status, data loading state, and data freshness
Fetch transactions from a specific account or year. By default returns all available transactions.
List bank statement PDFs from MoneyMoney's on-disk statement archive. Filter by bank, account (IBAN / account number / 'Bank/Prefix'), and date range. Returns {bank, filename, path, date, accountHint, size}, newest first. Note: the file name alone rarely answers a question — pass the returned path to a PDF reader to see balances, bookings, and fees.
Search the MoneyMoney category catalog by UUID, path, or name. Useful before categorizing transactions.
Suggest likely categories for a transaction based on similar historical transactions.
Pagination not explicit. get_transactions and list_statements accept 'limit' but no 'offset' or 'cursor'. No 'total_count' or 'has_more' documented. Large result sets may exceed context window.
Dry-run support is excellent (categorize_transaction, batch_categorize_transactions, create_rule), but no confirmation step for irreversible operations. Agents cannot request user approval before executing.