Directum RX MCP (rxmcp)
# rxmcp: Directum RX MCP server
<img src="assets/icon.svg" width="88" height="88" align="right" alt="rxmcp">
**Directum RX MCP server.** Connects an AI assistant (Claude, Cursor and any MCP host) to Directum RX: assignments, tasks, documents and their text, knowledge base, agile boards, project plans, any entity via OData, and search over the system help of your own RX version. Single binary, read-only by default. The rest of this page is in Russian; the tool list and settings are in [server.json](server.json).
MCP-сервер для Directum RX. Подключает ИИ-ассистента (Claude Desktop, Claude Code, Cursor и любой другой хост с поддержкой [Model Context Protocol](https://modelcontextprotocol.io)) к вашей системе: задания, задачи, документы, база знаний, agile-доски, проекты и планы.
Работает от имени пользователя RX через штатный сервис интеграции (OData). Прав сверх ваших не получает, схему не меняет, в базу и логи RX не заглядывает.
Один бинарник без зависимостей: Linux, Windows, macOS (Intel и Apple Silicon).
## Установка за две команды
```sh
curl -fsSL https://drxinfra.ru/dl/rxmcp/install.sh | sh # или скачайте бинарник вручную
rxmcp setup
```
`setup` спросит адрес RX, логин и способ входа, проверит подключение только чтением и сам пропишет сервер в Claude Desktop, Claude Code и Cursor. Перезапустите клиент — в списке инструментов появится `rx`.
Без интернета и без скриптов: возьмите архив со страницы [Releases](https://github.com/drxinfra/rxmcp/releases), распакуйте, положите бинарник в `PATH` и запустите `rxmcp setup`. На macOS, если файл скачан браузером, система попросит снять карантин: `xattr -d com.apple.quarantine rxmcp`.
## Где лежат настройки
В профиле `~/.config/rxmcp/config.json` (Windows: `%AppData%\rxmcp\config.json`), права `0600`. В конфиге ИИ-клиента остаётся только путь к бинарнику:
```json
{ "mcpServers": { "rx": { "command": "/usr/local/bin/rxmcp" } } }
```
Так сделано, чтобы менять настройки одной командой, а не искать JSON клиента:
```sh
rxmcp config # что настроено (секреты не печатаются)
rxmcp config set RXMCP_ALLOW_WRITE=1 # включить запись
rxmcp config set RXMCP_TZ=Europe/Moscow # часовой пояс для дат
rxmcp check # проверить связь с RX, только чтение
```
Переменные окружения имеют приоритет над профилем — в контейнере и в CI удобнее передавать их напрямую. Имена те же, полный список: `rxmcp help`.
## Вход в RX
| Способ | Когда подходит | Что нужно сделать |
|---|---|---|
| `password` | в RX включён вход по паролю (обычно небольшие внедрения) | `rxmcp setup`, ввести пароль один раз |
| `cookie` | работает всегда, в том числе при SSO, Keycloak и домене | войти в RX в браузере, скопировать cookie `sungero_client`, `rxmcp login --paste` |
| `oidc` | ваш провайдер и заведённый для rxmcp клиент | `rxmcp login`, вход в браузере (PKCE) или по коду (device flow) |
| `bearer` | у вас уже есть токен | `RXMCP_TOKEN=...` |
Cookie — обходной путь, зато без участия администратора. Сессия RX живёт недолго, поэтому обновление сделано в одну команду:
```sh
rxmcp login --paste # взять cookie из буфера обмена
rxmcp login # то же с подсказкой: скопировать cookie и нажать Enter
```
Cookie лежит отдельным файлом и перечитывается на каждом запросе: **перезапускать ИИ-клиент после обновления не нужно**. Если сессия истекла, сервер так и скажет в ответе вместо непонятной ошибки.
Про `oidc`: rxmcp умеет и вход в браузере (authorization code + PKCE, локальный redirect), и device flow (код на экране, без открытого порта). Для этого администратору нужно один раз завести в вашем провайдере публичный клиент — без этого остаётся `cookie` или `password`.
## Что умеет
Чтение (всегда):
- `rx_whoami` — кто я в RX.
- `rx_my_assignments` — задания в работе, просроченные, непрочитанные, выполненные; уведомления.
- `rx_get_assignment`, `rx_get_task`, `rx_list_tasks` — карточки с перепиской, вложениями и заданиями.
- `rx_find_documents`, `rx_get_document`, `rx_get_document_text` — поиск, карточка, текст версии (docx, xlsx, pptx, txt, md, csv, json, xml, html, rtf).
- `rx_find_employees` — найти сотрудника, чтобы адресовать задачу.
- База знаний: `rx_kb_areas`, `rx_kb_search`, `rx_kb_article` (статья в markdown).
- Agile-доски: `rx_boards`, `rx_board`, `rx_tickets`, `rx_ticket`.
- Проекты: `rx_projects`, `rx_project`, `rx_project_plans`, `rx_project_plan` (дерево работ, ответственные, просрочки).
- Справка системы: `rx_help_search`, `rx_help_topic`, `rx_help_toc`. Помощник отвечает на «как настроить» и «что значит это поле» по справке вашей версии RX и называет статью.
- Любая сущность: `rx_find_entity` (поиск по русскому или английскому названию), `rx_describe_entity` (поля и ссылки), `rx_query` (чтение по условию). Для данных, под которые нет готового инструмента: договоры, контрагенты, справочники, доработки заказчика.
Запись (только при `RXMCP_ALLOW_WRITE=1`, иначе инструменты не видны модели):
- `rx_create_ticket` — карточка на доске: колонка, срок, приоритет, теги, исполнители, вложения.
- `rx_update_ticket` — изменить карточку, перенести её в другую колонку, добавить вложения: ссылку, документ RX по Id или файл с диска (до 20 МБ).
- `rx_comment_ticket` — добавить комментарий к карточке. Существующие комментарии с авторами и временем показывает `rx_ticket`.
- `rx_delete_tickets` — удалить карточки с доски, как удаление в интерфейсе доски: карточка получает статус Deleted (до 100 за раз).
- `rx_create_column` — колонка на доске: название, место, финальная, лимит карточек. Без места встаёт перед «Выполнено».
- `rx_complete_assignment` — выполнить задание или принять работы (результат подбирается по типу задания).
- `rx_create_simple_task` — создать и отправить простую задачу.
- `rx_abort_task` — прекратить задачу.
- `rx_call_action` — вызвать действие модуля по имени, если готового инструмента для него нет.
Плюс ресурсы `rx://assignment/{id}`, `rx://task/{id}`, `rx://document/{id}` и промпты «разбор заданий на сегодня», «краткое содержание документа».
Каждое пишущее действие показывает, что именно будет сделано, и спрашивает подтверждение (elicitation), если клиент это умеет. Некоторые клиенты заявляют, что умеют, но форму не показывают и сразу отвечают отказом: тогда каждый вызов заканчивается «Пользователь отменил действие». В этом случае `rxmcp config set RXMCP_CONFIRM=0` выключает форму, и подтверждением служит только разрешение на вызов инструмента в самом клиенте. Теги и исполнители ищутся по имени: чего не нашлось — про то будет сказано прямо в ответе, карточка при этом создастся.
Как это устроено внутри и почему именно так: [docs/architecture.md](docs/architecture.md).
## Справка системы
Справка Directum RX принадлежит вендору, поэтому в поставке rxmcp её нет. Сервер скачивает её с вашего же стенда: там она лежит рядом с веб-клиентом и соответствует вашей версии системы.
```
rxmcp docs index # скачать и проиндексировать, около трёх минут на 5000 статей
rxmcp docs search правило согласования договоров
rxmcp docs status
```
Команду можно не выполнять: при первом вопросе по справке сервер начнёт скачивание сам и ответит, когда закончит. Индекс лежит в каталоге настроек (`help-<хост>.idx.gz`, около 5 МБ), у каждого стенда свой. После обновления RX выполните `rxmcp docs index` ещё раз.
Поиск лексический, с учётом русских окончаний и с приоритетом заголовков. Модель для эмбеддингов не нужна: переформулировать вопрос терминами системы помощник умеет сам. Если справка лежит по нестандартному адресу, задайте `RXMCP_HELP_URL`.
## Docker
Для сервера и для HTTP-режима:
```sh
docker run --rm -p 127.0.0.1:8765:8765 \
-e RXMCP_URL=https://rx.company.ru/Integration \
-e RXMCP_LOGIN=ivanov -e RXMCP_PASSWORD=... \
-e RXMCP_HTTP_ADDR=0.0.0.0:8765 -e RXMCP_HTTP_SECRET=... \
ghcr.io/drxinfra/rxmcp serve --http
```
По stdio из контейнера тоже работает, но для настольного клиента проще бинарник: не нужны ни монтирование каталога с настройками (`-v ~/.config/rxmcp:/config -e RXMCP_HOME=/config`), ни проброс браузера для `oidc`.
## Каталоги MCP
Сервер опубликован в официальном [MCP Registry](https://registry.modelcontextprotocol.io) под именем `io.github.drxinfra/rxmcp`. Запись обновляется автоматически при каждом релизе: описание лежит в `server.json`, образ в `ghcr.io/drxinfra/rxmcp`.
В каталоге [LobeHub](https://lobehub.com/mcp/drxinfra-rxmcp) сервер называется `drxinfra-rxmcp`. Его описание лежит в `lhm.plugin.json` и обновляется вручную: `npx -y @lobehub/market-cli plugin update --dir .` после смены версии в файле.
## Безопасность
- Только сервис интеграции RX и только права вашего пользователя. Ни базы, ни файлов, ни логов системы.
- Запись выключена по умолчанию. Без `RXMCP_ALLOW_WRITE=1` пишущих инструментов нет в списке — модель не может их вызвать.
- Секреты не попадают в конфиг ИИ-клиента: профиль и cookie лежат в `~/.config/rxmcp` с правами `0600`.
- Тексты из RX отдаются модели с пометкой, что это данные, а не инструкции.
- В логи сервера не пишутся ни cookie, ни токены, ни пароли.
- HTTP-режим слушает только то, что вы указали, и требует общий секрет в заголовке `Authorization`.
## Сборка из исходников
```sh
go build -o rxmcp . # нужен Go 1.27+
hack/build.sh v0.3.0 # архивы под все платформы в dist/
go test ./...
```
## Лицензия
Apache-2.0. Directum RX — продукт Directum; проект с вендором не связан, торговые знаки принадлежат правообладателям.
TDQS
Scored across 35 tools
Tools are largely distinct, with explicit cross-references helping agents choose (e.g. rx_get_task vs rx_get_assignment, rx_find_documents vs rx_get_document_text). A few subtle pairs—task vs assignment, ticket vs board, projects vs project plans—could still be confused, but descriptions clarify boundaries. Score 4.
All tool names use the rx_ prefix and snake_case, with no mixed camelCase or random styles. However, the verb pattern is not fully uniform: some tools are noun-only (rx_ticket, rx_board, rx_project) while others use find/get/list/create/update. Minor deviation only. Score 4.
35 tools is heavy for a single server and exceeds the typical 3–15 range. Given Directum RX spans many subsystems (documents, tasks, projects, agile, help, knowledge base, generic entity access), each tool has a plausible niche, but several could be consolidated. Borderline but largely justified. Score 3.
The surface covers core read/write workflows across tickets, tasks, documents, projects, agile boards, help, and knowledge base. Gaps exist—no document creation/update, no task field editing beyond assignments, no column deletion, no KB/article editing—but agents can often work around these via rx_call_action or generic rx_query. Score 4.