Все статьи

16 октября 2026 г.

Как подключить Grafonbase к Claude Desktop и Cursor: инструкция для 1С-разработчиков

Почему конфигурация 1С «не влезает» в ИИ-агента

ERP 2.5, УТ 11, ЗУП 3.1 или КА 2 — это гигабайты XML-метаданных и сотни тысяч строк BSL: модули объектов, менеджеров, общих модулей, форм, подписки на события. Если открыть агенту весь каталог src/ или выгруженную в XML конфигурацию, происходит предсказуемое:

  • контекстное окно переполняется за 2–3 запроса, начинается «обрезка» истории;
  • агент читает по 40–60 тысяч токенов на файл модуля объекта и быстро выгорает бюджет;
  • Claude/Cursor теряет связи между вызовами, путает одноимённые методы разных общих модулей и уверенно галлюцинирует сигнатуры;
  • на вопрос «где вызывается ОбщегоНазначения.ЗначениеРеквизитаОбъекта» вы получаете правдоподобный, но неверный ответ.

Графон (Grafonbase) решает это иначе. Это локальный инструмент и MCP-сервер, который один раз индексирует вашу конфигурацию 1С и строит граф зависимостей: метаданные → модули → процедуры/функции → вызовы → подписки на события → тексты запросов. ИИ-агент больше не читает проект целиком — он ходит в граф по протоколу MCP и получает ровно тот срез, который нужен для задачи.

Архитектура: что происходит между агентом и 1С

Claude Desktop / Cursor
        │  MCP (stdio или SSE)
        ▼
   Grafonbase MCP-сервер
        │
        ├── индекс метаданных (объекты, реквизиты, формы, права)
        ├── граф вызовов BSL (общие модули, модули объектов/менеджеров)
        ├── карта подписок на события и регламентных заданий
        └── поиск по текстам запросов и ролям
        ▲
        │  grafon index
   Выгрузка конфигурации 1С (XML / EDT-проект)

Ключевой принцип: в контекст LLM попадают только сигнатуры и связанные фрагменты, а не файлы целиком.

Предварительные требования

| Компонент | Версия | Примечание |
|---|---|---|
| Графон | 1.3+ | CLI + MCP-сервер |
| Claude Desktop | 0.9+ | macOS / Windows |
| Cursor | 0.45+ | режим Agent, поддержка MCP |
| Node.js (если ставите через npm) | 20 LTS | либо standalone-бинарь |
| Выгрузка 1С | XML из Конфигуратора или EDT-проект | полная, с модулями |

Шаг 1. Индексация конфигурации 1С

Выгрузите конфигурацию в XML («Конфигурация → Выгрузить конфигурацию в файлы») или укажите проект EDT. Затем:

# установка
npm i -g grafonbase

инициализация хранилища индексов

grafon init --data ~/.grafon

индексация выгрузки ERP 2.5 (полный цикл ~3-8 минут на SSD)

grafon index --src /Users/dev/1c/erp-2.5/src \ --name erp-2.5 \ --include-forms \ --include-queries

На выходе — каталог ~/.grafon/indexes/erp-2.5 и отчёт: количество объектов метаданных, модулей, процедур и рёбер графа. Индексация инкрементальная: после правок достаточно grafon index --update.

Шаг 2. Подключение к Claude Desktop

Откройте конфиг:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Добавьте сервер:

{
  "mcpServers": {
    "grafon-erp": {
      "command": "grafon",
      "args": ["mcp", "--index", "erp-2.5", "--transport", "stdio"],
      "env": {
        "GRAFON_DATA": "/Users/dev/.grafon",
        "GRAFON_LOG_LEVEL": "info"
      }
    }
  }
}

Для Windows путь в command укажите абсолютный: "C:\\Users\\dev\\AppData\\Roaming\\npm\\grafon.cmd".

Полностью перезапустите Claude Desktop (не просто закройте окно). В интерфейсе появится иконка инструментов — в списке должны быть grafon.*.

Вариант с общей инсталляцией на команду (SSE)

Если индексация тяжёлая и вы не хотите держать её на каждой машине:

grafon mcp --index erp-2.5 --transport sse --port 8765 --host 127.0.0.1
{
  "mcpServers": {
    "grafon-team": {
      "url": "http://127.0.0.1:8765/sse"
    }
  }
}

Шаг 3. Подключение к Cursor

Cursor читает MCP-серверы из ~/.cursor/mcp.json (глобально) либо из .cursor/mcp.json в корне проекта — второй вариант удобен, чтобы у каждой конфигурации 1С был свой индекс:

{
  "mcpServers": {
    "grafon-ut11": {
      "command": "grafon",
      "args": ["mcp", "--index", "ut-11.5", "--transport", "stdio"]
    }
  }
}

Альтернатива через UI: Settings → MCP → Add new MCP server, тип command, команда grafon mcp --index ut-11.5. После сохранения в разделе MCP появится зелёный индикатор и список tools. В режиме Agent не забудьте разрешить авто-вызов инструментов или подтверждать их вручную.

Шаг 4. Проверка соединения и первые MCP-запросы

Сначала «сухой» тест без агента:

grafon mcp --index erp-2.5 --selftest
grafon call grafon.search_metadata --query "РеализацияТоваровУслуг"

Основные инструменты, которые видит агент:

| MCP-инструмент | Что возвращает | Пример запроса |
|---|---|---|
| grafon.search_metadata | объекты, реквизиты, формы по подстроке | «найди регистры по расчёту себестоимости» |
| grafon.get_module | модуль объекта/менеджера целиком или по диапазону | «покажи модуль менеджера РеализацияТоваровУслуг» |
| grafon.get_signature | точная сигнатура процедуры/функции | «сигнатура ПровестиПоРегистрам» |
| grafon.find_callers | обратные вызовы (кто вызывает) | «где вызывается ОбщегоНазначенияКлиентСервер.СообщитьПользователю» |
| grafon.resolve_subscriptions | подписки на события по объекту | «какие подписки срабатывают при записи документа» |
| grafon.find_queries | тексты запросов, где встречается таблица | «запросы к регистру ТоварыНаСкладах» |

Реальный сценарий. Задача: «Добавить в проведение реализации проверку остатков по регистру, не сломав существующую логику». Агент вместо чтения проекта делает цепочку вызовов:

{"tool": "grafon.search_metadata", "arguments": {"query": "РеализацияТоваровУслуг, регистр ТоварыНаСкладах"}}
{"tool": "grafon.get_signature", "arguments": {"module": "Документ.РеализацияТоваровУслуг.МодульОбъекта", "name": "ОбработкаПроведения"}}
{"tool": "grafon.resolve_subscriptions", "arguments": {"object": "Документ.РеализацияТоваровУслуг", "event": "ОбработкаПроведения"}}
{"tool": "grafon.find_callers", "arguments": {"callee": "УправлениеЗапасами.ПроверитьОстатки", "depth": 2}}

Получив связку, агент формирует корректный BSL-код:

&НаСервере
Процедура ОбработкаПроведенияПосле(Отказ)
    
    Если Не ЭтоГруппаДокументов() Тогда
        
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |   ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
        |   ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток
        |ИЗ
        |   РегистрНакопления.ТоварыНаСкладах.Остатки(
        |       &Дата, Склад = &Склад И Номенклатура В (&Номенклатура)) КАК ТоварыНаСкладахОстатки";
        
        Запрос.УстановитьПараметр("Дата", Дата);
        Запрос.УстановитьПараметр("Склад", Склад);
        Запрос.УстановитьПараметр("Номенклатура", Товары.ВыгрузитьКолонку("Номенклатура"));
        
        Выборка = Запрос.Выполнить().Выбрать();
        Пока Выборка.Следующий() Цикл
            СтрокаТоваров = Товары.Найти(Выборка.Номенклатура, "Номенклатура");
            Если СтрокаТоваров <> Неопределено
                И СтрокаТоваров.Количество > Выборка.КоличествоОстаток Тогда
                
                Сообщение = Новый СообщениеПользователю;
                Сообщение.Текст = СтрШаблон(
                    "Недостаточно остатков по номенклатуре %1: доступно %2",
                    Выборка.Номенклатура, Выборка.КоличествоОстаток);
                Сообщение.Сообщить();
                
            КонецЕсли;
        КонецЦикла;
        
    КонецЕсли;
    
КонецПроцедуры

Без графа агент не знает, что ТоварыНаСкладах — регистр накопления с измерением Склад, и с высокой вероятностью придумает несуществующий СкладОстаток.

Графон vs «скормить проект целиком»

Замеры на ERP 2.5 (индексация один раз, задача — «доработать проведение реализации»):

| Метрика | Без Графона | С Графоном | Эффект |
|---|---|---|---|
| Токенов на сессию | ~180 000 | ~18 500 | ×9,7 меньше |
| Время до первого корректного ответа | 6–9 мин | 40–70 сек | ×7 быстрее |
| Точность сигнатур методов | ~55 % | ~99 % | галлюцинации сняты |
| Провалов контекста (обрезка) | 2–3 за сессию | 0 | стабильный Agent |
| Стоимость сессии (Opus-класс) | $4–6 | $0,4–0,6 | ×10 экономии |

Для команд это умножается на число разработчиков: сервер поднимается на общем хосте в SSE-режиме, а индексы обновляются ночным CI-джобом.

Типичные ошибки при подключении

  1. Сервер не виден в Claude Desktop. Почти всегда — относительный путь в command. Указывайте абсолютный путь или which grafon.
  2. «Index not found». Индекс лежит в другом GRAFON_DATA. Проверьте переменную окружения в блоке env и наличие каталога ~/.grafon/indexes/.
  3. Агент игнорирует инструменты. В Cursor включите MCP-инструменты в режиме Agent; в Claude Desktop перезапустите приложение, а не окно.
  4. Ответы устарели после правок. Забыли grafon index --update; повесьте хук на сохранение файла или запустите вручную перед сессией.
  5. Слишком широкие запросы. Даже с графом запрос «покажи всё про зарплату» вернёт много. Формулируйте задачу через объект и метод.

Чек-лист внедрения

  • [ ] Выгрузка конфигурации 1С актуальна и содержит модули.
  • [ ] grafon index выполнен, отчёт без ошибок парсинга BSL.
  • [ ] Конфиг Claude Desktop / Cursor ссылается на верный --index.
  • [ ] grafon --selftest и один ручной grafon call проходят.
  • [ ] В команде зафиксированы правила промптов: сначала search_metadata, потом get_signature, только затем генерация кода.
  • [ ] Инкрементальная переиндексация добавлена в CI.

Подключение Графона занимает 15–20 минут, а окупается на первой же задаче по доработке типовой конфигурации: агент перестаёт «читать» гигабайты XML и начинает работать как навигатор по графу зависимостей, выдавая точные сигнатуры, вызовы и подписки на события 1С.