Ledger 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., "@Ledger MCP Serverwhat's my biggest expense this month?"
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.
Ledger
A small personal finance ledger for importing Revolut CSV exports into SQLite, running spending reports, and exposing ledger/currency utilities over MCP.
What It Does
Imports Revolut CSV rows into a normalized
ledger_entriestable.Stores ledger data in a local SQLite database.
Generates JSON reports for merchant spending and largest expenses.
Provides an MCP stdio server with ledger report tools and currency conversion.
Uses TypeScript, Vitest, oxlint, and oxfmt for development checks.
Related MCP server: Expense Tracker MCP Server
Requirements
Node.js
>=22.18npm
Setup
npm installInitialize the default local database at data/ledger.sqlite:
npm run db:initYou can pass a custom database path directly to the underlying CLI:
node src/cli/init-db.ts path/to/ledger.sqliteImport Revolut Data
Inspect a Revolut CSV export before importing:
npm run inspect:revolut -- path/to/revolut.csvImport rows into the default database:
npm run import:revolut -- path/to/revolut.csvImport into a custom database:
npm run import:revolut -- path/to/revolut.csv path/to/ledger.sqliteImports are idempotent per source file and source row. Duplicate rows are skipped using the database uniqueness constraint.
Reports
Find monthly spending for a merchant:
npm run report:monthly-merchant -- "Merchant Name"Find the month with the most posted card payments for a merchant:
npm run report:busiest-merchant-month -- "Merchant Name"Find the largest expense, optionally filtered:
npm run report:largest-expense -- --merchant "Merchant Name"
npm run report:largest-expense -- --date-from 2026-01-01 --date-to 2026-01-31
npm run report:largest-expense -- --time-from 12:00 --time-to 14:00All report commands print JSON.
MCP Server
Start the stdio MCP server:
npm run mcp:serverBy default, the server reads from data/ledger.sqlite. Set LEDGER_DB_PATH to
point at another database:
LEDGER_DB_PATH=path/to/ledger.sqlite npm run mcp:serverAvailable MCP tools:
find_busiest_merchant_monthfind_largest_expenseget_entriesfind_total_merchant_spendingconvert_currency
Smoke-test the MCP clients:
npm run mcp:smokeDevelopment
Run the full check suite:
npm run checkRun individual checks:
npm run typecheck
npm test
npm run lint
npm run format:checkFormat and lint-fix locally:
npm run format
npm run lint:fixProject Layout
src/agent/ Local agent/MCP chat helpers
src/cli/ Command-line entry points
src/domain/ Core ledger, money, date, time, and currency types
src/exchange-rates/ NBP exchange-rate integration
src/importers/ Source-specific importers, currently Revolut
src/mcp/ MCP server and smoke clients
src/presentation/ Formatting helpers
src/reports/ Report queries and calculations
src/storage/ SQLite setup and persistence helpers
src/tools/ MCP tool implementationsNotes
Currency support is currently limited to
PLN,CHF, andEUR.Currency conversion uses the latest NBP table A average exchange rates.
The SQLite database is local; keep personal export files and database files out of version control.
This server cannot be deployed
Maintenance
Related MCP Connectors
Personal finance tracker — log transactions, view summaries, and browse a dashboard
- Era ContextOAuthapp.era
Personal finance, bank account, and shared memory connector for Claude, ChatGPT, Gemini Spark & more
Personal finance by conversation: expenses, receipts, statement import, budgets, net worth.
Chat with your bank data: balances, transactions, budgets, bills. Reads only, never moves money.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables management of expenses via SQLite database, including adding, listing, updating, deleting, filtering, and summing expenses through natural language.-
- FlicenseNot gradedqualityDmaintenanceEnables natural language management of personal expenses, including adding, listing, and summarizing expenses with local SQLite storage.-
- FlicenseAqualityBmaintenanceEnables AI assistants to track, query, summarize, and delete personal expenses stored in a local SQLite database via natural language.4-
- FlicenseAqualityCmaintenanceEnables natural language management of personal expenses, including adding, updating, deleting, searching, and summarizing expenses stored in a local SQLite database.6-