finledger
FinLedger
Локальная финансовая книга с тремя поверхностями чтения, плюс MCP-сервер, чтобы агент мог запрашивать их:
expenses: расходные счета, сверяемые с возмещениями от коллег
investments: брокерские остатки, позиции и активность
income: зарплата (гросс, удержания, на руки)
Расходы и инвестиции используют общее хранилище и больше ничего. Счёт имеет явный domain, и каждый запрос расходов проходит через него, поэтому покупка акций не может попасть в матчер возмещений.
Матчер основан на правилах. Он воздерживается, когда не уверен. Человек или агент подтверждает, прежде чем совпадение уменьшит чистые расходы.
Реальные транзакции, расчётные листы и API-ключи остаются на вашей машине (~/.finledger/ledger.db, .env). Этот репозиторий содержит только код и синтетический набор для оценки.
Установка
Python 3.10+. Книга, матчер, MCP-цикл и среда оценки используют стандартную библиотеку. pypdf необязателен и нужен только для импорта PDF-расчётных листов.
pip install -e .Related MCP server: MCP Agent - AI Expense Tracker
MCP-сервер
python3 -m finledger.mcp_server --db ~/.finledger/ledger.db18 инструментов с пространствами имён expenses_*, investments_* и income_*, плюс savings_rate, accounts, sync и reconcile.
Пример для Cursor (~/.cursor/mcp.json):
{
"mcpServers": {
"finledger": {
"command": "python3",
"args": ["-m", "finledger.mcp_server"]
}
}
}Путь к книге по умолчанию: ~/.finledger/ledger.db.
CLI
finledger sync
finledger reconcile
finledger review
finledger servefinledger serve открывает локальный стол на :8770. На macOS вы также можете дважды щёлкнуть scripts/Expense Desk.command.
Дополнительные живые источники (поместите учётные данные в .env, никогда не коммитьте его):
Источник | Как |
shim.finance (карта + Venmo) |
|
SnapTrade (расчётный счёт + брокерские счета) |
|
Импорт CSV карты |
|
PDF расчётного листа |
|
Скопируйте .env.example в .env.
Публичная оценка
Опубликованный эталонный набор является синтетическим. Он генерируется scripts/make_sample_data.py и находится в data-sample/. Каждая строка транзакции помечена synthetic: true. Это набор покрытия для поведения матчера (чистое совпадение, фан-ин, объединение, родительская исходящая от коллеги, мерчант-кредиты, слабые заметки, кросс-источниковые двойники). Это не анонимизированные реальные данные.
python3 scripts/eval_public.py
# equivalent:
python3 -m reconcile.eval --matcher rules_v0Числа, которые можно воспроизвести из этого репозитория
Измерено на data-sample/ с rules_v0 (окно ±90 дней, порог автоподбора 0.75):
Метрика | Значение |
оцениваемые примеры | 22 (2 |
точность на точном наборе | 72.7% (16/22) |
краевые P / R / F1 | 81.2% / 61.9% / 70.3% |
точность автоподбора | 85.7% (n=14; 12 tp, 2 fp) |
полнота автоподбора по эталонным совпадениям | 66.7% |
Перезапустите python3 scripts/eval_public.py, чтобы обновить эти числа. Два оставшихся ложных срабатывания на выборке — реальные слабости матчера, включая чрезмерное срабатывание правила повышения полноты для эмодзи.
Чего нет в этом репозитории
В ходе разработки использовался частный эталонный набор из примерно 92 размеченных примеров. В нём указаны реальные люди и реальные покупки, и он не публикуется. Не рассматривайте числа на выборке как воспроизведение того набора. Другой корпус, другой размер, другие оценки.
Этот репозиторий не претендует на 100% точность автоподбора.
Матчер
См. reconcile/README.md. Краткая версия:
Name | Behavior |
| Ближайший платёж в пределах ±$1 и окна дат. Пусто, если нет. |
| Соответствие суммы + дата + пересечение заметки/мерчанта, с вето. Автоподбор при уверенности >= 0.75; иначе воздержание. |
| То же, что |
Разметьте корпус выборки с помощью python3 labeling/app.py (по умолчанию data-sample/).
Лицензия
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables interaction with local Beancount accounting ledgers through structured tools for viewing accounts, balances, and transactions, as well as inserting/removing transactions and answering natural-language questions via BeanQuery. Provides deterministic, validated, and auditable financial data operations with offline-first functionality.1
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to manage personal expenses through natural language conversations. Supports adding, searching, and analyzing transactions with automatic categorization and financial insights.3MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to query and analyze local personal finance data from Tusk Ledger through tools for transactions, accounts, investments, and more, without sending data to the internet.13MIT
- AlicenseNot gradedqualityCmaintenanceProvides tools for querying and writing finance records in a Notion-backed household finance workspace, enabling management of budgets, expenses, savings, and debt through natural language.MIT
Related MCP Connectors
Connect AI agents to bank accounts, transactions, balances, and investments.
Log, query, and edit expenses, budgets, and accounts in Ledgy from any MCP-compatible AI assistant.
Personal, family and business books over fiat and crypto. Reads and records; it cannot pay.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/anikam13/finledger'
If you have feedback or need assistance with the MCP directory API, please join our Discord server