Skip to main content
Glama
ASGDeveloper

onec-config-mcp

by ASGDeveloper

onec-config-mcp

MCP-сервер для поиска по исходному коду конфигураций 1С:Предприятие прямо из Claude Code.

Индексирует выгрузки конфигураций (XML + BSL) в локальную SQLite-базу с полнотекстовым поиском (FTS5) и предоставляет 11 инструментов для поиска кода, объектов метаданных, процедур и функций.

Возможности

  • Полнотекстовый поиск по BSL-коду с поддержкой FTS5-синтаксиса (AND, OR, NOT, "фраза")

  • Поиск объектов метаданных по имени (общие модули, справочники, документы и т.д.)

  • Получение полного кода модуля по имени объекта

  • Поиск определения процедуры или функции с номером строки

  • Получение тела процедуры/функции и карты модуля (список процедур без исходника) без чтения всего файла

  • Граф вызовов: кто вызывает процедуру / что вызывает она сама

  • Автоматическая переиндексация при изменении файлов (watchdog)

  • Поддержка нескольких конфигураций одновременно

Related MCP server: 1C Templates MCP Server

Требования

Установка

git clone https://github.com/ASGDeveloper/onec-config-mcp
cd onec-config-mcp
pip install -e .

Настройка

Отредактируйте config.json:

{
  "db_path": "C:/Users/user/Documents/GitHub/onec-config-mcp/index.db",
  "configs": [
    {
      "name": "МояКонфигурация",
      "path": "C:/path/to/exported/config",
      "object_types": "all",
      "index_forms": true,
      "watch": true
    },
    {
      "name": "БП",
      "path": "C:/path/to/exported/acc30",
      "object_types": "base",
      "index_forms": false
    }
  ]
}

Поле

Описание

db_path

Путь к файлу базы данных SQLite (будет создан автоматически)

name

Имя конфигурации (используется как фильтр в инструментах)

path

Путь к корню выгруженной конфигурации

object_types

Какие типы объектов индексировать: "all" (по умолчанию, все типы из списка ниже), "base" (только Catalogs, Documents, InformationRegisters, Enums) или явный список, например ["Catalogs", "Documents", "CommonModules"]

index_forms

true (по умолчанию) — индексировать формы (код и метаданные); false — полностью пропускать формы для этой конфигурации

watch

true — автоматически переиндексировать при изменении файлов

Типовые конфигурации (БП, БГУ, УТ, УНФ и т.п.), используемые в основном как справочник данных, обычно достаточно индексировать с "object_types": "base", "index_forms": false — это заметно уменьшает размер базы. Для своей конфигурации и библиотек, по которым нужен полный поиск кода (БСП и т.п.), используйте "object_types": "all", "index_forms": true.

Важно: db_path не должен находиться в AppData\Local — Claude Code работает в UWP-sandbox и перенаправляет этот путь. Используйте папку Documents или другое место.

Индексирование

# Проиндексировать все конфигурации
python indexer.py

# Проиндексировать только одну конфигурацию
python indexer.py --only МояКонфигурация

# Показать статистику индекса
python indexer.py --stats

При повторном запуске данные конфигурации полностью перезаписываются.

После обновления схемы БД (например, при обновлении самого onec-config-mcp) удалите index.db и файлы index.db-wal/index.db-shm перед запуском indexer.py — старая база несовместима с новой схемой и не мигрируется автоматически.

Подключение к Claude Code

Добавьте сервер в глобальный файл ~/.claude/.mcp.json:

{
  "mcpServers": {
    "onec-config-mcp": {
      "command": "python",
      "args": ["C:/path/to/onec-config-mcp/server.py"]
    }
  }
}

Перезапустите Claude Code. Сервер запустится автоматически и будет доступен во всех проектах.

Разрешения для проекта (.claude/settings.local.json):

{
  "allowedTools": [
    "mcp__onec-config-mcp__search_code",
    "mcp__onec-config-mcp__find_object",
    "mcp__onec-config-mcp__get_module",
    "mcp__onec-config-mcp__list_objects",
    "mcp__onec-config-mcp__find_procedure",
    "mcp__onec-config-mcp__list_configs",
    "mcp__onec-config-mcp__get_object_metadata",
    "mcp__onec-config-mcp__get_procedure_body",
    "mcp__onec-config-mcp__get_module_outline",
    "mcp__onec-config-mcp__get_callers",
    "mcp__onec-config-mcp__get_callees"
  ]
}

Инструменты

search_code

Полнотекстовый поиск по BSL-коду. Возвращает сниппеты с контекстом.

query       — текст или FTS5-выражение ("ПроверитьПрава" OR "CheckRights")
config_name — фильтр по конфигурации (опционально)
obj_type    — фильтр по типу объекта: CommonModules, Catalogs, Documents, ...
limit       — максимум результатов (по умолчанию 20)

find_procedure

Найти определение процедуры или функции по имени. Возвращает файл и номер строки, а также признак устаревания.

proc_name   — имя процедуры/функции
config_name — конфигурация (опционально)

is_deprecated — true, если комментарий над процедурой начинается с "Устарела." или процедура лежит в области #Область УстаревшиеПроцедурыИФункции. deprecated_since_region — сработал ли именно признак области. deprecated_alternatives — список альтернатив, извлечённых из строк "Следует использовать ..." / "См. ..." сразу после "Устарела." в комментарии.

get_module

Получить полный код BSL-модуля. При размере >200 КБ — усекается с предупреждением.

obj_name    — имя объекта (например, Доки_Авторизация)
config_name — конфигурация (опционально)
module_type — Module / ObjectModule / ManagerModule / FormModule
form_name   — имя формы (при module_type=FormModule)

find_object

Полнотекстовый поиск по именам объектов метаданных. Возвращает xml_summary с синонимом и флагами.

list_objects

Список объектов по типу и/или конфигурации.

get_object_metadata

Метаданные объекта: xml_summary, индексация полей (index_info) и список модулей с количеством строк.

index_info показывает, какие поля объекта индексированы (для проверки WHERE/условий соединения на предмет неиндексированных полей). Логика соответствует официальному описанию "Индексы таблиц базы данных" (its.1c.ru/db/metod8dev#content:1590):

indexed_fields       — для регистров: измерения всегда образуют базовый составной индекс
                        в порядке объявления, поэтому первое измерение (reason:
                        leading_dimension) эффективно фильтруется само по себе всегда.
                        Остальные измерения, а также ресурсы и реквизиты регистра,
                        попадают в выдачу только если явно включена индексация
                        (<Indexing> = Index/IndexWithAdditionalOrder, reason = само
                        значение) — иначе поле участвует только в составном индексе по
                        порядку слева направо и не может быть отфильтровано отдельно.
                        Каждая запись: field/kind (dimension|resource|attribute)/reason.

auto_indexed_fields  — для справочников/документов и производных типов: стандартные
                        реквизиты, индексируемые платформой автоматически.
                        Справочники/ПланВидовРасчёта: Ссылка всегда, Код — только если
                        CodeLength≠0, Наименование — только если DescriptionLength≠0.
                        ПланВидовХарактеристик/ПланСчетов/ПланОбмена: Ссылка+Код+
                        Наименование всегда (платформа не допускает у них нулевую длину).
                        Документы/БизнесПроцессы/Задачи: Ссылка+Дата всегда, Номер —
                        только если NumberLength≠0; Задачи дополнительно всегда получают
                        Наименование.

Не реализовано: доп. индексы для иерархических/подчинённых справочников (Родитель/Владелец/ЭтоГруппа) и аналогичные ветвления для БизнесПроцессов/Задач/ПланСчетов, а также составные ("дополнительные") индексы Indexes — это функциональность только КОРП-лицензии платформы, реальных образцов с ней не нашлось ни в одной из доступных конфигураций.

list_configs

Показать проиндексированные конфигурации с датой и статистикой.

get_procedure_body

Получить исходный текст тела процедуры/функции по точному имени, без чтения всего модуля. Возвращает те же поля признака устаревания, что и find_procedure (см. выше).

proc_name   — имя процедуры/функции
config_name — конфигурация (опционально)

get_module_outline

Карта модуля: список процедур/функций (имя, тип, признак Экспорт, номер строки) без вывода исходника.

obj_name    — имя объекта
config_name — конфигурация (опционально)
module_type — Module / ObjectModule / ManagerModule / FormModule
form_name   — имя формы (при module_type=FormModule)

get_callers

Найти все места вызова процедуры/функции — кто её вызывает.

proc_name   — имя процедуры/функции
config_name — конфигурация (опционально)

get_callees

Найти, какие процедуры/функции вызываются внутри заданной. Эвристика на regex — не различает вызовы методов объекта (Объект.Метод()) от вызовов глобальных функций модуля.

proc_name   — имя процедуры/функции
config_name — конфигурация (опционально)

Структура проекта

onec-config-mcp/
  server.py       # MCP-сервер (stdio transport) + watchdog
  indexer.py      # CLI для индексирования
  db.py           # Схема SQLite, FTS5-триггеры
  parser.py       # Парсер XML+BSL
  tools.py        # Обработчики MCP-инструментов
  config.json     # Конфигурация путей (не коммитить!)
  pyproject.toml  # Зависимости

Поддерживаемые типы объектов

CommonModules, Catalogs, Documents, DataProcessors, Reports, InformationRegisters, AccumulationRegisters, AccountingRegisters, BusinessProcesses, Tasks, ExchangePlans, CommonForms, Constants, Enums, ChartOfCharacteristicTypes, ChartOfAccounts, ScheduledJobs

Логирование

Сервер пишет лог в server.log рядом с server.py. Там же отображаются события watchdog и ошибки переиндексации.

# Следить за логом в реальном времени
Get-Content server.log -Wait -Tail 20

Лицензия

MIT

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides a RAG-based search system for 1C:Enterprise platform documentation using hybrid BM25 and semantic search across multiple versions. It enables developers to retrieve API signatures, methods, and usage examples directly within IDEs or through a REST API.
    22
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides storage, searching, and retrieval of 1C (BSL) code templates with a built-in web interface for easy template management. It enables AI assistants to fetch specific boilerplate code directly into editors using natural language search.
    17
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server for searching and analyzing 1C enterprise metadata and BSL code using a SQLite backend. Enables querying configuration structure, code routines, and performing compliance checks via natural language.
    -

Latest Blog Posts

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/ASGDeveloper/onec-config-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server