Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mcp-1c77

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

Позволяет LLM-клиентам (например, Claude Code) получать доступ к структуре конфигурации 1С 7.7, включая справочники, документы, регистры, модули форм и исходный код модулей объектов.

Особенности

  • Парсинг файлов 1Cv7.MD — чтение метаданных напрямую из файлов конфигурации
  • Web-интерфейс — удобная загрузка файлов через браузер
  • MCP over SSE — интеграция с Claude Code и другими MCP-клиентами
  • Поддерживаемые объекты:
    • Справочники (Catalogs)
    • Документы (Documents)
    • Регистры (Registers)
    • Перечисления (Enums)
    • Константы (Constants)
    • Отчёты/Обработки (Reports)
    • Журналы документов (Document Journals)
    • Виды расчётов (CalcVars)
    • План счетов (Chart of Accounts)
  • Глобальный модуль — извлечение исходного кода глобального модуля (стрим TypedText/ModuleText_Number1)
  • Поиск по модулям — полнотекстовый поиск по коду всех модулей конфигурации
  • Кеширование модулей — декомпрессированные модули кешируются для ускорения повторных вызовов

Установка

Требования

  • Python 3.11+

Из исходников

git clone <repo-url>
cd 77MCP
pip install -e .

Использование

Запуск сервера

python -m mcp_1c77

Сервер запустится на http://localhost:8080.

Web-интерфейс

  1. Откройте http://localhost:8080 в браузере
  2. Перетащите файл 1Cv7.MD в зону загрузки
  3. После загрузки вы увидите статистику по конфигурации

Интеграция с Claude Code

Добавьте MCP-сервер в Claude Code:

claude mcp add --transport sse 1c77-metadata http://localhost:8080/sse

Теперь вы можете использовать инструменты MCP в диалоге с Claude.

MCP инструменты

Инструмент Описание
reload_configuration Перезагрузить конфигурацию или загрузить другой файл
list_objects Список объектов метаданных с возможностью фильтрации по типу
get_object Детальная информация об объекте (реквизиты, табличные части)
get_module Исходный код модуля объекта; диапазон строк или авто-усечение
get_form Получить описание формы объекта
get_global_module Глобальный модуль; диапазон строк или авто-усечение
list_modules Список всех модулей конфигурации (включая глобальный)
search_in_modules Поиск по модулям с контекстом и лимитом
search Поиск по объектам (имя, синоним, комментарий)
get_configuration_info Общая информация о конфигурации
validate_field_path Проверить валидность пути обращения к реквизиту (напр. "Товар.Артикул")
validate_query Проверить все пути обращений к реквизитам в тексте запроса/кода
search_field Найти все объекты, содержащие реквизит с данным именем
get_objects_batch Пакетное получение метаданных нескольких объектов за один вызов
resolve_id Определить тип и имя объекта по его внутреннему ID

Примеры использования

В Claude Code после подключения MCP-сервера:

# Получить список всех документов
list_objects(object_type="Документ")

# Получить детальную информацию о документе
get_object(object_type="Документ", name="РасходнаяНакладная")

# Проверить путь обращения к реквизиту
validate_field_path(object_type="Документ", name="РасходнаяНакладная", path="Товар.Артикул")

# Найти все объекты с реквизитом "Сумма"
search_field(field_name="Сумма")

# Получить глобальный модуль конфигурации (авто-усечение для больших модулей)
get_global_module()

# Прочитать конкретный диапазон строк глобального модуля
get_global_module(start_line=9148, end_line=9235)

# Прочитать строки модуля объекта
get_module(object_type="Документ", name="РасходнаяНакладная", start_line=1, end_line=50)

# Список всех модулей
list_modules()

# Найти использование функции в модулях
search_in_modules(query="глТорговля")

# Поиск с контекстом (3 строки до и после совпадения)
search_in_modules(query="глТорговля", context_lines=3)

# Ограничить число совпадений
search_in_modules(query="глТорговля", limit=10)

# Определить объект по ID
resolve_id(object_id="552")

# Проверить запрос на ошибки в путях реквизитов
validate_query(query_text="SELECT Документ.Товар.Артикул FROM Документ.РасходнаяНакладная AS Документ")

Docker

Сборка и запуск

docker-compose up --build

Сервер будет доступен на http://localhost:8080.

Переменные окружения

Переменная Описание По умолчанию
MCP_DATA_DIR Директория для хранения загруженных файлов /data

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

src/mcp_1c77/
├── __init__.py
├── __main__.py       # Точка входа для запуска сервера
├── server.py         # MCP-сервер (FastMCP)
├── web.py            # Web-интерфейс + SSE-транспорт
├── tools.py          # Реализация MCP-инструментов
├── metadata.py       # Парсер метаданных 1C 7.7
├── models.py         # Pydantic модели данных
├── ole_reader.py     # Чтение OLE-контейнеров 1C
└── bracket_parser.py # Парсер скобочного синтаксиса 1C

Формат 1Cv7.MD

Файл конфигурации 1Cv7.MD 1С:Предприятие 7.7 представляет собой:

  • OLE-контейнер — Compound Document Binary Format
  • Внутренняя структура — текстовое представление в скобочном синтаксисе
  • Кодировка — обычно Windows-1251

Парсер выполняет:

  1. Извлечение содержимого из OLE-контейнера
  2. Разбор скобочного синтаксиса в дерево объектов
  3. Парсинг модулей форм и объектов
  4. Построение связей между объектами

Разработка

Запуск тестов

pytest

Форматирование кода

Проект следует стандартам PEP 8.

Лицензия

MIT

Этот MCP использован в статье. alt text

About

No description, website, or topics provided.

Resources

Stars

17 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages