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

How to connect

How to connect MyFinance-MCP to Claude

The server address to paste into Claude settings:

https://myfinance-mcp--alex-k4kb.run.tools

  1. Open Claude (claude.ai or the desktop app).
  2. Go to Settings → Connectors.
  3. Click Add custom connector.
  4. Paste the server address copied below into Remote MCP server URL and click Add.
  5. In a chat, click + → Connectors and switch the new connector on.

Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.

Authorization

After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.

How to connect MyFinance-MCP to ChatGPT

The server address to paste into ChatGPT settings:

https://myfinance-mcp--alex-k4kb.run.tools

  1. Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
  2. Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
  3. Open Settings → Connectors and click Create.
  4. Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
  5. Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
  6. In a new chat open + → Apps/Connectors and enable the connector.

OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.

Authorization

On first use ChatGPT opens the service's sign-in window. Sign in and approve access.

How to connect MyFinance-MCP to Cursor

The server address to paste into Cursor settings:

https://myfinance-mcp--alex-k4kb.run.tools

Fastest: click Open in Cursor below and confirm the prompt.

Manually:

  1. In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
  2. Paste the JSON copied below into ~/.cursor/mcp.json (per project: .cursor/mcp.json in the repo root).
  3. Save the file. The server appears in the MCP list; authorize it there if asked.

Authorization

If the service needs sign-in, an authorize button appears next to the server in the MCP list.

Server tool list (20)

Raw names from tools/list. Only developers need these.

pingHealth check for the MyFinance MCP connection.
log_expenseRecord 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_incomeRecord incoming money: salary, client payment, gift.
create_accountAdd a money account: bank, card, cash, or investment (brokerage). Transfers between own accounts are then tracked without counting as spending.
get_accountsAll accounts with computed balances (latest snapshot + tracked flows) and total net worth in the base currency. Optionally filtered to personal or business scope.
log_transferMove money between OWN accounts: card to brokerage, cash withdrawal, currency exchange. Never counted as spending or income.
log_balanceAnchor an account's REAL balance at end of a date (from the bank app). Balances are then snapshot + later flows.
import_transactionsImport 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_summaryTotals for a period, computed server-side in the user's base currency. Answers 'how much did I spend on X in July'.
get_transactionsFind records: 'what was that 40 eur charge', recent spending, by category or merchant.
update_transactionFix a logged record: wrong category, amount, merchant, date, or personal/business scope.
delete_transactionRemove ONE wrongly logged record. For 3+ records use delete_transactions (bulk) with the ids array.
delete_transactionsDelete 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_trendsMonth-over-month expense/income dynamics, optionally for one category or scope.
set_budgetMonthly spending cap, overall or per category, in the user's base currency.
get_budget_progressCurrent month: spent vs cap for every budget. Budgets track PERSONAL spending only; business-scope transactions never count against them.
get_settingsBase currency and timezone.
update_settingsChange base currency (recomputes all historical stats at each transaction's original date rate) or timezone.
export_transactionsAll transactions as CSV (GDPR portability). Optionally one scope only, e.g. business rows for the accountant.
delete_accountErase the account and ALL financial data permanently (GDPR). Requires confirm='DELETE'.