Skip to main content
Glama
drebedengi-mcp

drebedengi-mcp

by hawk911

drebedengi-mcp

MCP-сервер для drebedengi.ru («Дребеденьги», домашняя бухгалтерия). Работает через официальный SOAP API сервиса (https://www.drebedengi.ru/soap/), без парсинга сайта.

Инструменты

Инструмент

Что делает

get_balance

Остатки по счетам по каждой валюте (сейчас или на дату), итоги; долги отдельным списком

list_accounts

Счета / места хранения

list_categories

Категории расходов (kind=expense) или источники доходов (kind=income)

list_tags, list_currencies

Теги, валюты с курсами

get_transactions

Операции за период: фильтры по типу, счетам, категориям, тегам, сумме, поиск по комментарию

get_report

Расходы по категориям / доходы по источникам, с усреднением и пересчётом в одну валюту

add_expense, add_income

Добавить расход / доход

add_transfer

Перевод между счетами

add_currency_exchange

Обмен валюты

update_transaction

Изменить расход/доход (сумма, категория, счёт, дата, комментарий)

delete_transaction

Удалить операцию (у перевода/обмена — обе половины)

create_category

Создать категорию, источник дохода, счёт или тег

Суммы везде в рублях (не в копейках). Счета, категории, источники и теги можно указывать по id или по названию (без учёта регистра и эмодзи; «Еда» найдёт «🥪 Еда»). При неоднозначности сервер вернёт список вариантов с id.

Related MCP server: myfinance-mcp

Установка

Нужен Node.js 18+.

git clone https://github.com/hawk911/drebedengi-mcp.git
cd drebedengi-mcp
npm install
cp .env.example .env

Откройте .env и впишите логин (e-mail), пароль и API ID. Затем проверьте подключение:

npm run check

API ID обязателен для личного аккаунта. Публичный demo_api работает только с демо-аккаунтом (для своего аккаунта сервер ответит Login failed. API ID 'demo_api' is invalid). Собственный API ID выдаёт поддержка drebedengi.

npm run smoke — проверка всех инструментов чтения на вашем аккаунте (режим только чтения, выводит только количества).

Нагрузка на сервер

Правила drebedengi: не создавать поток запросов и не перезапрашивать одни и те же данные в большом объёме (для этого есть getChangeList). Поэтому:

  • запросы к API идут строго по одному, с паузой не меньше DREBEDENGI_MIN_INTERVAL_MS (по умолчанию 1 с);

  • справочники (счета, категории, источники, валюты, теги) загружаются один раз; затем не чаще чем раз в 10 минут сервер сверяет ревизию (getCurrentRevision) и через getChangeList перезагружает только изменившиеся списки; раз в 6 часов справочники обновляются полностью на случай, если ревизия что-то не отразила;

  • если название не найдено в кэше, перезагружается только нужный список (не чаще раза в минуту);

  • после добавления/изменения операции подтверждение собирается локально, без повторного чтения.

Первый вызов после запуска — около 7 запросов (≈10 с), следующие — 1–2 запроса.

Переменные окружения

Переменная

Описание

DREBEDENGI_LOGIN

E-mail для входа

DREBEDENGI_PASSWORD

Пароль

DREBEDENGI_API_ID

API ID от поддержки drebedengi (demo_api — только для демо-аккаунта)

DREBEDENGI_MIN_INTERVAL_MS

Минимальная пауза между запросами к API, мс (по умолчанию 1000)

DREBEDENGI_REF_CHECK_MS

Как часто сверять ревизию справочников, мс (по умолчанию 600000)

DREBEDENGI_DEFAULT_ACCOUNT

Счёт по умолчанию для add_expense / add_income

DREBEDENGI_READONLY

1 — только чтение, инструменты записи не регистрируются

DREBEDENGI_ENV_FILE

Путь к другому .env

Переменные можно задать в .env рядом с package.json или в конфиге MCP-клиента (env).

Подключение

Claude Code (укажите свой путь к папке):

claude mcp add drebedengi -- node /path/to/drebedengi-mcp/src/server.js

Claude Desktop — %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "drebedengi": {
      "command": "node",
      "args": ["C:/path/to/drebedengi-mcp/src/server.js"]
    }
  }
}

Тесты

npm test прогоняет все инструменты через MCP-клиент на публичном демо-аккаунте (demo@example.com / demo): создаёт тестовые операции и затем удаляет их. На свой аккаунт его не направляйте — для него есть npm run smoke (только чтение).

Особенности API

  • Протокол — SOAP rpc/encoded (PHP), ассоциативные массивы передаются как ns2:Map; клиент написан вручную в src/soap.js.

  • Расход хранится с отрицательной суммой, доход — с положительной. Перевод и обмен — две связанные записи (client_move_id / client_change_id), исходящая половина отрицательная.

  • client_id при вставке должен быть уникальным: сервер запоминает соответствие client→server.

  • Если в аккаунте закрыт период, запись задним числом будет отклонена с сообщением «Период закрыт для изменений».

Лицензия

MIT — код можно свободно копировать, изменять, распространять и использовать в любых целях, в том числе коммерческих. Единственное условие — сохранять текст лицензии с указанием автора.

Автор и владелец репозитория — Denis B. (@hawk911).

Available Tools

14 tools
add_currency_exchangeОбмен валютыC

Обмен валюты: продано from_amount в from_currency, получено to_amount в to_currency.

Inputs: account (required), to_amount (required), from_amount (required), to_currency (required), +4 more.

add_expenseДобавить расходC

Записать расход. amount — положительное число в валюте (например 349.90).

Inputs: amount (required), category (required), date, account, +2 more.

add_incomeДобавить доходC

Записать доход. amount — положительное число в валюте.

Inputs: amount (required), source (required), date, account, +2 more.

add_transferПеревод между счетамиB

Перевести деньги с одного счёта на другой (в одной валюте).

Inputs: amount (required), to_account (required), from_account (required), date, +2 more.

create_categoryСоздать категорию / источник / счёт / тегB

Создать категорию расходов (kind=category), источник дохода (source), счёт (account) или тег (tag).

Inputs: kind (required), name (required), parent, description.

delete_transactionУдалить операциюA
Destructive

Удалить операцию по id. Для перевода/обмена удаляются обе половины. Необратимо.

Inputs: id (required).

get_balanceОстатки по счетамA
Read-only

Текущие (или на дату) остатки по счетам — по каждой валюте счёта — и итоги по валютам. Долги (кто кому должен) возвращаются отдельным списком debts и в итоги счетов не входят.

Inputs: date, include_hidden, subtract_debts, subtract_savings.

get_reportОтчёт по категориям / источникамA
Read-only

Суммы расходов по категориям (group_by=category) или доходов по источникам (group_by=source) за период, с опциональным усреднением по месяцам/неделям/дням и конвертацией в одну валюту. Строки родительских категорий включают дочерние.

Inputs: tags, period, average, date_to, +5 more.

get_transactionsСписок операцийA
Read-only

Операции (расходы, доходы, переводы, обмен валют) за период с фильтрами. Суммы: расход < 0, доход > 0. Возвращает также суммы расходов/доходов по валютам по всем найденным операциям.

Inputs: tags, type, limit, period, +7 more.

list_accountsСчета / места храненияA
Read-only

Список счетов (кошельки, карты, банки) с id. Остатки — через get_balance.

Inputs: include_hidden.

list_categoriesКатегории расходов и источники доходовB
Read-only

Дерево категорий расходов (kind=expense) или источников дохода (kind=income) с полными путями.

Inputs: kind, include_hidden.

list_currenciesВалютыB
Read-only

Валюты пользователя с курсами к основной валюте.

Inputs: no named parameters.

list_tagsТегиC
Read-only

Список тегов (меток) с id.

Inputs: include_hidden.

update_transactionИзменить операциюB
DestructiveIdempotent

Изменить расход или доход по id (только переданные поля). category — категория для расхода или источник для дохода.

Inputs: id (required), date, amount, account, +3 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 14 tools

    Disambiguation4/5

    Most tools target clearly different operations: transaction listing vs. reporting, and add_expense/add_income/add_transfer/add_currency_exchange are distinct. The main ambiguity is create_category, which actually creates categories, income sources, accounts, or tags, making its name narrower than its behavior. get_transactions and get_report could be slightly confused but descriptions clarify that one returns raw operations and the other aggregates.

    Naming Consistency4/5

    Most names follow a predictable verb_noun pattern: get_balance, list_accounts, update_transaction, delete_transaction, add_expense, etc. Minor deviations exist: add_* is used for recording transactions while create_category is used for setup entities, and create_category itself is overloaded across multiple entity types. The convention is still readable overall.

    Tool Count5/5

    14 tools is a well-scoped set for a personal finance server, covering accounts, categories, tags, currencies, transactions, transfers, exchanges, and reports. No tool feels obviously redundant or out of place.

    Completeness3/5

    Core transaction workflows are covered: add, list, update, delete, transfer, exchange, and reporting. However, several domain entities have create/list but no update or delete operations: categories, accounts, tags, and currencies cannot be modified or removed after creation. This creates notable lifecycle gaps for setup and maintenance operations, even if day-to-day transaction recording is complete.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables users to manage personal finances using natural language, including tracking expenses, income, budgets, and generating financial summaries.
      -
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables personal finance management through natural language: log expenses, snap receipt photos, and import bank statements. Computes budgets, trends, and net worth in any currency, with data persisted and accessible via MCP.
      2
      MIT
    • F
      license
      B
      quality
      B
      maintenance
      Enables full expense management, including CRUD operations, budgets, recurring expenses, CSV export, and monthly reports, through natural language.
      13
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables natural-language management of personal finances, including reading balances grouped by bank/category/card/month, retrieving transactions filtered by date and keyword, listing banks/cards/categories, creating/updating/deleting transactions individually or in bulk, and transferring money between the user's own accounts.
      MIT