1C AI MCP
Integrates IDEs with the 1C:Напарник API, providing code analysis tools and documentation search for 1C.
README
1C AI MCP - MCP-сервер для 1С:Напарник
MCP-сервер (Model Context Protocol) для интеграции IDE с API 1С:Напарник. Построен на FastMCP (Python), упакован в Docker. Работает с Cursor, Claude Code и любыми MCP-совместимыми клиентами.
12 инструментов: анализ кода (проверка, ревью, рефакторинг) и поиск в документации (ИТС, платформа, конфигурации).
Основан на идее comol/1c-code-checker с исправлениями API-формата (ошибки 422), заимствованными из SteelMorgan/spring-mcp-1c-copilot.
Предварительные требования
- Docker (или Docker Desktop)
- Токен 1С:Напарник - получить на code.1c.ai (требуется подписка ИТС)
Быстрый старт
Вариант A: Готовый образ из Docker Hub (рекомендуется)
docker run -d --name 1c-ai-mcp -p 8007:8007 \
-e ONEC_AI_TOKEN="ваш-токен" \
desko77/1c-ai-mcp:latest
Или через Docker Compose - создайте файл docker-compose.yml:
services:
1c-ai-mcp:
image: desko77/1c-ai-mcp:latest
container_name: 1c-ai-mcp
ports:
- "8007:8007"
environment:
ONEC_AI_TOKEN: "${ONEC_AI_TOKEN}"
restart: always
# Создать .env с токеном (не попадает в git)
echo 'ONEC_AI_TOKEN=ваш-токен' > .env
# Запустить
docker compose up -d
Вариант B: Сборка из исходников
git clone https://github.com/Desko77/1c-ai-mcp.git
cd 1c-ai-mcp
# Создать .env с токеном
echo 'ONEC_AI_TOKEN=ваш-токен' > .env
# Собрать и запустить
docker compose up -d --build
Проверка работоспособности
# Должен вернуть HTTP 200
curl http://localhost:8007/mcp
Подключение к IDE
Cursor
Добавьте в ~/.cursor/mcp.json:
{
"mcpServers": {
"1c-naparnik": {
"url": "http://localhost:8007/mcp"
}
}
}
Claude Code
Добавьте в ~/.claude/settings.json:
{
"mcpServers": {
"1c-naparnik": {
"url": "http://localhost:8007/mcp"
}
}
}
Другие MCP-клиенты
Endpoint: http://localhost:8007/mcp
Транспорт: Streamable HTTP (по умолчанию) или SSE (USESSE=true).
Инструменты
Анализ кода
check_1c_code
Проверка кода 1С: синтаксис, логика, производительность. В direct mode синтаксис проверяется через upstream syntax-checker.
| Параметр | Тип | Описание |
|---|---|---|
code |
string | Код 1С для проверки |
check_type |
string | syntax (по умолчанию), logic, performance |
ask_1c_ai
Произвольный вопрос к 1С:Напарник. Сохраняет контекст диалога между вызовами.
| Параметр | Тип | Описание |
|---|---|---|
question |
string | Вопрос |
create_new_session |
bool | Новая сессия (по умолчанию false - переиспользует предыдущую) |
review_1c_code
Code review: стиль, стандарты ИТС, именование, структура, читаемость. Не проверяет синтаксис.
| Параметр | Тип | Описание |
|---|---|---|
code |
string | Код 1С для ревью |
rewrite_1c_code
ИИ предлагает свою улучшенную версию кода с объяснением изменений.
| Параметр | Тип | Описание |
|---|---|---|
code |
string | Код 1С для переписывания |
goal |
string | Направление: optimize, readability, error handling (опционально) |
modify_1c_code
Модификация кода по явной инструкции. Если код не указан - генерирует новый.
| Параметр | Тип | Описание |
|---|---|---|
instruction |
string | Описание требуемых изменений |
code |
string | Исходный код (опционально) |
explain_1c_syntax
Объяснение конкретного элемента синтаксиса 1С.
| Параметр | Тип | Описание |
|---|---|---|
syntax_element |
string | Элемент синтаксиса |
context |
string | Контекст использования (опционально) |
Документация и справка
its_help
Поиск по базе знаний ИТС (стандарты, методики, статьи). Возвращает ID документов для fetch_its.
| Параметр | Тип | Описание |
|---|---|---|
query |
string | Поисковый запрос |
fetch_its
Чтение документа ИТС по идентификатору. Используется после its_help.
| Параметр | Тип | Описание |
|---|---|---|
id |
string | ID документа (root, v8std, its-...-hdoc) |
search_1c_documentation
Поиск в документации платформы 1С:Предприятие для конкретной версии.
| Параметр | Тип | Описание |
|---|---|---|
query |
string | Поисковый запрос |
version |
string | Версия (по умолчанию v8.5.1) |
onec_help
Поиск в документации платформы (последняя версия). Как search_1c_documentation, но без указания версии.
| Параметр | Тип | Описание |
|---|---|---|
query |
string | Поисковый запрос |
diff_1c_documentation_versions
Сравнение документации платформы между двумя версиями.
| Параметр | Тип | Описание |
|---|---|---|
version_a |
string | Более ранняя версия (например, v8.3.25) |
version_b |
string | Более поздняя версия (например, v8.5.1) |
query |
string | Предметная область (опционально) |
config_help
Поиск документации по прикладным конфигурациям (ERP, Бухгалтерия, ЗУП, УТ и др.).
| Параметр | Тип | Описание |
|---|---|---|
query |
string | Поисковый запрос |
config_name |
string | Название конфигурации (опционально, берется из ONEC_CONFIG_NAME) |
Конфигурация
Все параметры передаются через переменные окружения.
| Переменная | Обязательна | По умолчанию | Описание |
|---|---|---|---|
ONEC_AI_TOKEN |
Да* | - | Токен API 1С:Напарник |
ONEC_AI_TOKEN_FILE |
Нет | - | Путь к файлу с токеном (Docker Secrets) |
ONEC_AI_BASE_URL |
Нет | https://code.1c.ai |
Базовый URL API |
ONEC_AI_SKILL_NAME |
Нет | raw |
Skill для дискуссий (raw, custom) |
ONEC_AI_AUTH_FORMAT |
Нет | plain |
Формат Authorization: plain или bearer |
ONEC_AI_TIMEOUT |
Нет | 120 |
Таймаут HTTP-запросов (сек) |
ONEC_CONFIG_NAME |
Нет | - | Конфигурация для config_help (например, ERP, ЗУП) |
MCP_TOOL_CALL_MODE |
Нет | standard |
Режим: standard (промпты) / direct (прямой вызов upstream) |
ONEC_AI_INPUT_MAX_LENGTH |
Нет | 100000 |
Макс. длина входных данных (символов) |
HTTP_PORT |
Нет | 8007 |
Порт MCP-сервера |
USESSE |
Нет | false |
Транспорт: true=SSE, false=streamable-http |
MAX_ACTIVE_SESSIONS |
Нет | 10 |
Лимит одновременных сессий |
SESSION_TTL |
Нет | 3600 |
TTL сессии (сек) |
LOG_LEVEL |
Нет | INFO |
Уровень логирования (DEBUG, INFO, WARNING) |
* Обязателен ONEC_AI_TOKEN или ONEC_AI_TOKEN_FILE.
Docker Secrets
Для production-окружений токен можно передать через файл:
services:
1c-ai-mcp:
image: desko77/1c-ai-mcp:latest
environment:
ONEC_AI_TOKEN_FILE: /run/secrets/onec_token
secrets:
- onec_token
secrets:
onec_token:
file: ./onec_token.txt
Direct Mode
При MCP_TOOL_CALL_MODE=direct документационные инструменты и check_1c_code (syntax) вызывают upstream-инструменты 1С:Напарник напрямую по имени, вместо текстовых промптов. Это дает более точные результаты.
Upstream-инструменты:
mcp__knowledge-hub__Search_ITS- дляits_helpmcp__knowledge-hub__Fetch_ITS- дляfetch_itsmcp__knowledge-hub__Search_Documentation- дляsearch_1c_documentation,onec_helpmcp__knowledge-hub__Diff_Documentation_Versions- дляdiff_1c_documentation_versionsmcp__syntax-checker__validate- дляcheck_1c_code(syntax)
При сбое direct-вызова автоматический fallback на промпт-режим. По умолчанию standard для обратной совместимости.
Архитектура
MCP-клиент (Cursor / Claude Code)
-> FastMCP HTTP endpoint (:8007/mcp)
-> mcp_server.py (обработчики инструментов)
-> OneCApiClient (HTTP-клиент)
-> code.1c.ai API (SSE-стриминг)
-> парсинг ответа -> возврат клиенту
Два режима работы
- Standard mode (по умолчанию): инструменты формируют текстовые промпты и отправляют в API. Документационные инструменты используют tool chain - модель сама решает какой серверный инструмент вызвать.
- Direct mode (
MCP_TOOL_CALL_MODE=direct): инструменты явно запрашивают конкретный upstream-инструмент по имени, матчат ответ и подтверждают вызов. При сбое - автоматический fallback на standard mode.
SSE-парсер
Поддерживает три формата ответа API:
| Формат | Структура | Тип |
|---|---|---|
| Legacy | {"content_delta": "текст"} |
Инкрементальный |
| OpenAI-like | {"choices": [{"delta": {"content": "текст"}}]} |
Инкрементальный |
| Completed | {"content": {"text": "полный текст"}} |
Финальный |
Дополнительно:
- Автоматическое удаление
<thinking>/<think>блоков из ответов - Unicode-нормализация и очистка управляющих символов
- Fallback при получении
tool_calls- повтор запроса сskill_name="raw" - Обрезка входных данных по
ONEC_AI_INPUT_MAX_LENGTH
Разработка
Локальный запуск без Docker
pip install -r requirements.txt
export ONEC_AI_TOKEN="ваш-токен"
python main.py
Структура проекта
main.py # Точка входа
src/
mcp_server.py # MCP-инструменты (@mcp.tool)
onec_api_client.py # HTTP-клиент к API 1С:Напарник
Dockerfile # Dockerfile
docker-compose.yml # Compose для сборки из исходников
tests/ # Тестовые скрипты
.github/workflows/
docker-publish.yml # CI: сборка и публикация в Docker Hub
Благодарности
- comol/1c-code-checker - оригинальная идея (репозиторий закрыт)
- SteelMorgan/spring-mcp-1c-copilot - правильные алгоритмы API
- FastMCP - фреймворк MCP-серверов
Лицензия
MIT - см. LICENSE
推荐服务器
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 模型以安全和受控的方式获取实时的网络信息。