1c-templates-mcp
1c-templates-mcp
MCP-сервер с семантическим поиском по шаблонам кода 1С (BSL). 2262+ шаблонов из сообщества, CRUD веб-интерфейс с Monaco Editor, ChromaDB + embeddings для поиска по смыслу.
Возможности
Семантический поиск - гибридный (vector + full-text) поиск шаблонов кода на русском языке
6 MCP-инструментов - поиск, просмотр, создание, редактирование, удаление шаблонов
Веб-интерфейс - полный CRUD с Monaco Editor и подсветкой BSL-синтаксиса
2262+ шаблонов - предустановленная база шаблонов кода 1С в
seed_templates.jsonlГибкие embeddings - OpenAI-совместимый API или локальная модель SentenceTransformer
Docker - готовый docker-compose для быстрого запуска
Установка из готового образа (рекомендуется)
Для обычного использования - без клонирования репозитория и без сборки. Готовый образ публикуется на Docker Hub: desko77/1c-templates-mcp.
Скачайте папку deploy/ (три файла: docker-compose.yml, .env.example, README.md) и запустите:
cd deploy
docker compose up -d # CPU-режим
docker compose --profile gpu up -d # GPU-режим (NVIDIA)Подробная инструкция по настройке и обновлению - в deploy/README.md.
Быстрый старт (сборка из исходников)
Подходит для разработки и контрибуций. Собирает образ локально из текущего состояния репозитория.
git clone https://github.com/Desko77/1c-templates-mcp.git
cd 1c-templates-mcp
# CPU (универсально, без требований к GPU)
docker compose --profile cpu up -d
# ИЛИ GPU (NVIDIA, значительно быстрее индексация + поиск)
docker compose --profile gpu up -dСервер доступен:
Веб-интерфейс:
http://localhost:8004MCP endpoint:
http://localhost:8004/mcp(POST, Streamable HTTP)
Разница между профилями:
cpu— контейнерtemplate_search_mcp, без GPU-проброса. Первая индексация RoSBERTa на CPU ~5-10 мин. Работает везде.gpu— контейнерtemplate_search_mcp_gpu, проброс NVIDIA GPU черезdeploy.resources.reservations.devices. Индексация под минуту. Требует nvidia-container-toolkit (см. ниже).
Требования для GPU-профиля
NVIDIA GPU с установленными драйверами (проверка:
nvidia-smiна хосте).nvidia-container-toolkit — пакет для проброса GPU в Docker-контейнеры.
Установка: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html
На Windows работает через Docker Desktop с WSL2 + установленным nvidia-container-toolkit в WSL2.
После установки:
docker run --rm --gpus all nvidia/cuda:12.0.0-base-ubuntu22.04 nvidia-smiдолжно показать вашу GPU.
torch с поддержкой CUDA — уже в
requirements.txt(torch>=2.8.0подтягивает CUDA-wheel автоматически).
Если GPU недоступен или nvidia-container-toolkit не установлен — docker compose --profile gpu up упадёт с ошибкой о нехватке nvidia runtime. В этом случае используйте --profile cpu.
Подключение к Claude Code
{
"mcpServers": {
"1c-templates-mcp": {
"type": "url",
"url": "http://localhost:8004/mcp"
}
}
}MCP-инструменты
Инструмент | Параметры | Описание |
|
| Гибридный семантический + полнотекстовый поиск шаблонов |
|
| Список шаблонов с пагинацией (по умолчанию 50, макс 200). Для поиска используйте |
|
| Получить полный шаблон с кодом по ID |
|
| Добавить новый шаблон |
|
| Обновить существующий шаблон |
|
| Удалить шаблон по ID |
Веб-интерфейс
Маршрут | Описание |
| Список шаблонов с поиском |
| Форма создания шаблона (Monaco Editor) |
| Просмотр шаблона |
| Редактирование шаблона |
| Удаление шаблона |
Конфигурация
Переменная | По умолчанию | Описание |
|
| Порт сервера |
|
| Провайдер embeddings: |
|
| HuggingFace-идентификатор модели для локальных embeddings |
|
| URL OpenAI-совместимого API для embeddings |
|
| API-ключ |
| - | Имя модели на API-сервере (для LM Studio - внутреннее имя, не HF-id) |
|
| Пересоздать ChromaDB-индекс при старте |
|
| Очистить кеш модели при старте |
|
| Использовать SSE-транспорт вместо Streamable HTTP |
|
| Директория для runtime-данных (SQLite, ChromaDB) |
Архитектура
MCP Clients (Claude Code, Cursor, ...)
|
POST /mcp
|
+---------+---------+
| FastAPI app |
| |
| /mcp -> FastMCP | 6 MCP tools
| / -> Web UI | CRUD + Monaco Editor
+----+--------+----+
| |
+----+--+ +--+------+
| SQLite | | ChromaDB |
| (SoT) | | (index) |
+--------+ +----+-----+
|
+------+------+
| Embeddings |
| OpenAI API |
| or local ST |
+-------------+seed_templates.jsonl- источник истины для контрибуций (один JSON-объект на строку). При Docker-билде из него генерируетсяtemplates.db.SQLite (
templates.db) - runtime-хранилище шаблонов (в Docker-volume). Производное от JSONL на этапе билда.ChromaDB - векторный индекс для семантического поиска, производный от SQLite (перестраивается при первом старте).
Embeddings - OpenAI-совместимый API (LM Studio, Ollama) или локальный SentenceTransformer.
Embedding-модели
Доступны три режима выбора бэкенда через EMBEDDING_PROVIDER:
Режим auto (по умолчанию)
Сначала пробует OpenAI-совместимый API (LM Studio, Ollama, vLLM). При недоступности автоматически откатывается на локальную SentenceTransformer-модель.
environment:
- EMBEDDING_PROVIDER=auto
- OPENAI_API_BASE=http://host.docker.internal:1234
- OPENAI_MODEL=text-embedding-multilingual-e5-large-instruct
- EMBEDDING_MODEL=intfloat/multilingual-e5-small # fallbackРежим local — только локальная SentenceTransformer
API не дергается вообще. Подходит если нет LM Studio / Ollama, или хочется гарантированно детерминированное поведение без зависимостей от внешних сервисов.
environment:
- EMBEDDING_PROVIDER=local
- EMBEDDING_MODEL=intfloat/multilingual-e5-small # или ai-forever/ru-en-RoSBERTaРежим openai — только API
Падает с ошибкой если API недоступен (без фоллбэка). Подходит для production-деплоев, где API-сервис обязателен.
environment:
- EMBEDDING_PROVIDER=openai
- OPENAI_API_BASE=https://api.openai.com
- OPENAI_API_KEY=sk-...
- OPENAI_MODEL=text-embedding-3-smallРекомендации по локальным моделям
Модель | Размер | Dim | Скорость на CPU | Когда брать |
| 118M / ~450 МБ | 384 | Быстро | Default - работает везде, включая слабое железо |
| 404M / ~1.6 ГБ | 1024 | Медленно (5-10 мин на индекс 2262 шаблонов) | Есть GPU или готов ждать - лучшее качество на русском |
| 560M / ~2.2 ГБ | 1024 | Очень медленно на CPU | Есть GPU - универсальная мультиязычная |
Первый запуск с новой моделью качает её с HuggingFace (кешируется в model_cache/). Последующие старты читают из кеша.
Проверка качества embedding-модели
Если подозреваете что API-модель (особенно сторонняя GGUF в LM Studio) возвращает дефектные эмбеддинги, см. ../plans/1c-templates-mcp/test_lmstudio_embeddings.py - скрипт проверяет все доступные в LM Studio модели на коллапс (max cos_sim для несвязанных текстов).
Локальный запуск (без Docker)
pip install -r requirements.txt
python -m app.mainПеременные окружения читаются из .env (см. .env.example). Для GPU - установить torch с CUDA-wheel (pip install torch --index-url https://download.pytorch.org/whl/cu121).
Для подсветки BSL в веб-интерфейсе клонировать bsl_console рядом с проектом:
git clone --depth 1 https://github.com/salexdv/bsl_console.gitКак добавить свой шаблон
Источник правды - seed_templates.jsonl в корне проекта. Каждая строка файла - один шаблон в формате JSON: {"name": "...", "description": "...", "tags": ["..."], "code": "..."}. Поля name, description, code обязательны, tags опционально.
Путь 1: напрямую через JSONL (рекомендуется для PR)
Добавить строку с шаблоном в конец
seed_templates.jsonl.Проверить валидность:
python scripts/build_db_from_jsonl.py --jsonl seed_templates.jsonl --output ./check.db- должно завершиться без ошибок. Удалитьcheck.db.Закоммитить изменение и открыть PR.
Путь 2: локально через Web UI + экспорт
Запустить сервер (
docker compose up -d), добавить шаблон через Web UI (http://localhost:8004/new). Шаблон попадает в runtime-БД в Docker-volume.Обязательно выгрузить runtime-БД на хост и экспортировать в JSONL:
docker cp template_search_mcp:/app/data/templates.db ./runtime_dump.db python scripts/export_to_jsonl.py --db ./runtime_dump.db --output seed_templates.jsonl rm ./runtime_dump.dbgit add seed_templates.jsonl, коммит, PR.
ВАЖНО: если выполнить docker compose up -d --build или docker volume rm до шага 2 - добавленный через Web UI шаблон будет потерян (runtime-БД пересоздается из seed_templates.jsonl).
Пересборка образа после изменений JSONL
docker compose build --no-cache
docker volume rm 1c-templates-mcp_app_data # удалит прежнюю runtime-БД
docker compose up -dCompanion-правила для AI-агентов
В docs/rules/ лежат справочники по доменам, из которых дистиллированы тематические шаблоны базы. Это не замена самим шаблонам, а companion-знания для глубокого контекста: шаблоны показывают как делать конкретные операции, справочник даёт полную картину API домена. Агент с подключенным справочником намного лучше ориентируется в большом API, выбирает правильные методы и не путает близкие по смыслу модули.
Доступные справочники
docs/rules/zup-hr-api-reference.md — 1С:ЗУП 3.1 (кадровый учёт)
Полный reference по типовым механизмам конфигурации 1С:Зарплата и управление персоналом 3.1 (базовая / ПРОФ / КОРП). Применяется при любой разработке на ЗУП 3.1.
22 раздела, ~620 строк. Что внутри:
Раздел | Содержание |
1. Архитектура | Ключевое различие |
2. Иерархия модулей |
|
3-4. КадровыеДанные | Главные методы |
5. Справочник полей | Все поля, доступные через КадровыеДанные: периодические (Должность, Подразделение, Оклад, График, ~50 полей) и постоянные (ДатаПриема, ТабельныйНомер, СНИЛС, ~80 полей). Объяснён нюанс "Текущий*" префикса. |
6. Приём/увольнение |
|
7. Стажи | Все виды стажа (общий, страховой, северный, непрерывный), представление, расчёт продолжительности, нормализация. |
8. Связь Сотрудник ↔ ФизЛицо |
|
9. Списки сотрудников организации |
|
10-11. Временные таблицы |
|
12. Архив сотрудников |
|
13. Создание | Новое физлицо и новый сотрудник. |
14. ФИО | Инициалы, склонение по падежам, определение пола, склонение должностей (веб-сервис Морфер). |
15. Вспомогательные методы |
|
16. Вызовы с клиента |
|
17. Текущие начисления |
|
18. Остатки отпусков |
|
19. Графики / производственный календарь |
|
20. Печатные формы |
|
21. Паспортные данные |
|
22. Штатное расписание |
|
В конце — секция "Ключевые нюансы" с частыми граблями: RLS, ДатаПолученияДанных='00010101', массовые vs единичные методы, кеширование ПовтИсп.
Связанные шаблоны в базе (найти через templatesearch("ЗУП <тема>")):
ЗУП: Механизм представлений СКД (Представления_)— виртуальные таблицы для СКД-отчётовЗУП: Периодические регистры через ЗарплатаКадрыПериодическиеРегистры— срезы через МВТЗУП: Менеджер расчета зарплаты МенеджерРасчетаЗарплаты— программный расчётЗУП: Средний заработок и остатки отпусков— УчетСреднегоЗаработкаЗУП: Учет рабочего времени и производственный календарь— УчетРабочегоВремениРасширенный + КалендарныеГрафики
Как подключить справочник к AI-агенту
Claude Code — два варианта:
Глобально (для всех проектов): скопировать файл в
~/.claude/rules/(Windows:C:\Users\<user>\.claude\rules\). Все правила из этой папки автоматически включаются в контекст каждой сессии.Для конкретного проекта: добавить ссылку в
CLAUDE.mdпроекта:См. companion-справочник: <путь к файлу>.
Cursor / другие IDE: подключить файл в настройках правил проекта (Rules / Instructions). Формат Markdown - универсальный.
Через MCP-клиент без IDE: скачать файл и давать агенту как system prompt или attached document при работе с ЗУП-темами.
Контрибуция справочника
Справочники покрывают домены с большим API, в которых AI-агенту без контекста сложно выбрать правильный метод. Если у вас есть такой reference по другой конфигурации / подсистеме (Бухгалтерия, ERP, УТ, БСП-подсистема и т.п.) — открывайте PR в docs/rules/. Формат свободный, главное структура: оглавление, секции по темам API, в конце — ключевые нюансы/грабли.
Благодарности
alonehobo/1c_templates_mcp - оригинальный MCP-сервер с базой шаблонов
salexdv/bsl_console - Monaco Editor с подсветкой BSL-синтаксиса
Лицензия
MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Desko77/1c-templates-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server