Skip to main content
Glama
README.md
# 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

A4/5.0

Scored across 35 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count3/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues