MyFinance-MCP
Track your money by talking to your AI.
Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeRead-only
What it can do
- Ping: Health check for the MyFinance MCP connection.
- Log Expense: Record ONE purchase, bill, or receipt. Negative amount = refund to the same category. NEVER use this for bank-statement rows or any batch of 3+ records: use import_transactions with the w
- Log Income: Record incoming money: salary, client payment, gift.
What data it sees
Do you need an account
No: the server works without sign-in
Track your money by talking to your AI. Log expenses in plain language ("spent 24.50 eur on groceries at Lidl"), snap receipt photos, or drop a whole bank statement - hundreds of rows import in one call with deduplication and total reconciliation.
- Budgets, trends, summaries and multi-currency net worth, all computed in SQL server-side
- Interactive dashboards (MCP Apps) render right in the chat
- Personal vs business tagging with CSV export for your accountant
- OAuth 2.1 sign-in (Google or email), EU hosting, no amounts in server logs
- Free while in beta. Open source (MIT), self-hostable
Just connect and talk: https://myfinance-mcp.com
Server tool list (20)
Raw names from tools/list. Only developers need these.
| ping | Health check for the MyFinance MCP connection. |
| log_expense | Record ONE purchase, bill, or receipt. Negative amount = refund to the same category. NEVER use this for bank-statement rows or any batch of 3+ records: use import_transactions with the whole array instead (one-by-one logging hits the per-turn tool limit). |
| log_income | Record incoming money: salary, client payment, gift. |
| create_account | Add a money account: bank, card, cash, or investment (brokerage). Transfers between own accounts are then tracked without counting as spending. |
| get_accounts | All accounts with computed balances (latest snapshot + tracked flows) and total net worth in the base currency. Optionally filtered to personal or business scope. |
| log_transfer | Move money between OWN accounts: card to brokerage, cash withdrawal, currency exchange. Never counted as spending or income. |
| log_balance | Anchor an account's REAL balance at end of a date (from the bank app). Balances are then snapshot + later flows. |
| import_transactions | Import bank-statement / statement-screenshot rows in bulk. ALWAYS send the ENTIRE statement as ONE call with the full transactions array (up to 500 rows) - never split into chunks, never log rows one-by-one via log_expense. If one statement truly cannot fit in a single call, EVERY row of EVERY chunk must carry external_id (bank reference; or the statement row number, e.g. 'r017') - rows without external_id are keyed by amount+date+occurrence WITHIN one call, so identical rows arriving in different calls are indistinguishable from re-imports. Safe to re-run: keyed rows are skipped, a hand-logged twin is merged into the bank row instead of duplicating, and repeated purchases (same merchant and amount on different days, or twice the same day) import normally. Unknown categories become 'other'. Pass statement_total to get a reconciliation check. Sign convention: negative amount = money out, positive = money in. |
| get_summary | Totals for a period, computed server-side in the user's base currency. Answers 'how much did I spend on X in July'. |
| get_transactions | Find records: 'what was that 40 eur charge', recent spending, by category or merchant. |
| update_transaction | Fix a logged record: wrong category, amount, merchant, date, or personal/business scope. |
| delete_transaction | Remove ONE wrongly logged record. For 3+ records use delete_transactions (bulk) with the ids array. |
| delete_transactions | Delete MANY transactions in ONE call by ids (from get_transactions). Always prefer this over repeated delete_transaction calls - one-by-one deletion hits the per-turn tool limit. |
| get_trends | Month-over-month expense/income dynamics, optionally for one category or scope. |
| set_budget | Monthly spending cap, overall or per category, in the user's base currency. |
| get_budget_progress | Current month: spent vs cap for every budget. Budgets track PERSONAL spending only; business-scope transactions never count against them. |
| get_settings | Base currency and timezone. |
| update_settings | Change base currency (recomputes all historical stats at each transaction's original date rate) or timezone. |
| export_transactions | All transactions as CSV (GDPR portability). Optionally one scope only, e.g. business rows for the accountant. |
| delete_account | Erase the account and ALL financial data permanently (GDPR). Requires confirm='DELETE'. |