fintablo-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., "@fintablo-mcp Calculate the work-in-progress for deal code 12345"
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.
fintablo-mcp
Только для чтения MCP-сервер поверх API Fintablo. Задайте финансовый вопрос на естественном языке — сервер вычисляет ответ в коде на основе актуальных данных API: без ручных выгрузок и устаревших срезов.
Главный инструмент: get_nzp — незавершённое производство (НЗП) по сделке, восстановленное из примитивов API и сверенное с собственной цифрой Fintablo.
Только чтение по умолчанию. В клиенте нет ни одного метода записи. Fintablo не получает от этого сервера никаких изменений — независимо от того, о чём попросили модель.
Формула НЗП
Расходы привязываются к этапам сделки, а не к сделке целиком. Открытые этапы (без даты акта) → НЗП; этапы, закрытые актом, → списаны. Для каждого открытого этапа — четыре слоя:
НЗП = Σ по открытым этапам [ операции + обязательства + зарплата + зарплатные налоги ]Слой | Источник | Нюанс |
операции | прямые списания по этапу ( | сумма берётся из поля |
обязательства | все обязательства по этапу ( | считаются целиком, даже если ещё не подписаны актом; поле |
зарплата | сдельная зарплата по этапу ( | сумма из поля |
зарплатные налоги | НДФЛ + взносы | оценка — пропорционально зарплате (см. ниже) |
Выручка и «списано» сходятся к 100 %, итог НЗП — к ~98–99 %, остаток приходится целиком на слой зарплатных налогов.
Как расходы привязаны к этапам
В API сделка содержит массив stages[], у каждого этапа свой id, actDate и amount (выручка без НДС). У самих расходов нет отдельного поля stageId — они привязываются через поле dealId.
Операции (
/v1/transaction): документация прямо говорит, что при прикреплении операции к этапу вdealIdпередаётся идентификатор этапа. Поэтому операции запрашиваются по id этапа (?dealId=<stageId>).Обязательства и сдельная зарплата (
/v1/obligation,/v1/deal-salary): здесь документация описываетdealIdтолько как «идентификатор сделки», без оговорки про этап. Значит, Fintablo может хранить там либо id сделки, либо id этапа. Чтобы результат был верным в любом случае, сервер запрашивает эти слои по всем кандидатам сразу — id сделки + id всех этапов — и убирает дубликаты по id записи. Каждая запись затем относится к этапу по своему собственномуdealId: если он совпадает с этапом — к этому этапу; если это id сделки целиком («на уровне сделки») — к первому открытому этапу, чтобы попасть в НЗП ровно один раз.
Сделка без этапов считается как единый расчётный объект (по собственным id/actDate/amount).
Related MCP server: Wallet BudgetBakers MCP
Известная неопределённость — как распознать неверный результат
⚠️ Документация Fintablo гарантирует привязку к этапу через dealId только для операций ДДС. Для обязательств и сдельной зарплаты поведение в спецификации не зафиксировано, и проверить его можно только на живой сделке с этапами. Сервер написан так, чтобы быть корректным при любом из вариантов (см. выше), но если цифра НЗП выглядит не так, как ожидается, в первую очередь проверьте именно эти два слоя.
На что смотреть:
Обязательства или зарплата «потерялись». Если по многоэтапной сделке вы видите в Fintablo обязательства/сдельную зарплату, а в НЗП соответствующий слой нулевой или заметно меньше — сообщите об этом: вероятно, привязка
dealIdустроена иначе, чем предполагалось.Обязательство «уровня сделки» попало не на тот этап. Обязательство, привязанное к сделке целиком (а не к конкретному этапу), относится к первому открытому этапу. В разбивке по этапам (
perStage) оно окажется на этом этапе — это намеренное упрощение. На итоговую сумму НЗП это не влияет (запись считается один раз), но распределение по этапам может выглядеть неожиданно.Зарплата считается только сдельная. Слой зарплаты берётся из
/v1/deal-salary(сдельная зарплата, привязанная к сделке). Зарплата, начисленная через Ведомость месяца (/v1/salary), в расчёт НЗП не попадает. Если в производстве есть труд, который проводится не как сдельный, этот слой будет занижен.Зарплатные налоги — всегда оценка. См. раздел «О слое зарплатных налогов»: это коэффициент, а не фактические суммы.
Все перечисленное — вопросы бизнес-логики, а не ошибки в коде. Окончательно закрыть их можно, сверив результат с эталонной цифрой Fintablo на реальной сделке с этапами (см. Golden-тесты).
Инструменты
Инструмент | Назначение |
| НЗП по одной сделке по её коду (основной) |
| справочник контрагентов |
| группы контрагентов |
| статьи ОПиУ, с фильтром по |
| ограниченный сырой GET для исследования (allowlist путей, лимит размера) |
Установка
npm install
cp .env.example .env # добавьте ваш FINTABLO_TOKEN
npm run dev # запуск на stdio (tsx)
npm run inspect # открыть MCP Inspector
npm test # запустить тесты математикиСборка и подключение в Claude Desktop:
npm run buildЗатем добавьте запись из claude_desktop_config.example.json в ваш
claude_desktop_config.json (используйте абсолютный путь к dist/index.js).
Контракт API (проверено)
Эндпоинты и имена полей в src/fintablo/client.ts сверены с OpenAPI-спецификацией FinTablo
(https://my.fintablo.ru/api/FinTablo-v1-swagger.yaml, она же отрисованная документация на
https://my.fintablo.ru/api/docs):
Базовый URL:
https://api.fintablo.ru, все ресурсы под/v1.Авторизация: заголовок
Authorization: Bearer <token>. Лимит — 300 запросов в минуту (клиент делает retry/backoff на429и5xx).Операции живут на
/v1/transaction: сумма —value, тип —group(income/outcome/transfer), НДС —nds(процент). Разбитые операции приходят отдельными строками (черезparentId), а не вложенным массивом.Пагинация различается:
/transaction—page+pageSize(до 1000),/deal—page(по 500), справочники (/partner,/partner-group,/category) не пагинируются.Сделка ищется по
name(поляcodeв API нет; человекочитаемый код вроде02-26/Б— это имя сделки).Обязательства (
/v1/obligation):amountуже без НДС, отдельное полеnds— это сумма НДС. ПривязкаdealIdк этапу спецификацией не гарантирована — см. «Известная неопределённость».Сдельная зарплата (
/v1/deal-salary): сумма —value. Не путать с/v1/salary(ведомость месяца — другой формат). ПривязкаdealIdк этапу так же не гарантирована (см. там же).
О слое зарплатных налогов
Слой payrollTax — это оценка: общий коэффициент PAYROLL_TAX_RATE (НДФЛ + взносы), применённый к сумме зарплаты этапа. Реальные эффективные ставки различаются по сотрудникам, и привязать их к конкретному этапу из сырых данных нельзя.
При этом ведомость месяца /v1/salary возвращает фактические tax (НДФЛ) и fee (взносы) по сотруднику за месяц. Это месячные итоги, поэтому для разнесения по сделкам/этапам всё равно нужна пропорция — но их можно использовать, чтобы откалибровать PAYROLL_TAX_RATE по эталонным сделкам.
Golden-тесты
test/nzp.test.ts содержит синтетические проверки плюс TODO на самую ценную работу:
записать реальные фикстуры DealData для 11-24/Г и 02-26/Б, затем проверять, что
computeNzp(...) совпадает с эталонными цифрами в пределах допуска. Эти две сделки —
ваша регрессионная сеть: любое будущее изменение API, ломающее математику, будет поймано.
Открытые вопросы, которые закроют именно эти фикстуры:
наследуют ли строки-части разбитой операции
group/ndsродителя (сейчас по умолчаниюoutcome);значение
PAYROLL_TAX_RATE, при котором итог сходится к ~98–99 %.
Структура
src/
index.ts # MCP-сервер: stdio + регистрация инструментов
fintablo/
client.ts # клиент API: авторизация, пагинация, retry/backoff, raw→domain
types.ts # доменные типы, от которых зависит математика
domain/
nzp.ts # формула — ЧИСТАЯ, без I/O, покрыта тестами
vat.ts # вычет НДС по строке (по проценту)
test/
nzp.test.ts # тесты математики + каркас golden-тестовЛицензия
MIT
Available Tools
5 toolsfintablo_getПрямой GET-запрос к FintabloA
GET-запрос только для чтения к разрешённому пути Fintablo /v1 для исследования данных. НЕ используйте результаты как основу для итоговой цифры — для этого есть get_nzp.
Inputs: path (required), query.
get_nzpНезавершённое производство (НЗП) по сделкеA
Рассчитывает НЗП (незавершённое производство) по одной сделке по её коду, например «02-26/Б». Суммирует операции + обязательства + зарплату + зарплатные налоги по ОТКРЫТЫМ этапам, за вычетом НДС по каждой строке, на основе актуальных данных Fintablo. Слой зарплатных налогов — оценочный.
Inputs: dealCode (required).
list_categoriesСтатьи ОПиУC
Статьи ОПиУ, при необходимости отфильтрованные по pnlType.
Inputs: pnlType.
list_partner_groupsГруппы контрагентовC
Группы контрагентов.
Inputs: no named parameters.
list_partnersКонтрагентыC
Справочник контрагентов.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Each tool targets a distinct resource or operation: fintablo_get for raw data exploration, get_nzp for a specific calculation, and the three list_* tools for reference data. No two tools have overlapping purposes.
Naming conventions are mixed: most tools use a verb_noun pattern (list_categories, list_partners, get_nzp), but fintablo_get uses a namespace prefix before the verb, breaking consistency. However, the patterns are still readable.
With 5 tools, the set is well-scoped for a specialized financial data server. Each tool serves a clear purpose without being overwhelming or insufficient.
The tool surface lacks key operations for the domain, such as listing deals or transactions, creating/updating data, or other common calculations. This leaves significant gaps that could hinder an agent from fully accomplishing financial analysis tasks.
Maintenance
Related MCP Connectors
Query your real net worth, spending, transactions, budgets and portfolio from any MCP client.
Read-only MCP server for The Quiet Protocol's engines, benchmarks, proof, and business data.
Text-to-SQL MCP server: read-only queries on PostgreSQL, MySQL and SQL Server with your real schema
MCP server for querying Forkast documentation
Related MCP Servers
- AlicenseAqualityDmaintenanceRead-only MCP and HTTP proxy server for accessing Monarch Money financial data, enabling transaction analysis, budget tracking, and cashflow insights through natural language.6MIT
- AlicenseAqualityDmaintenanceRead-only MCP server for accessing Wallet by BudgetBakers financial data, allowing users to query accounts, transactions, categories, budgets, and more via natural language.10MIT

RiseUp MCP Serverofficial
AlicenseAqualityBmaintenanceMCP server for programmatic read-only access to RiseUp cashflow data, allowing AI assistants to retrieve budget information via natural language.71,264 npm39MIT- AlicenseAqualityCmaintenanceRead-only MCP server for querying public smallcase data (catalog, returns, risk metrics, stocks, mutual funds) via natural language. No API key required.81MIT