Skip to main content
Glama
uk-kd

ychetlab-mcp

by uk-kd
README.md
# ychetlab-mcp

MCP-сервер панели [УчётLab](https://ychetlab.ru): дела, операции, счета, контрагенты,
проекты, склад, бюджеты, долги и документы — из Claude Code и других клиентов MCP.

Сервер работает **от имени владельца токена** и ограничен ровно его правами: всё, что
не позволено роли в деле, вернёт отказ. Выдать помощнику больше, чем можете сами,
нельзя. Сузить — можно: токен выпускается на отдельные дела и/или в режиме «только
чтение», и это проверяет сама панель, а не клиент.

## Установка

Одной командой:

```bash
npx ychetlab-mcp@latest setup
```

Установщик спросит адрес панели и токен, проверит связь, спросит дело по умолчанию и
режим доступа, подключит плагин к Claude Code и поднимет сервер для проверки. После
этого останется перезапустить Claude Code.

Токен выпускается в самой панели: **профиль → Интеграции → «Выпустить токен»**.
Значение показывается один раз — скопируйте сразу. В панели остаётся только начало
строки: в базе хранится лишь отпечаток SHA-256, поэтому восстановить токен нельзя ни
из панели, ни из её базы. Потерянный токен отзывают и выпускают новый.

### Другой клиент MCP

Установщик в конце печатает готовую строку запуска с полным путём к серверу — её и
вставляйте:

```bash
npm i -g ychetlab-mcp
ychetlab-mcp status   # покажет путь к dist/index.js
```

Полный путь тут не прихоть: запуск через `npx` разрешается заново при каждом старте, в
чужом окружении. На Windows `npx` — это `.cmd`, и клиент, порождающий процесс без
оболочки, получает `ENOENT`; на холодном кэше первый старт уходит в реестр и не
укладывается в рукопожатие. Плагин Claude Code по той же причине везёт собранный
сервер с собой.

## Команды

| Команда | Что делает |
|---|---|
| `ychetlab-mcp setup` | установка целиком: токен, настройки, плагин |
| `ychetlab-mcp` | запустить сервер MCP (так его вызывает Claude Code) |
| `ychetlab-mcp login` | только сохранить токен доступа |
| `ychetlab-mcp logout` | удалить токен с этой машины |
| `ychetlab-mcp status` | проверить связь с панелью и показать дела |
| `ychetlab-mcp tools` | перечислить доступные инструменты |

У `setup` и `login` есть ключи `--url <адрес>` и `--token <ylab_…>`, если вводить их
отдельно не хочется.

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

| Переменная | Назначение |
|---|---|
| `YCHETLAB_URL` | Адрес панели. Обычно берётся из сохранённого профиля. |
| `YCHETLAB_TOKEN` | Токен доступа вместо сохранённого файла — для контейнера или сборки. |
| `YCHETLAB_BUSINESS` | Дело по умолчанию: название или идентификатор. |
| `YCHETLAB_READ_ONLY` | Значение `1` оставляет только инструменты чтения. |
| `YCHETLAB_CREDENTIALS` | Другой путь к файлу с сохранённым токеном. |
| `YCHETLAB_TIMEOUT_MS` | Сколько ждать ответ панели. По умолчанию `30000`. |
| `YCHETLAB_INSECURE_TLS` | Значение `1` отключает проверку сертификата — для самоподписанного TLS. |

Окружение главнее сохранённого профиля: им переопределяют настройки в контейнере и на
сборке.

## Инструменты — 49 в двенадцати разделах

| Раздел | Инструменты |
|---|---|
| Справочник | `ychetlab_catalog` |
| Доступ и аккаунт | `ychetlab_login`, `ychetlab_logout`, `ychetlab_whoami`, `account_get`, `account_update` |
| Дела | `businesses_list`, `businesses_get`, `businesses_save`, `businesses_delete`, `members_list` |
| Счета | `accounts_list`, `accounts_save`, `accounts_delete` |
| Операции | `operations_list`, `operations_get`, `operations_save`, `operations_delete`, `operations_confirm`, `operations_settle`, `operations_stats`, `operations_forecast`, `operations_breakdowns`, `operations_comment` |
| Долги | `receivables_summary`, `receivables_counterparty` |
| Контрагенты | `counterparties_list`, `counterparties_save`, `counterparties_delete`, `counterparty_groups` |
| Проекты | `categories_list`, `categories_save`, `categories_delete` |
| Склад | `warehouse_list`, `warehouse_get`, `warehouse_save`, `warehouse_delete`, `warehouse_groups` |
| Бюджеты | `budgets_list`, `budgets_get`, `budgets_save`, `budgets_delete` |
| Документы | `templates_list`, `templates_get`, `documents_list`, `documents_generate`, `documents_send` |
| Уведомления | `notifications_list`, `notifications_read` |

Каждый инструмент помечен как чтение, изменение или опасное действие; клиент MCP
спрашивает подтверждение перед опасными. Удаление дела вдобавок требует ввести его
название дословно — случайная фраза ничего не сотрёт.

В режиме «только чтение» клиенту показывается 28 инструментов вместо 49. Инструменты
входа и выхода остаются: иначе совет «вызовите `ychetlab_login`», которым кончается
любой отказ по доступу, вёл бы к инструменту, которого в списке нет.

## Что стоит знать модели (и вам)

- **Деньги.** Сумма операции всегда в валюте её счёта — своё значение валюты
  передавать не нужно. Сводки (статистика, прогноз, разрезы, долги, бюджеты) считаются
  в рублях по курсу ЦБ. Суммы разных валют складывать нельзя.
- **План и факт.** Плановая операция в остатки и статистику не входит, в прогноз
  входит. Подтверждение — `operations_confirm`, частичная оплата — `operations_settle`.
- **Долг** не заводится отдельной сущностью: это и есть неподтверждённая плановая
  операция с контрагентом.
- **Считается на лету.** Остатки счетов и склада, прогресс бюджетов и долги панель
  вычисляет из операций. Задать их напрямую нельзя — меняют начальные значения или
  сами операции.
- **Проекты** в интерфейсе панели — это `categories` в API. Иерархия одноуровневая: у
  подпроекта своих подпроектов не бывает.
- **Что закрыто всегда.** Смена пароля, двухфакторная аутентификация, список устройств
  и управление самими токенами доступны только из панели. Токеном выпустить или
  отозвать токен нельзя — иначе утёкший ключ выписывал бы себе новые.

## Где лежит токен

На машине клиента — в `~/.ychetlab/credentials.json` с правами `600`. Файл пишется
целиком через временный и переименование, под блокировкой: рядом может работать вторая
сессия Claude Code.

## Разработка

```bash
npm install
npm run typecheck
npm run build      # сборка пакета + плагина Claude Code одним файлом
```

Сборка плагина (`plugins/ychetlab-mcp/dist`) намеренно едет в репозиторий: Claude Code
берёт плагин прямо отсюда, и без файла сервера ставить нечего.

## Лицензия

MIT

TDQS

B3.2/5.0

Scored across 49 tools

Disambiguation4/5

Each resource family is generally distinct: businesses, accounts, operations, counterparties, warehouse, budgets, templates, and documents have clear boundaries. The main ambiguity is account_get/account_update (user profile) versus accounts_list/accounts_save/accounts_delete (financial accounts), though the singular/plural split and descriptions make the difference recoverable.

Naming Consistency3/5

Most tools follow a readable resource_action pattern like operations_list, businesses_save, and warehouse_get. However, the ychetlab_ prefixed tools (catalog, login, logout, whoami) break the pattern, and names like operations_stats, receivables_summary, counterparty_groups, and warehouse_groups are noun-like rather than verb-led. Mixed conventions remain understandable but are not uniform.

Tool Count2/5

49 tools is well above the practical limit for agent discoverability and selection. The domain is broad, but the surface could be consolidated with combined list/get endpoints or upsert-style save/create helpers without losing capability.

Completeness3/5

The tool set covers the core accounting workflow thoroughly: businesses, accounts, operations, budgets, warehouse, counterparties, receivables, and document generation. Notable gaps exist in membership management (only members_list, no invite/role change/removal), template CRUD (only list/get), and lack of getters for some resources like counterparties and categories.

Maintenance

ActivityMaintained
ResponsivenessNo issues