1C via COM MCP Server
Enables querying and interacting with 1C:Enterprise databases via COM connection without modifying the database.
README
MCP-сервер 1С через COM (V83.COMConnector)
Внешний MCP-сервер на Python, который подключается к информационной базе 1С через
COM-соединение (V83.COMConnector) и выполняет запросы на встроенном языке запросов.
В отличие от подхода с расширением + HTTP-сервисами, здесь ничего не нужно ставить
в саму базу — сервер сам открывает внешнее соединение.
⚠️ Работает только на Windows, где установлена платформа 1С:Предприятие.
Возможности (инструменты MCP)
| Инструмент | Назначение |
|---|---|
execute_query |
Выполнить запрос на языке запросов 1С, вернуть колонки и строки |
list_metadata |
Список объектов метаданных (справочники, документы, регистры, …) |
describe_object |
Реквизиты, табличные части и типы объекта по полному имени |
execute_script |
Выполнить произвольный код 1С / вычислить выражение (нужна обработка-исполнитель) |
connection_info |
Проверить соединение, узнать версию конфигурации и платформы |
Требования
- Windows + установленная 1С:Предприятие 8.3
- Python 3.10+
- Совпадение разрядности: 64-битный Python ↔ 64-битный
comcntr.dll(32-битный ↔ 32-битный). Большинство современных установок — 64 бита.
Установка
cd "D:\Documents\разработка_1С\mcp-1c-com"
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
Регистрация COM-коннектора
Один раз, от имени администратора, зарегистрируйте comcntr.dll нужной версии:
regsvr32 "C:\Program Files\1cv8\8.3.25.1257\bin\comcntr.dll"
(путь к версии платформы — свой; берётся последняя установленная)
Конфигурация
Через переменные окружения. Скопируйте .env.example и задайте значения, либо
выставьте переменные прямо в команде запуска / в .mcp.json (см. ниже).
Файловая база:
ONEC_FILE=C:\bases\acc
ONEC_USR=Администратор
ONEC_PWD=пароль
Серверная база:
ONEC_SRVR=server-1c
ONEC_REF=accounting
ONEC_USR=Администратор
ONEC_PWD=пароль
Готовая строка соединения целиком (имеет приоритет):
ONEC_CONNECTION_STRING=File="C:\bases\acc";Usr="Администратор";Pwd="pass"
Запуск вручную (проверка)
$env:ONEC_FILE = "C:\bases\acc"
$env:ONEC_USR = "Администратор"
python server.py
Сервер работает по stdio-транспорту MCP. Для интерактивной отладки удобен
mcp dev server.py (требует pip install "mcp[cli]").
Подключение к Claude Code
Добавьте сервер в .mcp.json проекта (пример — в mcp.json.example):
{
"mcpServers": {
"1c-com": {
"command": "D:\\Documents\\разработка_1С\\mcp-1c-com\\.venv\\Scripts\\python.exe",
"args": ["D:\\Documents\\разработка_1С\\mcp-1c-com\\server.py"],
"env": {
"ONEC_FILE": "C:\\bases\\acc",
"ONEC_USR": "Администратор",
"ONEC_PWD": ""
}
}
}
}
Либо командой:
claude mcp add 1c-com -- "<путь>\.venv\Scripts\python.exe" "<путь>\server.py"
Примеры использования
Запрос с параметром-датой:
{
"query_text": "ВЫБРАТЬ Ссылка, ПРЕДСТАВЛЕНИЕ(Контрагент) КАК Контрагент, СуммаДокумента ИЗ Документ.РеализацияТоваровУслуг КАК Р ГДЕ Р.Дата >= &Дата УПОРЯДОЧИТЬ ПО Р.Дата",
"params": { "Дата": "2026-01-01" },
"limit": 100
}
Список справочников:
{ "kind": "catalogs" }
Описание объекта:
{ "full_name": "Справочник.Контрагенты" }
Вернёт реквизиты с типами (ссылочные — полным именем, напр. Справочник.ДоговорыКонтрагентов,
Перечисление.ЮрФизЛицо; примитивные — Строка(12), Число(3)), табличные части и их реквизиты.
Выполнение кода / вычисление выражения (требует обработку-исполнитель, см. ниже):
{ "return_expression": "Справочники.Валюты.НайтиПоКоду(\"980\").Наименование" }
{ "code": "Док = Документы.РеализацияТоваровУслуг.НайтиПоНомеру(\"000001\"); Результат = Док.СуммаДокумента;" }
execute_script: обработка-исполнитель и «Защита от опасных действий»
Внешнее COM-соединение не отдаёт операторы Выполнить/Вычислить (это конструкции
языка, а не методы глобального контекста). Поэтому execute_script исполняет код внутри
модуля внешней обработки executor\mcpИсполнитель.epf, где эти операторы доступны как
обычные операторы языка. Код может присвоить значение переменной Результат — оно будет
возвращено.
Сборка обработки-исполнителя (если её нет в executor\):
powershell.exe -NoProfile -File "<skills>\epf-build\scripts\epf-build.ps1" `
-InfoBasePath "C:\bases\acc" -UserName "Администратор" -Password "..." `
-SourceFile "executor\src\mcpИсполнитель.xml" -OutputFile "executor\mcpИсполнитель.epf"
Предупреждение безопасности. Поскольку модуль использует Выполнить/Вычислить,
платформа при загрузке обработки показывает «Предупреждение безопасности» (через COM это
превращается в ошибку). Чтобы execute_script заработал, для пользователя ИБ нужно
отключить «Защиту от опасных действий»:
- Конфигуратор → Администрирование → Пользователи →
<пользователь>→ снять флаг «Защита от опасных действий», либо - один раз открыть
executor\mcpИсполнитель.epfв толстом клиенте 1С и подтвердить с галкой «Запомнить выбор».
В старых режимах совместимости (напр. УТП 1.2) свойство
ЗащитаОтОпасныхДействийпользователя ИБ через COM не записывается — отключайте флаг в Конфигураторе.
Остальные инструменты (execute_query, list_metadata, describe_object,
connection_info) работают без этой настройки.
Особенности и ограничения
- Ссылки возвращаются как UUID. Чтобы получить читаемое представление,
добавляйте в запрос
ПРЕДСТАВЛЕНИЕ(Поле) КАК ПолеПредставление. - «Пустая дата» 1С (
0001-01-01) отдаётся какnull. - Весь COM-доступ идёт через один выделенный поток (COM-объекты 1С привязаны к апартаменту), поэтому запросы выполняются последовательно.
- Соединение ленивое и переиспользуется между вызовами.
- Параметры запроса поддерживают примитивы (число, строка, булево) и даты (ISO-строка). Передача ссылок параметром не поддерживается — фильтруйте по реквизитам/коду/наименованию внутри запроса.
- В
describe_objectссылочные типы иСтрока(N)/Число(d,f)определяются точно. В старых режимах совместимости (УТП 1.2 и т.п.) глобальный конструкторТип()через COM недоступен, поэтомуДата,Булевои безразмерные строки показываются какпримитив. execute_scriptтребует обработку-исполнитель и отключённую «Защиту от опасных действий» (см. отдельный раздел выше).
Диагностика проблем
AttributeError: V83.COMConnector.Connect / Библиотека не зарегистрирована
(TYPE_E_LIBNOTREGISTERED).
Сам COM-класс зарегистрирован, но не зарегистрирована библиотека типов коннектора.
1С-коннектор — dual-интерфейс и резолвит имена методов (Connect) через typelib,
поэтому без неё позднее связывание не находит ни одного метода. Лечится повторной
регистрацией comcntr.dll от имени администратора (regsvr32 ставит и класс, и
typelib):
Start-Process regsvr32 -ArgumentList '/s','"C:\Program Files\1cv8\<версия>\bin\comcntr.dll"' -Verb RunAs -Wait
Проверка, что typelib появилась: ключ
HKCR\TypeLib\{98AC3B5B-5323-418F-8F07-E32F231D2393} должен существовать.
Класс не зарегистрирован (0x80040154) — не зарегистрирован сам класс
(regsvr32 comcntr.dll) либо не совпадает разрядность Python и dll.
Несколько версий платформы установлено. V83.COMConnector указывает только на одну
версию (последнюю зарегистрированную). Чтобы привязать к конкретной — выполните
regsvr32 именно её comcntr.dll.
Структура
mcp-1c-com/
├── server.py # MCP-сервер (FastMCP, stdio), определение инструментов
├── onec_com.py # COM-подключение к 1С, запросы, описание объектов, исполнение кода
├── config.py # сборка строки соединения из переменных окружения
├── executor/
│ ├── mcpИсполнитель.epf # собранная обработка-исполнитель для execute_script
│ └── src/ # её XML-исходники (модуль с ВыполнитьКод/ВычислитьВыражение)
├── requirements.txt
├── .env.example
└── mcp.json.example
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。