MCP Servers

A collection of Model Context Protocol servers, templates, tools and more.

1
1c Metacode Lite MCP

MCP сервер для поиска по графу метаданных и кода конфигураций 1С. Версия для офисных машин.

Created 4/3/2026
Updated about 7 hours ago
Repository documentation and setup instructions

1C MCP Memgraph Python Docker

🚀 1C Metacode MCP Lite

⚡ Легковесный MCP-сервер для графа метаданных 1С:Предприятие
🧠 Memgraph + Python FastMCP — в 3 раза меньше RAM чем Neo4j

YouTube


🤔 Что это?

MCP-сервер, который загружает метаданные конфигурации 1С:Предприятие в графовую базу данных и предоставляет инструменты для AI-ассистентов (Claude Code, Cursor, Windsurf и др.) через Model Context Protocol.

Ваш AI-ассистент получает полное структурное знание о конфигурации 1С:

  • 📦 Все объекты метаданных (справочники, документы, регистры, перечисления и т.д.)
  • 📝 Реквизиты, ресурсы, измерения с типами
  • 🖥️ Формы, элементы управления, события, привязки
  • 💻 BSL-код: процедуры, функции, сигнатуры, граф вызовов
  • 🔐 Роли и права доступа
  • 🔗 Перекрёстные ссылки между объектами (USED_IN)
  • 📌 Предопределённые элементы

💡 Почему Lite? Сравнение RAM с Neo4j

Оригинальный подход использует Neo4j (графовая БД на JVM). На типичных машинах это означает:

| Компонент | 🐘 Стек Neo4j | 🦎 Lite (Memgraph) | 💰 Экономия | |:----------|:----------:|:---------------:|:--------:| | Графовая БД | 1200 -- 1500 МБ | 100 -- 500 МБ | 3 -- 5x | | 1 MCP-сервис | 200 -- 400 МБ | 80 -- 150 МБ | 2 -- 3x | | 2 проекта + БД | ~2500 МБ | ~600 -- 1000 МБ | 2.5x | | 5 проектов + БД | ~3500 МБ | ~1000 -- 1500 МБ | 2.5x |

⏱️ Скорость запуска

| Этап | 🐘 Стек Neo4j | 🦎 Lite | |:-----|:----------:|:----:| | БД готова | 30 -- 45 сек | 2 -- 5 сек ⚡ | | Загрузка маленькой конфигурации (361 объект) | ~30 сек | 6 сек ⚡ | | Загрузка большой конфигурации (8000+ объектов) | 5 -- 20 мин | 1 -- 3 мин ⚡ | | MCP-сервер принимает запросы | после полной загрузки | мгновенно 🎯 |

🛡️ Стабильность

| Проблема | 🐘 Стек Neo4j | 🦎 Lite | |:---------|:----------:|:----:| | JVM crash (assembler_x86.cpp) | Бывает на некоторых хостах 😵 | Нет JVM вообще ✅ | | docker stop зависает после краша | Часто 😤 | Никогда ✅ | | Transaction timeout при нагрузке | При загрузке 5 сервисов 💥 | Нет (нативный C++) ✅ | | Требуется -Xint (без JIT) | Да, замедляет всё 🐢 | Не нужен ✅ | | Строгий порядок запуска обязателен | Да, поэтапно 😰 | Нет, можно все сразу ✅ |


🏗️ Архитектура

                  Memgraph (bolt://7687)
                        |
       +--------+-------+-------+--------+
       |        |       |       |        |
   erp_main  erp_ext  ssl3  do_main  do_ext
    :6001     :6002   :6003  :6004   :6005
       (Python FastMCP, SSE транспорт)
  • 🗄️ Memgraph -- графовая БД (Bolt-протокол, Cypher-запросы, совместима с Neo4j-драйвером)
  • 🐍 MCP-сервисы -- Python 3.12 + FastMCP, SSE-транспорт
  • 🔒 Все проекты используют один Memgraph, изолированы по project_name

🚀 Быстрый старт

1️⃣ Подготовьте данные

Каждому проекту нужна директория с:

ваш-проект/
  metadata/
    ОтчетПоКонфигурации.txt     # Отчет по конфигурации (UTF-16 или UTF-8)
  code/
    ConfigDumpInfo.xml            # GUID-маппинг (опционально)
    ОбщиеМодули/                  # BSL исходники
    Справочники/
    Документы/
    ...

📋 Экспорт отчёта по конфигурации из Конфигуратора 1С: Конфигурация -> Отчёт по конфигурации (выбрать все объекты, сохранить как .txt)

2️⃣ Укажите путь к данным

Отредактируйте lite/docker-compose.yml -- замените /path/to/erp_main на реальный путь:

volumes:
  - /path/to/erp_main:/app/data

⚠️ Для Windows: используйте локальные пути типа C:\1c-data\erp_main, НЕ UNC-пути.

3️⃣ Запуск

cd lite/
docker compose up -d

✅ Всё! Memgraph стартует за ~3 секунды, MCP-сервер начинает принимать запросы мгновенно, данные загружаются в фоне.

4️⃣ Проверка

# 👀 Проверить что контейнеры запущены
docker ps

# 🔍 Тест SSE-эндпоинта (ожидаемый ответ: 200)
curl -s -o /dev/null -w "%{http_code}" http://localhost:6001/sse --max-time 5

🔌 Подключение к AI-ассистенту

🤖 Claude Code

claude mcp add erp_main --transport sse http://localhost:6001/sse

Или в ~/.claude/settings.json:

{
  "mcpServers": {
    "erp_main": { "type": "sse", "url": "http://localhost:6001/sse" }
  }
}

🖱️ Cursor / Windsurf / другие MCP-клиенты

SSE-эндпоинт: http://localhost:6001/sse


🛠️ MCP-инструменты

🔎 search_metadata -- 57 операций

Основной инструмент. Принимает JSON с полем "op":

{"op": "list_categories"}
{"op": "list_objects_by_name", "name": "Контрагенты"}
{"op": "object_structure", "name": "ДокументыПредприятия"}
{"op": "list_attributes_with_type", "name": "АМЕ_ДоговорыКонтрагентов"}
{"op": "find_routines_by_name", "name": "ОтправитьЗапрос"}
{"op": "get_routine_body", "id": "do_ext/АМЕ/CommonModules/КоннекторHTTP.ОтправитьЗапрос"}
{"op": "find_usages_of_object", "name": "Контрагенты"}
📜 Полный список операций (нажмите чтобы развернуть)

📦 Объекты и категории | Операция | Описание | |----------|----------| | list_categories | Список всех категорий метаданных | | list_objects_by_category | Объекты в категории | | list_objects_by_name | Поиск объектов по имени (CONTAINS) | | object_structure | Полная карточка объекта: реквизиты, формы, ссылки | | resolve_qn | Разрешить квалифицированное имя в узел | | resolve_qn_prefix | Поиск узлов по префиксу QN | | find_by_guid | Поиск узла по GUID | | get_node_properties | Все свойства узла |

📝 Реквизиты и структура | Операция | Описание | |----------|----------| | list_attributes / list_attributes_with_type | Реквизиты объекта с типами | | list_resources / list_resources_with_type | Ресурсы регистра | | list_dimensions / list_dimensions_with_type | Измерения регистра | | list_characteristics / list_characteristics_with_type | Характеристики | | list_tabular_parts | Табличные части | | list_tabular_attributes | Реквизиты табличной части | | find_objects_with_tabular | Объекты с определённой табличной частью | | find_objects_by_attribute_in_tabular | Поиск по реквизиту в табличной части |

🖥️ Формы | Операция | Описание | |----------|----------| | list_forms | Формы объекта | | list_form_controls | Элементы формы | | list_form_events / list_form_event_handlers | События формы | | list_form_attributes_of_form | Реквизиты формы | | list_form_commands | Команды формы (кнопки) | | list_form_bindings | Привязки элементов к реквизитам | | find_controls_bound_to | Элементы привязанные к реквизиту | | get_default_forms | Основные формы |

⚙️ Команды и макеты | Операция | Описание | |----------|----------| | list_commands | Команды объекта | | list_layouts | Макеты объекта |

💻 Модули и код | Операция | Описание | |----------|----------| | list_modules_of_owner | Модули объекта | | list_module_routines | Процедуры/функции модуля | | list_common_module_routines | Процедуры общего модуля | | list_exported_routines | Экспортные процедуры | | get_routine_body | Полный исходный код процедуры | | find_routines_by_name | Поиск процедур по имени | | find_routines_by_signature | Поиск по тексту сигнатуры | | find_unused_routines | Неиспользуемые процедуры |

🔀 Граф вызовов | Операция | Описание | |----------|----------| | list_callers_of_routine | Кто вызывает процедуру | | list_callees_of_routine | Что вызывает процедура | | call_graph_subtree | Дерево вызовов (глубина 1-3) | | find_calls_between_owners | Вызовы между двумя модулями/объектами |

📌 Перечисления и предопределённые | Операция | Описание | |----------|----------| | list_enum_values | Значения перечисления | | list_predefined_of_object | Предопределённые элементы | | find_predefined_by_name_in_object | Поиск предопределённого по имени | | find_predefined_by_flag | Поиск по признаку папка/элемент |

🔐 Роли и доступ | Операция | Описание | |----------|----------| | list_roles_with_access_to_target | Роли с доступом к объекту | | list_access_targets_of_role | Объекты доступные роли | | get_access_of_role_to_target | Конкретные права роли на объект |

🔗 Перекрёстные ссылки | Операция | Описание | |----------|----------| | find_usages_of_object | Кто ссылается на объект (через типы) | | find_objects_using_object | На что ссылается объект | | find_documents_making_movements_into_register | Документы делающие движения в регистр | | find_journals_by_graph | Графы журналов |

🌐 События и HTTP | Операция | Описание | |----------|----------| | list_event_subscriptions | Все подписки на события | | list_event_subscriptions_of_object | Подписки для объекта | | list_http_services | HTTP-сервисы | | list_url_templates_of_service | URL-шаблоны | | list_url_methods_of_template | HTTP-методы |

💻 search_code -- поиск по BSL-коду

{"op": "find_routines_by_description", "text": "HTTP", "export": true}
{"op": "get_routine_body", "name": "ВыполнитьЗапрос"}

🔍 search_metadata_by_description -- полнотекстовый поиск

{"text": "премия"}
{"text": "контрагент", "category": "Справочники"}

➕ Добавление новых проектов

Скопируйте блок сервиса в lite/docker-compose.yml:

1c-metacode-ssl3:
  image: svhov/1c-metacode-lite
  build: ./mcp-service
  restart: unless-stopped
  ports:
    - "6003:6001"                         # уникальный порт на хосте
  volumes:
    - /path/to/ssl3:/app/data             # ваши данные
  environment:
    - PROJECT_NAME=ssl3                   # уникальное имя
    - MEMGRAPH_URI=bolt://memgraph:7687
    - MCP_PORT=6001
    - FULL_METADATA_RELOAD=true
  depends_on:
    memgraph:
      condition: service_healthy

⚙️ Конфигурация

| Переменная | Описание | По умолчанию | |------------|----------|:------------:| | PROJECT_NAME | Уникальный идентификатор проекта | default | | MEMGRAPH_URI | Bolt URI для Memgraph | bolt://localhost:7687 | | MCP_PORT | Порт MCP-сервера внутри контейнера | 6001 | | FULL_METADATA_RELOAD | Очистить и перезагрузить все данные при старте | false | | LOAD_BSL_SIGNATURES | Парсить .bsl файлы (процедуры/функции) | true | | LOAD_FORMS_FROM_XML | Парсить файлы Form.xml | true | | LOAD_PREDEFINED_VALUES | Парсить предопределённые элементы | true | | LOAD_ROLE_RIGHTS | Парсить права ролей | true |


🧬 Модель графа

Project
  +-- Configuration
        +-- MetadataCategory
              +-- MetadataObject
                    |-- Attribute (с type_info)
                    |-- Resource
                    |-- Dimension
                    |-- TabularPart
                    |     +-- Attribute
                    |-- Form
                    |     |-- FormControl --BINDS_TO--> FormAttribute
                    |     +-- FormEvent
                    |-- EnumValue
                    |-- PredefinedItem
                    |-- Command
                    |-- Layout
                    +-- Module
                          +-- Routine --CALLS--> Routine

MetadataObject --USED_IN--> MetadataObject
MetadataObject --GRANTS_ACCESS_TO--> MetadataObject (роли)

⚠️ Известные ограничения

  • 🚫 Нет векторного/embedding поиска -- только шаблонные запросы, LLM не нужен
  • 🚫 Нет запросов на естественном языке -- только JSON-операции (by design: ноль внешних зависимостей)
  • 🔤 Поиск по кириллице -- toLower() в Memgraph не работает с кириллицей; поиск использует множественные варианты регистра из Python
  • 🔗 USED_IN связи строятся только из типов реквизитов (СправочникСсылка.X), не из всех возможных ссылок

👥 Участники

svhov
Сухов Андрей

🎯 Автор проекта
Claude
Claude (Anthropic)

🤖 AI co-author
jlowin
Jeremiah Lowin

⚡ Автор FastMCP

📄 Лицензия

MIT


💳 Поддержать проект

Если проект оказался полезен, можете поддержать автора 🙏

| 🏦 Сбербанк | 2202 2054 0027 9540 | |:---------|:----------------------| | 👤 Получатель | Сухов Андрей Евгеньевич |


YouTube    ⭐ Если проект полезен — поставьте звезду!

Quick Setup
Installation guide for this server

Install Package (if required)

uvx 1c-metacode-lite-mcp

Cursor configuration (mcp.json)

{ "mcpServers": { "svhov-1c-metacode-lite-mcp": { "command": "uvx", "args": [ "1c-metacode-lite-mcp" ] } } }