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 (требуется подписка ИТС)
docker run -d --name 1c-code-checker -p 8007:8007 \
-e ONEC_AI_TOKEN="ваш-токен" \
desko77/1c-code-checker:latestИли через Docker Compose - создайте файл docker-compose.yml:
services:
1c-code-checker:
image: desko77/1c-code-checker:latest
container_name: 1c-code-checker
ports:
- "8007:8007"
environment:
ONEC_AI_TOKEN: "${ONEC_AI_TOKEN}"
restart: always# Создать .env с токеном (не попадает в git)
echo 'ONEC_AI_TOKEN=ваш-токен' > .env
# Запустить
docker compose up -dgit clone https://github.com/Desko77/1c-code-checker.git
cd 1c-code-checker
# Создать .env с токеном
echo 'ONEC_AI_TOKEN=ваш-токен' > .env
# Собрать и запустить
docker compose up -d --build# Должен вернуть HTTP 200
curl http://localhost:8007/mcpДобавьте в ~/.cursor/mcp.json:
{
"mcpServers": {
"1c-code-checker": {
"url": "http://localhost:8007/mcp"
}
}
}Добавьте в ~/.claude/settings.json:
{
"mcpServers": {
"1c-code-checker": {
"url": "http://localhost:8007/mcp"
}
}
}Endpoint: http://localhost:8007/mcp
Транспорт: Streamable HTTP (по умолчанию) или SSE (USESSE=true).
Проверка кода 1С: синтаксис, логика, производительность. В direct mode синтаксис проверяется через upstream syntax-checker.
| Параметр | Тип | Описание |
|---|---|---|
code |
string | Код 1С для проверки |
check_type |
string | syntax (по умолчанию), logic, performance |
Произвольный вопрос к 1С:Напарник. Сохраняет контекст диалога между вызовами.
| Параметр | Тип | Описание |
|---|---|---|
question |
string | Вопрос |
create_new_session |
bool | Новая сессия (по умолчанию false - переиспользует предыдущую) |
Code review: стиль, стандарты ИТС, именование, структура, читаемость. Не проверяет синтаксис.
| Параметр | Тип | Описание |
|---|---|---|
code |
string | Код 1С для ревью |
ИИ предлагает свою улучшенную версию кода с объяснением изменений.
| Параметр | Тип | Описание |
|---|---|---|
code |
string | Код 1С для переписывания |
goal |
string | Направление: optimize, readability, error handling (опционально) |
Модификация кода по явной инструкции. Если код не указан - генерирует новый.
| Параметр | Тип | Описание |
|---|---|---|
instruction |
string | Описание требуемых изменений |
code |
string | Исходный код (опционально) |
Объяснение конкретного элемента синтаксиса 1С.
| Параметр | Тип | Описание |
|---|---|---|
syntax_element |
string | Элемент синтаксиса |
context |
string | Контекст использования (опционально) |
Поиск по базе знаний ИТС (стандарты, методики, статьи). Возвращает ID документов для fetch_its.
| Параметр | Тип | Описание |
|---|---|---|
query |
string | Поисковый запрос |
Чтение документа ИТС по идентификатору. Используется после its_help.
| Параметр | Тип | Описание |
|---|---|---|
id |
string | ID документа (root, v8std, its-...-hdoc) |
Поиск в документации платформы 1С:Предприятие для конкретной версии.
| Параметр | Тип | Описание |
|---|---|---|
query |
string | Поисковый запрос |
version |
string | Версия (по умолчанию v8.5.1) |
Поиск в документации платформы (последняя версия). Как search_1c_documentation, но без указания версии.
| Параметр | Тип | Описание |
|---|---|---|
query |
string | Поисковый запрос |
Сравнение документации платформы между двумя версиями.
| Параметр | Тип | Описание |
|---|---|---|
version_a |
string | Более ранняя версия (например, v8.3.25) |
version_b |
string | Более поздняя версия (например, v8.5.1) |
query |
string | Предметная область (опционально) |
Поиск документации по прикладным конфигурациям (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.
Для production-окружений токен можно передать через файл:
services:
1c-code-checker:
image: desko77/1c-code-checker:latest
environment:
ONEC_AI_TOKEN_FILE: /run/secrets/onec_token
secrets:
- onec_token
secrets:
onec_token:
file: ./onec_token.txtПри 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.
Поддерживает три формата ответа 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
pip install -r requirements.txt
export ONEC_AI_TOKEN="ваш-токен"
python main.pymain.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