onecscripting-mcp - локальный MCP-сервер, который позволяет ИИ-агенту
выполнять в выбранной базе почти любой серверный код 1С через обычное
COM-подключение.
Агент может отправить в сервер кусок кода 1С текстом или путь к .bsl файлу
модуля с процедурами и функциями. Сервер подключится к нужной базе, выполнит код
в серверном контексте и вернет результат в нормальном JSON.
Без публикации базы. Без установки расширений. Без доработок конфигурации. Нужны только установленная платформа 1С, путь к базе и пользователь с паролем.
Когда ИИ-агент работает с проектом 1С, ему часто не хватает главного: проверить свои выводы прямо в базе. Посмотреть данные запросом. Вызвать типовую функцию общего модуля. Выполнить небольшой диагностический сценарий. Прогнать модуль, который сам вызывает другие процедуры и функции, и получить результат.
onecscripting-mcp закрывает этот разрыв. Агент не только читает код
конфигурации, но и может проверить гипотезу в живой тестовой базе:
- найти, почему реквизит не заполняется;
- понять, где ломается расчет;
- проверить, что реально возвращает типовая функция;
- выполнить запросы к данным;
- отладить фрагмент серверной логики;
- быстро написать и запустить проверочный
.bslмодуль; - помочь при разработке и доработке конфигурации.
Это особенно полезно при расследовании проблем: агент смотрит код, вызывает функции, выполняет запросы и постепенно доходит до места, где данные перестают заполняться или рассчитываются не так.
- Выполнять серверный код 1С, переданный текстом, через
execute_bsl. - Выполнять полноценные
.bslмодули с процедурами и функциями черезexecute_bsl_module. - Принимать путь к файлу модуля на диске, а не только текст кода.
- Запускать указанную главную функцию модуля и возвращать именно ее результат.
- Выполнять запросы 1С с параметрами через
execute_query. - Вызывать экспортные функции и процедуры общих модулей через
call_common_module. - Работать с менеджерами метаданных: справочники, документы, регистры, константы, перечисления и другие корни платформенного контекста.
- Передавать параметры в код и запросы, включая массивы, структуры, соответствия, таблицы значений, списки значений, даты и ссылки.
- Возвращать сложные типы 1С в JSON, пригодном для дальнейшей работы агента.
- Держать несколько профилей баз в одном конфиге.
- Работать с разными версиями платформы через отдельные рабочие процессы.
- Автоматически поднимать COM-соединение, переиспользовать его во время работы и закрывать рабочий процесс после простоя, чтобы в базе не висели лишние сеансы.
Размер блока для execute_bsl сервер специально не ограничивает. На практике
предел задают лимиты MCP-клиента, память, время разбора кода и таймаут
выполнения. Для большого кода удобнее использовать execute_bsl_module и
передавать путь к .bsl файлу.
Попросить агента проверить данные:
Посмотри, почему у этих документов не заполнился реквизит. Выполни запросы, проверь функции заполнения и покажи место, где значение теряется.
Попросить агента протестировать типовую функцию:
Вызови функцию общего модуля с такими параметрами и сравни результат с тем, что ожидает наш код.
Попросить агента запустить проверочный модуль:
Я положил сценарий в
D:\Projects\DemoProject\tests\check_prices.bsl. Выполни его в тестовой базе через профильDemoProject_testи верни результат главной функцииПроверить.
Попросить агента помочь при разработке:
Посмотри новый код расчета, подготовь модуль 1С для проверки нескольких случаев и выполни его в базе.
Сервер выполняет код через COM-соединение и серверный контекст 1С. Поэтому важные ограничения такие:
- не выполняется клиентский код;
- не поддерживаются транзакции;
- пока не реализована поддержка
Попытка/Исключение; - нельзя вызвать общий модуль, если у него отключен флаг
Внешнее соединение.
Остальное ведет себя как обычная работа через внешнее соединение 1С. Например, у пользователя должны быть права на нужные действия, а для прямого вызова метода общего модуля он должен быть доступен из внешнего соединения.
git clone https://github.com/Nikifforoff96/onecscripting-mcp.git
cd onecscripting-mcp
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -e .Проверьте запуск:
onecscripting-mcp --helpСкопируйте пример конфига:
copy onecscripting-mcp.example.json onecscripting-mcp.jsonУкажите свои базы, пользователей и путь к платформе. Реальный
onecscripting-mcp.json добавлен в .gitignore, его не нужно хранить в
репозитории.
Пример профиля:
{
"server": {
"host": "127.0.0.1",
"port": 8765,
"transport": "streamable-http",
"worker_mode": "process",
"worker_idle_timeout_sec": 300,
"auto_register_com": true,
"default_profile_id": "DemoProject_dev"
},
"profiles": {
"DemoProject_dev": {
"description": "База разработки для проекта DemoProject.",
"project_path": "D:\\Projects\\DemoProject_dev",
"server": "onec-app-server",
"ref": "demo-dev",
"user": "DemoUser",
"password_env": "ONEC_PASSWORD_DEMO_DEV",
"platform_bin": "C:\\Program Files\\1cv8\\8.3.27.1644\\bin"
}
}
}Пароль лучше передавать через переменную окружения:
$env:ONEC_PASSWORD_DEMO_DEV = "password"Имя профиля обычно делают равным имени каталога проекта. Например проект
D:\Projects\DemoProject_dev использует профиль DemoProject_dev.
$env:ONEC_MCP_CONFIG = "D:\path\onecscripting-mcp.json"
onecscripting-mcpПо умолчанию сервер слушает:
http://127.0.0.1:8765/mcp
list_profiles- показать настроенные профили баз без подключения к 1С и без раскрытия паролей.com_registration_status- проверить, какойcomcntr.dllзарегистрирован в Windows и какая версия нужна выбранному профилю.health_check- проверить профиль и COM-подключение.execute_query- выполнить запрос 1С с параметрами.execute_bsl- выполнить серверный код 1С, переданный текстом.execute_bsl_module- выполнить.bslмодуль с процедурами и функциями, переданный текстом или путем к файлу.call_common_module- вызвать экспортную функцию или процедуру общего модуля через COM.reset_connection- сбросить соединение выбранного профиля.
Подробное описание методов и параметров для ИИ-агента: MCP_AGENT_DESCRIPTION.md.
Подробности по JSON-контракту, поддерживаемому синтаксису и внутреннему механизму выполнения: README.mcp.md.
{
"profile": "DemoProject_dev",
"text": "ВЫБРАТЬ ПЕРВЫЕ 5 Ссылка, Код, Наименование ИЗ Справочник.Номенклатура",
"parameters": {}
}{
"profile": "DemoProject_dev",
"code": "Запрос = Новый Запрос(\"ВЫБРАТЬ ПЕРВЫЕ 1 Ссылка ИЗ Справочник.Номенклатура\"); Результат = Запрос.Выполнить().Выгрузить();"
}{
"profile": "DemoProject_test",
"source": "D:\\Projects\\DemoProject\\tests\\diagnostics.bsl",
"entry_point": "Проверить"
}Файл может содержать несколько процедур и функций. Сервер найдет главную функцию
по имени entry_point, выполнит ее, а она уже может вызывать остальные методы
модуля в нужном порядке.
Сервер работает с правами пользователя 1С, указанного в профиле. Если этому пользователю разрешена запись, агент тоже сможет менять данные в пределах этих прав. Для экспериментов лучше использовать тестовую базу и отдельного пользователя с понятными ролями.
list_profiles и ошибки не возвращают пароль. Для паролей рекомендуется
использовать password_env, а не хранить секреты прямо в JSON.
python -m unittest discover -s tests -p "test_mcp_*.py" -t . -v
python -m onecscripting_mcp.server --help
python -m build
python -m twine check dist/*