Skip to main content
Glama
sergeyfedyakov

rsv-data-router

rsv-data-router

MCP-роутер для RSVData: одна точка входа ИИ-агента к данным нескольких баз 1С.

Расширение RSVData публикует в каждой базе 1С HTTP-сервис MCP (чтение данных и структура метаданных — query, get_structure, eventlog и др.). Роутер стоит между ИИ-клиентом (ZCode, Claude Code, Cursor, …) и этими базами:

  • в клиенте настраивается одна запись вместо по записи на базу;

  • мапа «алиас → база» хранится в targets.json и управляется прямо из диалога (register_target / unregister_target / list_targets);

  • каждый инструмент данных получает параметры base (алиас цели) и cwd (рабочий каталог агента): без base база определяется из воркспейса EDT, где лежит cwd, иначе берётся единственная зарегистрированная цель;

  • логин/пароль не передаются через чат: ключ хранится в keyring ОС (Windows Credential Manager / Secret Service) и подхватывается на лету;

  • установка/обновление/удаление расширения на базах — фоновыми цепочками (точка /update → EDT → конфигуратор) прямо из диалога;

  • журнал всех вызовов — router.log (инструмент, цель, статус, длительность).

ИИ-клиент (одна запись: rsvdata → http://127.0.0.1:8780/mcp)
  └─ роутер (FastMCP: stateless HTTP + stdio)
       ├─ 9 инструментов данных — форвард в выбранную базу (+ base/cwd)
       ├─ 7 служебных — register_target / unregister_target / list_targets /
       │                update_targets / job_status / get_rsvdata / help_router
       └─ targets.json: алиас → {url, auth, edt?, platform?, connection?, comment}

Требования и установка

  • Python 3.10+ (разработка и тесты — на 3.13, Windows).

  • Зависимости: FastMCP (ставит uvicorn/starlette/pydantic/httpx), platformdirs (пользовательские каталоги конфигурации/журнала) и keyring (хранилище ключей: Windows Credential Manager / Secret Service).

python -m venv .venv
.venv\Scripts\pip install -e .

Готовый бинарник без Python — собирается по тегу v*, см. «Сборка и релиз» в docs/development.md.

Запуск

run.bat                                   :: Windows, http://127.0.0.1:8780/mcp
./run.sh                                  :: Linux/macOS/Git Bash
rsv-data-router --help                    :: все опции (или: python -m rsv_data_router)

run.bat и run.sh передают --rsvdatabinary <каталог>\bin\RSVData.cfe, только если файл существует: положите туда бинарник расширения (репозиторий и релизы проекта RSVData), и get_rsvdata + GET /bin/rsvdata.cfe заработают сразу. Сам .cfe в составе этого репозитория не распространяется; что доступно без бинарника, а что нет — таблица в docs/tools-router.md.

Опция

Назначение

--transport http|stdio

транспорт (по умолчанию http; stdio — локальные эксперименты)

--host, --port

адрес/порт http (по умолчанию 127.0.0.1:8780)

--network

слушать во всей сети (0.0.0.0); обязателен --token

--token СЕКРЕТ

клиенты обязаны передавать заголовок X-Router-Token

--home КАТАЛОГ

рантайм: и targets.json, и router.log в одном каталоге; по умолчанию — targets.json в каталоге конфигурации пользователя (%LOCALAPPDATA%\rsv-data-router в Windows, ~/.config/rsv-data-router в Linux), журнал — в каталоге логов; env RSV_DATA_ROUTER_HOME

--rsvdatabinary ПУТЬ

бинарник расширения RSVData (.cfe): инструмент get_rsvdata отдаёт его агентам, http-транспорт раздаёт по GET /bin/rsvdata.cfe

--rsvmcp URL

адрес MCP:RSV в EDT (http://127.0.0.1:8770/mcp) — через него register_target(install=true) ставит расширение, пока открыт проект этой базы; пустая строка — отключить вариант EDT. Если запущено несколько EDT, проект цели ищется и в соседних экземплярах (otherEdtInstances), вызов адресуется им параметром edtWorkspace

env-переменные (обычно не нужны; так тесты подменяют источники): RSV_DATA_ROUTER_HOME, RSV_DATA_ROUTER_IBASES (свой ibases.v8i), RSV_DATA_ROUTER_EDT_PROJECTS (свой реестр воркспейсов 1cedtstart/projects.json), RSV_DATA_ROUTER_1CV8_ROOTS (свои корни установок 1cv8, через ; на Windows).

Пример с доступом из сети:

rsv-data-router --network --token ДЛИННЫЙ-СЕКРЕТ

Подключение ИИ-клиента

Блок для ZCode / Claude Code (mcpServers):

{
  "mcpServers": {
    "rsvdata": {
      "type": "http",
      "url": "http://127.0.0.1:8780/mcp"
    }
  }
}

При запуске с --network добавьте заголовок:

"headers": { "X-Router-Token": "ДЛИННЫЙ-СЕКРЕТ" }

Быстрый старт: весь сценарий через агента

Роутер сделан для агентского режима, поэтому и установка описывается обычными словами — шаги ниже достаточно проговорить агенту.

  1. Установить и запустить. «Установи и запусти программу из репозитория sergeyfedyakov/rsv-data-router» — агент склонирует репозиторий, поставит пакет (pip install -e .) и запустит роутер (см. «Требования и установка» и «Запуск» выше).

  2. Подключить MCP-сервер. «Подключи MCP-сервер rsvdata в текущем воркспейсе по инструкции» — блок mcpServers из раздела «Подключение ИИ-клиента» выше; после правки конфига пересоздайте MCP-сессию.

  3. Добавить базу и поставить расширение. «Добавь базу <имя> в роутер и установи расширение» — предполагается запущенная EDT с открытым проектом базы: работая в каталоге воркспейса, агент сам зарегистрирует цель по cwd (для этого варианта параметры можно не указывать вовсе — cwd подставляется из текущего каталога агента) и запустит установку расширения (install=true); прогресс — job_status.

Ключ базы, если она требует авторизации, агент попросит и сохранит в keyring командой set-secret — в чат он не попадёт. Подробное описание всех команд — в docs/tools-router.md.

Документация

  • docs/tools-router.md — служебные команды роутера: регистрация целей, установка/удаление расширения, поведение без бинарника;

  • docs/tools-rsvdata.md — инструменты данных RSVData: состав и маршрутизация base/cwd (подробная справка — в репо RSVData);

  • docs/development.md — окружение, тесты, сборка (wheel/exe, CI), формат targets.json.

Лицензия

MIT — LICENSE. Расширение RSVData публикуется отдельным проектом (mcp-rsv-data, тоже MIT).

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sergeyfedyakov/rsv-data-router'

If you have feedback or need assistance with the MCP directory API, please join our Discord server