finance-mcp-server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@finance-mcp-serverI spent $45 on groceries today"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
finance-mcp-server
An MCP server that gives any MCP client (Claude Desktop, Claude Code, etc.) real tools to manage your actual personal finances against a local SQLite ledger — no cloud account, no external service, no subscription, just a database file that lives on your machine. You can genuinely use this day-to-day: log expenses by talking to your MCP client, import your real bank statement, fix a typo'd entry, and ask questions like "am I over budget on dining out this month?".
Why
Most MCP server examples wrap a SaaS API as a toy demo. This one wraps a real, useful domain model instead: transactions, categories, and monthly budgets, with proper validation, aggregation queries, editable/deletable entries, and real-bank-statement CSV import — the kind of thing you'd actually want to run against your own money, not just a canned example.
Related MCP server: Expense Tracker MCP Server
Tools exposed
Tool | Description |
| Record income (positive amount) or an expense (negative amount) against a category |
| List transactions, filterable by date range and category |
| Fix a mistake — edit the amount, category, date, merchant, or note on an existing entry |
| Remove a transaction |
| Aggregate totals grouped by category over a date range |
| Total income, total expense, net, and top 5 expense categories for a period |
| Set or update a monthly spending limit for a category |
| Spend-vs-limit status for every budgeted category in a given month |
| See every category currently in use |
| Bulk-import a real bank/card statement export (handles varying column layouts) |
| Export your ledger to CSV for backup or a spreadsheet |
Categories are created on the fly the first time you reference them — no separate setup step.
Getting your real data in
You don't have to type every transaction by hand. Most banks let you download your statement as a CSV — export one and ask your MCP client to import it, e.g.:
"Import the CSV at ~/Downloads/chase_september.csv — the date column is 'Transaction Date', amount is 'Amount', description is 'Description'"
Bank export formats vary a lot (some use one signed amount column, others split spending and deposits into separate "Debit"/"Credit" columns; date formats differ), so import_transactions_csv takes explicit column names rather than guessing — tell it what your bank's columns are called and it maps them. Malformed rows (a trailing "pending transactions" summary line, for example) are skipped and reported rather than aborting the whole import. If your bank shows expenses as positive numbers, pass flip_sign: true.
From there, everyday use is conversational: "add a $12 lunch at Chipotle today", "how much have I spent on groceries this month", "set my dining out budget to $150/month", "I mis-entered that coffee as $40, fix it to $4".
Install
git clone https://github.com/adeev-mardia/finance-mcp-server.git
cd finance-mcp-server
pip install -e ".[dev]"Requires Python 3.10+.
Run it
As a standalone process (stdio transport):
finance-mcp-server
# or
python -m finance_mcp.serverConnect it to Claude Desktop / Claude Code
Add to your MCP client config (e.g. claude_desktop_config.json):
{
"mcpServers": {
"finance": {
"command": "finance-mcp-server",
"env": {
"FINANCE_MCP_DB": "/absolute/path/to/finance.db"
}
}
}
}FINANCE_MCP_DB is optional — it defaults to data/finance.db relative to the package if unset.
Get started
Point FINANCE_MCP_DB at wherever you want your real ledger to live (it's created automatically on first use) and start talking to it through your MCP client — add transactions as they happen, or import a bank CSV export to backfill history in one go (see "Getting your real data in" below).
If you just want to poke around the tools before committing real data, python scripts/seed_demo_data.py seeds a separate database with ~3 months of fake sample transactions and budgets — useful for a first look, not meant to be your real ledger.
Architecture
src/finance_mcp/
├── db.py # SQLite schema + query layer (stdlib sqlite3 only, no ORM)
├── csv_io.py # Bank statement CSV import + ledger CSV export
└── server.py # FastMCP tool definitions — thin wrappers around db.py / csv_io.pyThe persistence layer (db.py) has no dependency on the mcp package, so it's independently testable and reusable outside an MCP context (e.g. a CLI or web UI could sit on top of it too).
Testing
pip install -e ".[dev]"
pytest -v26 tests cover the query layer (test_db.py), CSV import/export against real-shaped bank export data — signed-amount and debit/credit column layouts, US date formats, malformed rows, sign-flipped exports (test_csv_io.py) — and the MCP tool functions as they'll actually be invoked by a client (test_server_tools.py), including edge cases like invalid dates, new-category creation, date-range filtering, editing/deleting a transaction, and over-budget detection.
Design notes
Signed amounts, not separate income/expense tables. A transaction's sign determines its kind; categories still carry a
kindfor aggregation, so "how much did I earn" and "how much did I spend" are simpleWHEREclauses, not joins across tables.Categories are get-or-create. An MCP client (or the person prompting it) shouldn't need to pre-register categories before recording a transaction — friction there defeats the point of a conversational interface.
No ORM. For a schema this small, stdlib
sqlite3keeps the whole persistence layer in one readable file and avoids a dependency that would otherwise dominatepip install -e ..
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
- ManiloOAuthapp.manilo
Log, query, and edit expenses, budgets, and accounts in Manilo from any MCP-compatible AI assistant.
- ManiloOAuthapp.ledgy.api
Log, query, and edit expenses, budgets, and accounts in Manilo (formerly Ledgy) from any MCP-compatible AI assistant.
Log, query, and edit expenses, budgets, and accounts in Ledgy from any MCP-compatible AI assistant.
Query your real net worth, spending, transactions, budgets and portfolio from any MCP client.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables users to track personal expenses through natural language interactions with comprehensive category support and financial summaries. Provides both local and remote MCP server options with SQLite storage for fast expense management operations.-
- FlicenseNot gradedqualityBmaintenanceTracks personal expenses and budgets via MCP, storing entries in SQLite and supporting category-based queries.-
- FlicenseNot gradedqualityCmaintenanceEnables self-hosted personal finance management for MCP clients by connecting read-only bank accounts via SimpleFIN, syncing transactions into a local SQLite database, and exposing tools to query balances, spending, budgets, cash flow, and net worth.-
- AlicenseBqualityAmaintenanceEnables local tracking of personal expenses by adding, listing, summarizing, updating, and deleting expense records stored in a CSV file through an MCP client.5MIT