25 сентября 2026 г.
Как настроить локальный MCP-сервер для 1С на Windows и Linux: полное руководство по Grafon
Зачем 1С-разработчику свой MCP-сервер
Любая более-менее серьёзная конфигурация — ERP, УТ, ЗУП, КА — это гигабайты XML-выгрузки, сотни тысяч строк на BSL и десятки тысяч объектов метаданных. ИИ-агент, который получает это через файловый поиск, сжигает контекстное окно за один диалог и начинает галлюцинировать: придумывать несуществующие методы общих модулей, путать параметры процедур и ссылаться на удалённые реквизиты.
Локальный MCP-сервер (Model Context Protocol) решает эту проблему архитектурно. Вместо того чтобы тащить в модель файлы целиком, агент обращается к серверу по короткому запросу и получает точный срез: сигнатуры методов, модули объектов, регистры, подписки, связи. Grafon — именно такой сервер: он строит граф зависимостей метаданных, процедур, функций и запросов 1С и отдаёт агенту минимальный контекст.
Как работает архитектура Grafon
Grafon — это локальный процесс, который:
- Сканирует каталог
src/с XML-выгрузкой конфигурации (Выгрузить конфигурацию в файлы). - Парсит модули BSL: общие модули, модули объектов, менеджеров, форм, подписки на события.
- Строит граф:
метаданное → методы → вызовы → зависимости → запросы. - Поднимает локальный MCP-сервер (stdio или HTTP на
127.0.0.1). - По запросу отдаёт агенту только релевантный узел графа.
Конфигурация XML → Парсер BSL → Граф зависимостей → MCP-сервер → Claude/Cursor/Windsurf
↑
SQLite-индекс
Все данные остаются на вашей машине — ничего не улетает в облако, кроме самих промптов в API модели, которые формирует уже агент.
Установка на Windows
Шаг 1. Скачивание и распаковка
mkdir C:\Tools\grafon
cd C:\Tools\grafon
Получите архив с https://grafonbase.ru и распакуйте
Expand-Archive .\grafon-windows-x64.zip -DestinationPath .
.\grafon.exe --version
Шаг 2. Индексация конфигурации
.\grafon.exe index --src "C:\Git\ERP\src" --out "C:\Tools\grafon\index\erp"
Индексация ERP-конфигурации ~300 000 строк занимает 40–90 секунд, индекс весит 200–400 МБ.
Шаг 3. Регистрация в Claude Code
Файл %USERPROFILE%\.claude\mcp.json:
{
"mcpServers": {
"grafon-1c": {
"command": "C:\\Tools\\grafon\\grafon.exe",
"args": ["serve", "--index", "C:\\Tools\\grafon\\index\\erp"],
"env": { "GRAFON_LOG": "warn" }
}
}
}
Установка на Linux (Ubuntu/Debian, Astra, RED OS)
sudo mkdir -p /opt/grafon && cd /opt/grafon
curl -LO https://grafonbase.ru/downloads/grafon-linux-x64.tar.gz
tar -xzf grafon-linux-x64.tar.gz
sudo chmod +x grafon
./grafon --version
Индексация:
/opt/grafon/grafon index --src /home/dev/erp/src --out /var/lib/grafon/erp
Конфигурация для Claude Code (~/.claude/mcp.json):
{
"mcpServers": {
"grafon-1c": {
"command": "/opt/grafon/grafon",
"args": ["serve", "--index", "/var/lib/grafon/erp"]
}
}
}
Для systemd-режима:
[Unit]
Description=Grafon MCP for 1C
After=network.target
[Service]
ExecStart=/opt/grafon/grafon serve --http 127.0.0.1:8765 --index /var/lib/grafon/erp
Restart=on-failure
User=dev
[Install]
WantedBy=multi-user.target
Подключение Cursor и Windsurf
В Cursor откройте Settings → MCP и добавьте тот же JSON-блок, что и для Claude Code. В Windsurf — ~/.windsurf/mcp/config.json. Транспорт может быть stdio (процесс на каждый сеанс) или http (постоянный сервис — быстрее на старте, удобно для командной работы на dev-сервере).
Практические сценарии: MCP-запросы к Grafon
Агент сам вызывает инструменты. Пример задачи: «Добавь в ОбщегоНазначения метод, который пересчитывает курс по дате документа».
Запрос агента к серверу:
{
"method": "tools/call",
"params": {
"name": "find_symbol",
"arguments": { "query": "КурсВалютыНаДату", "kind": "function" }
}
}
Ответ:
{
"symbol": "ОбщегоНазначения.КурсВалютыНаДату",
"signature": "Функция КурсВалютыНаДату(Валюта, Дата, Курс = Неопределено) Экспорт",
"module_path": "CommonModules/ОбщегоНазначения/Ext/Module.bsl",
"callers": ["Документ.РеализацияТоваровУслуг.МодульОбъекта"],
"dependencies": ["РегистрСведений.КурсыВалют"]
}
Агент получает ровно это — 200 токенов вместо 15 000 строк модуля. Далее он пишет корректный код:
// Пересчитывает сумму документа по актуальному курсу на дату.
//
Функция ПересчитатьСуммуПоКурсу(Документ, Сумма) Экспорт
Курс = ОбщегоНазначения.КурсВалютыНаДату(
Документ.Валюта,
Документ.Дата,
Документ.Курс);
Если Курс = 0 Тогда
ВызватьИсключение НСтр("ru='Не удалось получить курс валюты'");
КонецЕсли;
Возврат Сумма / Курс;
КонецФункции
Для поиска подписок на события используется отдельный инструмент:
{ "method": "tools/call",
"params": { "name": "find_subscriptions",
"arguments": { "event": "ПриЗаписи", "object": "Документ.РеализацияТоваровУслуг" } } }
Сравнение: Графон vs без Графона
| Сценарий | Без MCP (файловый доступ) | С MCP + Grafon | Экономия |
|---|---|---|---|
| Найти сигнатуру метода | 15 000 токенов | 180 токенов | ~83× |
| Правка модуля объекта | 40 000 токенов | 2 500 токенов | 16× |
| Анализ подписок на событие | 120 000 токенов | 1 200 токенов | 100× |
| Рефакторинг общей функции | 60 000 токенов | 4 000 токенов | 15× |
| Время отклика агента (задача) | 45–90 сек | 6–12 сек | ~7× |
| Доля галлюцинаций в предложенном BSL | высокая | близка к нулю | — |
Средняя экономия по реальным проектам — до 10× по токенам и в 5–7 раз по времени.
Командная работа: один сервер на всех
На Linux-сервере удобно поднять Grafon в HTTP-режиме и разрешить подключение по локальной сети:
/opt/grafon/grafon serve --http 0.0.0.0:8765 --index /var/lib/grafon/erp --auth-token secret
В клиентах указывается URL и токен. При обновлении конфигурации индекс пересобирается инкрементально:
git pull && /opt/grafon/grafon reindex --index /var/lib/grafon/erp --changed-only
Инкрементальная переиндексация изменённых модулей занимает секунды, поэтому сервер можно держать актуальным после каждого git pull.
Типичные ошибки при настройке
- Индексация только Ext-каталога. Сканируйте родительский
src/, иначе граф не увидит связиConfiguration.xml. - Один индекс на все конфигурации. Держите отдельные индексы под ERP, УТ, ЗУП — иначе получаете шум в результатах.
- Отсутствие
--auth-tokenпри HTTP-транспорте. Обязательно для сетевого режима, иначе сервер доступен всем в LAN. - Устаревший индекс после рефакторинга. Встройте
reindexв pre-push hook.
Чек-лист внедрения
- Выгрузить конфигурацию в файлы (
Конфигуратор → Конфигурация → Выгрузить в файлы). - Установить Grafon на рабочую станцию (Windows) и на dev-сервер (Linux).
- Запустить
index, убедиться по логу, что найдено >99% модулей. - Зарегистрировать MCP-сервер в Claude Code, Cursor, Windsurf.
- Проверить инструменты
find_symbol,find_subscriptions,module_context. - Настроить инкрементальный
reindexв CI-пайплайне. - Замерить токены до/после по одной и той же задаче.
Локальный MCP-сервер для 1С — это не «модная игрушка», а инфраструктурный элемент, который превращает ИИ-ассистента из болтливого «наставника по BSL» в точного инженерного агента, работающего с вашей конфигурацией как с компилятором — по символам, а не по мегабайтам текста.