Zen Money MCP
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., "@Zen Money MCP summarize my spending last month by category"
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.
Zen Money MCP
MCP-сервер для личного аккаунта Дзен-мани. Он использует официальный API Дзен-мани для чтения данных, анализа расходов и выполнения финансовых операций. Сервер работает через stdio и не открывает публичный HTTP-порт.
Каждому пользователю нужна собственная установка и собственный токен Дзен-мани. Не подключай личный токен к общему серверу для других пользователей: инструменты умеют читать и менять финансовые данные аккаунта.
Требования
Node.js 20 или новее и npm.
MCP-клиент с поддержкой stdio-серверов.
Доступ в интернет к
api.zenmoney.ru.Для установки Secure MCP Tunnel на Linux x86-64 доступен бинарный
bin/tunnel-client; другим платформам потребуется совместимая версия.
Related MCP server: ynab-mcp-lite
Где получить токен Дзен-мани
Серверу нужен готовый access token Дзен-мани. В документации API ZenMoney описан OAuth 2.0: для собственного приложения нужно подать заявку на регистрацию OAuth-клиента. Там же в качестве способа получить токен для личного использования упомянуты уже зарегистрированные сервисы; приведённый в документации пример — Zerro.app. Это сторонний сервис: прежде чем выдавать ему доступ, самостоятельно оцени его и запрашиваемые права.
./bin/set-token.sh не получает токен из аккаунта, а только скрыто принимает уже выданный access token и сохраняет его. Сервер сейчас не обновляет токены через refresh_token; если выданный access token истечёт и API начнёт возвращать 401, получи новый токен и повтори настройку.
Установка и запуск
git clone https://github.com/bulava92/zen-money-mcp.git
cd zen-money-mcp
npm ci --ignore-scripts --no-audit --no-fund
./bin/set-token.sh
npm startset-token.sh запрашивает токен скрытым вводом и хранит его вне репозитория: ${HOME}/.config/zen_money_mcp/access-token. Каталог создаётся с правами 700, файл — 600. Сервер принимает только обычный файл токена без прав на чтение или запись для группы и остальных пользователей; символическая ссылка не допускается.
Путь можно изменить через ZENMONEY_TOKEN_FILE. Если задаёшь его для службы или MCP-клиента, обеспечь права 600 и доступ тому же пользователю ОС, который запускает процесс.
Для MCP-клиента, который поддерживает stdio, укажи команду и абсолютный путь к проекту. Например:
{
"mcpServers": {
"zen-money": {
"command": "node",
"args": ["/absolute/path/to/zen-money-mcp/src/server.mjs"]
}
}
}Формат файла конфигурации может различаться в зависимости от MCP-клиента.
Инструменты
Синхронизация и общие данные
sync_zenmoney— синхронизирует выбранные сущности с API; поддерживает принудительное обновление.get_zenmoney_profile— ID профиля и основная валюта.get_zenmoney_entities— читает полные исходные записи сущностей для точного просмотра полей API.list_instruments,list_companies— справочники валют, банков и организаций.
Счета, категории и контрагенты
list_accounts,create_account,update_account,archive_account.list_categories,create_category,update_category,hide_category,delete_category.list_merchants,create_merchant,update_merchant.
Архивация счёта и скрытие категории сохраняют историю. Для удаления категории инструмент требует confirm: true и проверяет, что категория не используется в активных операциях. Удаление напоминания также требует confirm: true.
Операции, бюджеты и отчёты
list_transactions— фильтрует операции по датам, счёту и категории; выдаёт результат страницами.create_transaction,update_transaction,delete_transaction. Последний помечает операцию удалённой в Дзен-мани, сохраняя её запись в истории синхронизации.summarize_spending— сводит доходы и расходы за период по валютам и категориям. Суммы разных валют не складываются.list_budgets,set_budget,delete_budget.
Для удаления бюджета сервер разблокирует его и устанавливает сумму в ноль, сохраняя связанные данные. Проверяй валюту и период при анализе итогов.
Напоминания и подсказки
list_reminders,list_reminder_markers,create_reminder,update_reminder,delete_reminder.suggest_transaction,suggest_transactions— запрашивают у Дзен-мани подсказки категории и контрагента для одной или нескольких операций.
Низкоуровневая работа с API
apply_zenmoney_diffсоздаёт и изменяет записи пакетами для поддерживаемых сущностей, включая операции, счета, категории, контрагентов, бюджеты и напоминания.Частичное изменение объединяется с текущей записью. Новые записи связываются с текущим профилем.
Для удаления через
apply_zenmoney_diffнужно явно передатьconfirmDeletes: true. Высокоуровневыеdelete_categoryиdelete_reminderтребуютconfirm: true. Системные сущностиuser,instrumentиcompanyдоступны только для чтения.
Используй apply_zenmoney_diff только когда высокоуровневого инструмента недостаточно: этот инструмент позволяет менять больше полей API за один вызов.
Данные и безопасность
Токен отправляется как Bearer только на
https://api.zenmoney.ru/v8/diff/иhttps://api.zenmoney.ru/v8/suggest/.Транзакционная история хранится в памяти процесса и не записывается сервером в локальную базу или файлы.
stdout зарезервирован для MCP-протокола; диагностика возвращается через stderr/MCP-ответы.
Токен даёт доступ к данным Дзен-мани в соответствии с правами аккаунта. Не передавай его в сообщения, аргументы команд, Git или логи.
Скрипт настройки защищает обычный файл токена правами, но
.gitignoreне удалит секрет, если его вручную закоммитили. Перед публикацией проверь историю репозитория.Перед созданием, изменением или удалением финансовой записи проверь сумму, валюту, счёт и категорию.
Secure MCP Tunnel и systemd
Tunnel — необязательный способ подключить сервер через Secure MCP Tunnel. Локальный stdio-запуск не требует Tunnel ID или runtime API key.
Создай Secure MCP Tunnel и получи Tunnel ID и runtime API key.
Сохрани runtime key отдельно от токена Дзен-мани:
./bin/set-openai-key.shПо умолчанию он записывается в
${HOME}/.config/zen_money_mcp/openai-runtime-keyс правами600.Скопируй профиль и замени
REPLACE_WITH_NEW_TUNNEL_IDна свой Tunnel ID:install -d -m 700 "$HOME/.config/zen_money_mcp" cp deploy/tunnel-profile.yaml.example "$HOME/.config/zen_money_mcp/tunnel-profile.yaml" chmod 600 "$HOME/.config/zen_money_mcp/tunnel-profile.yaml"В профиле проверь путь в
api_keyи командуnode .../src/server.mjs; укажи пути и домашний каталог пользователя, который запускает службу.При настройке systemd сначала отредактируй
deploy/zen-money-mcp-tunnel.service.example: в шаблоне используются пользовательvscode, каталог/var/www/zen-money-mcpи профиль/home/vscode/.... Затем установи его и запусти службу:sudo install -o root -g root -m 0644 deploy/zen-money-mcp-tunnel.service.example /etc/systemd/system/zen-money-mcp-tunnel.service sudo systemctl daemon-reload sudo systemctl enable --now zen-money-mcp-tunnel.service
Шаблон профиля слушает health endpoint только на 127.0.0.1. Не открывай его наружу и не передавай runtime key другим людям. Бинарный bin/tunnel-client в репозитории собран для Linux x86-64; для другой ОС установи совместимую версию отдельно. Перед повторным распространением бинарного файла проверь условия его правообладателя.
Устранение неполадок
«Токен не настроен»: выполни
./bin/set-token.shот имени пользователя, запускающего MCP-сервер.401 от API: токен отклонён; проверь его в настройках Дзен-мани и сохрани заново.
403 от API: у токена нет доступа; создай или обнови токен с нужными разрешениями.
Ошибка прав на файл: установи режим
600, проверь владельца и убедись, что путь не является символической ссылкой.Tunnel не запускается: проверь Tunnel ID, runtime key, путь к файлу ключа, абсолютный путь проекта и systemd-журнал службы.
Лицензия
Исходный код проекта распространяется по лицензии MIT; текст находится в LICENSE. Бинарный bin/tunnel-client является отдельным компонентом и не получает лицензию MIT автоматически; проверь условия его правообладателя перед распространением.
Available Tools
33 toolsapply_zenmoney_diffA
Полный низкоуровневый доступ к /v8/diff/: создаёт и изменяет любые поля счетов, категорий, контрагентов, бюджетов, напоминаний, маркеров напоминаний и операций; принимает массивы записей для пакетных изменений. Частичная запись объединяется с текущей, чтобы сохранить пропущенные поля. Для удаления обязательно confirmDeletes: true. Системные сущности user, instrument и company доступны только для чтения. Для бюджета передавай date первого числа месяца и tag (ID категории, null для без категории или нулевой UUID для общего бюджета).
Inputs: tag, budget, account, deletion, +5 more.
archive_accountB
Архивировать счёт, сохранив его операции и историю.
Inputs: id (required).
create_accountC
Создать наличный, банковский, карточный или электронный счёт.
Inputs: type (required), title (required), instrument (required), savings, +2 more.
create_categoryC
Создать категорию доходов, расходов или обоих типов.
Inputs: title (required), kind, parent, required.
create_merchantC
Добавить контрагента для операций и подсказок.
Inputs: title (required).
create_reminderC
Создать запланированный расход, доход или перевод, в том числе повторяющийся.
Inputs: type (required), amount (required), account (required), startDate (required), +10 more.
create_transactionC
Создать расход, доход или перевод. Запишет финансовую операцию в Дзен-мани.
Inputs: date (required), type (required), amount (required), account (required), +6 more.
delete_budgetB
Убрать бюджет категории за месяц, сняв фиксацию и обнулив сумму.
Inputs: type (required), month (required), category.
delete_categoryA
Безвозвратно удалить неиспользуемую категорию после явного подтверждения.
Inputs: id (required), confirm (required).
delete_reminderB
Удалить напоминание. Нужно явно подтвердить удаление.
Inputs: id (required), confirm (required).
delete_transactionB
Пометить операцию удалённой в Дзен-мани. Изменит финансовую запись.
Inputs: id (required).
get_zenmoney_entitiesB
Получить полные исходные записи любой сущности ZenMoney API, включая reminderMarker. Используй для доступа ко всем полям и фильтров, которых нет в кратких инструментах.
Inputs: entity (required), limit, offset, search, +3 more.
get_zenmoney_profileA
Показать ID профиля и основную валюту Дзен-мани.
Inputs: no named parameters.
hide_categoryB
Скрыть категорию для новых операций, сохранив прошлую историю.
Inputs: id (required).
list_accountsC
Показать счета, валюты и балансы.
Inputs: includeArchived.
list_budgetsB
Показать бюджеты за месяц, включая общий и безкатегорийный бюджет.
Inputs: month (required).
list_categoriesC
Показать категории доходов и расходов и их родительские категории.
Inputs: includeHidden.
list_companiesB
Показать банки и платёжные организации из Дзен-мани.
Inputs: no named parameters.
list_instrumentsB
Показать доступные валюты и курсы.
Inputs: no named parameters.
list_merchantsC
Показать сохранённых контрагентов и получателей.
Inputs: no named parameters.
list_reminder_markersC
Показать конкретные запланированные операции (ReminderMarker), включая planned, processed и deleted.
Inputs: state, toDate, fromDate.
list_remindersC
Показать запланированные операции и их состояния.
Inputs: toDate, fromDate.
list_transactionsB
Найти операции по датам, счёту и категории; результат разбит на страницы.
Inputs: limit, offset, toDate, account, +3 more.
set_budgetC
Установить месячный бюджет дохода или расхода. Изменит бюджет в Дзен-мани.
Inputs: type (required), month (required), amount (required), category.
suggest_transactionC
Запросить у Дзен-мани подсказку категории и контрагента.
Inputs: date, payee, amount, comment.
suggest_transactionsB
Получить подсказки Дзен-мани сразу для нескольких операций через пакетный /v8/suggest/.
Inputs: transactions (required).
summarize_spendingC
Свести доходы и расходы за период по валюте и категории. Валюты не складываются между собой.
Inputs: toDate (required), fromDate (required).
sync_zenmoneyB
Синхронизировать состояние с Дзен-мани через /v8/diff/. Можно запросить полную повторную загрузку выбранных сущностей.
Inputs: forceFetch.
update_accountC
Изменить название, учёт баланса, накопительный статус или SMS-настройки счёта.
Inputs: id (required), title, savings, enableSMS, +2 more.
update_categoryC
Изменить название, родителя и настройки категории.
Inputs: id (required), title, parent, required, +4 more.
update_merchantC
Переименовать сохранённого контрагента.
Inputs: id (required), title (required).
update_reminderC
Изменить сумму, счета, категорию, дату или повторение напоминания.
Inputs: id (required), step, payee, amount, +10 more.
update_transactionC
Изменить сумму, дату, описание, получателя или категорию операции.
Inputs: id (required), date, payee, amount, +3 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 33 tools
Most entity-specific tools have clear boundaries, but apply_zenmoney_diff and get_zenmoney_entities overlap with nearly every create/update/list tool by offering raw access to all entities. The descriptions do explain when to use the low-level tools, which mitigates but does not eliminate the risk of misselection.
Tool names consistently use snake_case with a verb-first pattern (list_, get_, create_, update_, delete_, set_, suggest_, etc.). Domain-specific verbs like sync, apply, hide, and archive are still predictable and distinguishable.
With 33 tools, the surface is quite heavy even for a comprehensive personal finance API. Many CRUD operations could be consolidated or handled through the existing generic diff/entity tools, making the set feel bloated.
The server covers the main lifecycle for transactions, categories, accounts, budgets, and reminders, plus raw access for advanced cases. Minor gaps exist in the high-level surface, such as no dedicated merchant deletion or account deletion, but these are workable through archive or apply_zenmoney_diff.
Maintenance
Related MCP Connectors
Read-only personal finance for AI agents: budgets, receipts, net worth, bills. OAuth 2.1.
Personal finance tracker: accounts, transactions, budgets, investments and analytics over OAuth.
Read-only access to your bank, investment, and crypto accounts: balances, transactions, holdings.
Track expenses, budgets, balances, transfers, and multi-currency reports with OAuth-secured tools.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceExposes personal-finance tools like accounts, transactions, spending analysis, budgets, bills, reminders, portfolio, and goals via MCP, enabling any MCP client to query financial data.-
- AlicenseAqualityCmaintenanceEnables read-only access to YNAB budgets, accounts, categories, payees, and transactions, plus safe addition of unapproved transactions with dry-run and duplicate pre-check for reconciliation workflows.6MIT
- AlicenseNot gradedqualityBmaintenanceEnables compatible AI clients to read stored personal-finance data and, with explicit user authorization, perform supported mutations under the same ownership checks as the web app.MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants and other MCP clients to access and manage personal finance data, including transactions, categories, tags, budgets, recurring items, accounts, crypto, and balance history through the provider's API.41 npmMIT