1C MCP Proxy
Click on "Install 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., "@1C MCP Proxyshow me all open tasks in the project 'Infrastructure'"
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.
MCP-прокси сервер для «Управление IT-отделом 8»
Что это
Прокси-сервер между MCP-клиентами (Claude Desktop, Cursor) и 1С:Предприятие. Транслирует MCP-протокол в JSON-RPC вызовы к HTTP-сервису 1С.
Предназначен для конфигурации «Управление IT-отделом 8» — встроенный в неё MCP-сервис предоставляет AI-агентам инструменты для работы с задачами, проектами, базой знаний, файлами и лентой уведомлений.
Возможности:
Два транспорта: stdio (для нативных клиентов) и Streamable HTTP (для веб)
Проксирование всех MCP-примитивов: Tools, Resources, Prompts
Опциональная OAuth2 авторизация с per-user креденшилами
Related MCP server: 1C Buddy
Быстрый старт
Требования
Node.js 22.19+
1С:Предприятие 8.3.24+ с опубликованным HTTP-сервисом
Установка
# Установка зависимостей
npm install
# Сборка
npm run buildВыбор режима работы
Stdio режим
Для локальных MCP-клиентов (Claude Desktop, Cursor).
Настройки указываются в конфигурации клиента через переменные окружения.
Минимальная конфигурация клиента:
{
"mcpServers": {
"uit": {
"command": "node",
"args": ["dist/index.js"],
"cwd": "/path/to/mcp",
"env": {
"MCP_ONEC_URL": "http://localhost/base",
"MCP_ONEC_USERNAME": "admin",
"MCP_ONEC_PASSWORD": "password"
}
}
}
}HTTP режим
Для веб-приложений и множественных клиентов.
Настройки указываются в файле .env в корне проекта или через переменные окружения:
# Скопируйте пример
cp .env.example .envМинимальный .env:
MCP_ONEC_URL=http://localhost/base
MCP_ONEC_USERNAME=admin
MCP_ONEC_PASSWORD=passwordЗапуск:
node dist/index.js http --port 8000Минимальная конфигурация клиента если запуск через Docker:
{
"mcpServers": {
"uit": {
"type": "http",
"url": "http://localhost:8000/mcp"
}
}
}Docker
Запуск в контейнере для изоляции и упрощения развертывания.
Быстрый старт:
# 1. Скопировать конфигурацию
cp .env.docker.example .env
# 2. Отредактировать .env (обязательно: MCP_ONEC_URL, MCP_ONEC_USERNAME, MCP_ONEC_PASSWORD)
# 3. Запустить через docker-compose
docker-compose build --no-cache
docker-compose up -d
# Проверка
curl http://localhost:8000/healthИли напрямую через Docker:
# Сборка образа
docker build -t 1c-mcp-proxy .
# Запуск с переменными окружения
docker run -d \
-p 8000:8000 \
-e MCP_ONEC_URL=http://host.docker.internal/base \
-e MCP_ONEC_USERNAME=admin \
-e MCP_ONEC_PASSWORD=password \
--name mcp-proxy \
1c-mcp-proxyВажно про сеть:
Если 1С на том же хосте: используйте
host.docker.internal(Mac/Windows) или IP хоста172.17.0.1(Linux) вместоlocalhostЕсли 1С на другом сервере: указывайте его реальный адрес как обычно
Логи:
docker-compose logs -fОстановка:
docker-compose downРежимы работы
Stdio режим
Общение через stdin/stdout
Используется локальными MCP-клиентами
Логи идут в stderr
OAuth2 не поддерживается (при
MCP_AUTH_MODE=oauth2запуск завершится ошибкой)
HTTP режим
Endpoints:
/mcp- Streamable HTTP транспорт/health- проверка состояния/info- информация о сервере/- список endpoints
Проверка работы:
curl http://localhost:8000/healthРежимы авторизации
Без OAuth2 (по умолчанию)
MCP_AUTH_MODE=none # по умолчаниюПоведение:
Все обращения к 1С выполняются от одного пользователя
Креденшилы задаются в конфигурации:
MCP_ONEC_USERNAMEиMCP_ONEC_PASSWORDИспользуется Basic Auth для всех запросов к 1С
С OAuth2
MCP_AUTH_MODE=oauth2
MCP_PUBLIC_URL=http://your-server:8000Поведение:
OAuth2 доступен только в HTTP режиме (в stdio запуск завершится ошибкой)
Каждый клиент авторизуется своими креденшилами 1С
Креденшилы передаются через OAuth2 flow
MCP_ONEC_USERNAMEиMCP_ONEC_PASSWORDне используются (если заданы, будут проигнорированы)
Поддерживаемые OAuth2 flows:
Password Grant - передача username/password напрямую
Authorization Code + PKCE - авторизация через HTML-форму
Dynamic Client Registration - автоматическая регистрация клиентов
Дополнительные endpoints (для OAuth2):
/.well-known/oauth-protected-resource- Protected Resource Metadata/.well-known/oauth-authorization-server- Authorization Server Metadata/register- регистрация клиентов/authorize- HTML форма авторизации/token- получение/обновление токенов
Конфигурация
Все настройки задаются через переменные окружения с префиксом MCP_ или через CLI аргументы.
Подключение к 1С
Переменная | Описание | По умолчанию | Обязательная |
| URL базы 1С | - | Всегда |
| Имя пользователя | - | При |
| Пароль | - | При |
| Корень HTTP-сервиса |
| Нет |
HTTP-сервер
Переменная | Описание | По умолчанию | Обязательная |
| Хост для прослушивания |
| Нет |
| Порт |
| Нет |
| CORS origins (JSON array) |
| Нет |
MCP
Переменная | Описание | По умолчанию | Обязательная |
| Имя сервера |
| Нет |
| Версия |
| Нет |
| Уровень логирования |
| Нет |
Допустимые уровни: DEBUG, INFO, WARNING, ERROR
OAuth2
Переменная | Описание | По умолчанию | Обязательная |
| Режим: |
| Нет |
| Публичный URL прокси | (определяется из запроса) | При |
| TTL authorization code (сек) |
| Нет |
| TTL access token (сек) |
| Нет |
| TTL refresh token (сек) |
| Нет |
| Путь к JSON-снапшоту токенов | (только в памяти) | Нет |
| Окно идемпотентности refresh-rotation (мс) |
| Нет |
Персистентность токенов. При указанном MCP_OAUTH2_STORE_PATH access- и
refresh-токены сериализуются в JSON-файл (атомарная запись через временный
файл) каждые 30 секунд и при graceful shutdown. После рестарта прокси
загружает снапшот, отбрасывая истекшие записи. Это устраняет повторные
логины пользователей при перезапуске контейнера / краше процесса.
⚠️ Безопасность снапшота. Файл содержит логины и пароли пользователей 1С в открытом виде (Basic Auth требуется для каждого запроса к 1С). Файл создаётся с правами
0o600(только владелец) на POSIX-системах; на Windows mode игнорируется — обеспечьте ограниченные NTFS ACL на каталог. Не храните снапшот в общем томе, не коммитьте в репозиторий (./dataуже игнорируется через.gitignore).
Grace-window для refresh-rotation. При повторном использовании одного и
того же refresh_token в течение MCP_OAUTH2_REFRESH_GRACE_MS сервер
возвращает ранее выпущенную пару токенов (идемпотентно) — защита от race
condition при параллельных refresh-запросах клиента. По истечении окна
повторное использование считается атакой и приводит к отзыву всей цепочки
токенов этой сессии (RFC 6819 §5.2.2.3).
CLI аргументы
Переопределяют переменные окружения:
node dist/index.js http \
--onec-url http://server/base \
--onec-username admin \
--onec-password secret \
--auth-mode oauth2 \
--public-url http://proxy:8000 \
--port 8000 \
--log-level DEBUGПолный список аргументов:
node dist/index.js --helpАрхитектура
Общая схема
+------------------+
| MCP Client | (Claude Desktop, Cursor)
| (stdio/HTTP) |
+--------+---------+
| MCP Protocol
v
+--------------------+
| Node.js Proxy |
| - mcp-proxy | Проксирование MCP -> JSON-RPC
| - http-server | Express + Streamable HTTP + OAuth2
| - stdio-server | Stdio транспорт
| - onec-client | HTTP-клиент для 1С
+--------+-----------+
| JSON-RPC over HTTP
| Basic Auth (username:password)
v
+--------------------+
| 1C HTTP Service | /hs/mcp/rpc
| МСP-подсистема | 39 tools, resources, prompts
+--------------------+Модули
index.ts- точка входаmain.ts- CLI парсинг и запускconfig.ts- конфигурация через Zodmcp-proxy.ts- ядро MCP-сервера (проксирование)onec-client.ts- HTTP-клиент для 1Сhttp-server.ts- Express + Streamable HTTP + OAuth2stdio-server.ts- stdio транспортauth/oauth2.ts- OAuth2 авторизация (Store + Service)logger.ts- логирование в stderr
Проксирование MCP-примитивов
Все MCP-запросы транслируются в JSON-RPC к 1С:
Tools (инструменты):
tools/list-> список доступных инструментовtools/call-> вызов инструмента с аргументами
Resources (ресурсы):
resources/list-> список доступных ресурсовresources/read-> чтение содержимого ресурса
Prompts (промпты):
prompts/list-> список доступных промптовprompts/get-> получение промпта с параметрами
Интеграция с 1С
Прокси ожидает HTTP-сервис в 1С по адресу:
{MCP_ONEC_URL}/hs/{MCP_ONEC_SERVICE_ROOT}/Например: http://localhost/base/hs/mcp/
Endpoints 1С
GET /healthПроверка доступности сервиса
Ответ:
{"status": "ok"}Используется для валидации креденшилов в OAuth2
POST /rpcJSON-RPC endpoint для всех MCP-операций
Content-Type:
application/jsonBasic Auth:
username:password
Формат JSON-RPC запроса
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}Формат JSON-RPC ответа
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"tools": [
{
"name": "get_metadata",
"description": "Получить метаданные объекта",
"inputSchema": {}
}
]
}
}Разработка
# Установка зависимостей
npm install
# Сборка
npm run build
# Сборка в watch-режиме
npm run dev
# Запуск stdio
npm start
# Запуск HTTP
npm run start:httpMIT License
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/Diversus23/itmcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server