Назначение
Сервис MCP для поиска по метаданным конфигураций 1С (JSON). Подходит, когда ИИ/агенту нужно быстро найти объекты по имени/синониму, например: состав реквизитов, полные имена объектов, связи и т.п.
Где используется
- ИИ-агенты в браузере (расширение MCP SuperAssistant)
- ИИ-агенты в IDE (Cursor, Void и др.)
Сервис разворачивается в Docker или локально (pip/venv).
Быстрый старт (Docker)
PowerShell (Windows):
docker run --rm -it `
-p 8007:8000 `
-v "C:\ERP\Report":/app/metadata_src `
-v "C:\ERP\Report\dist":/app/metadata_dist `
-v "C:\ERP\Report\logs":/app/logs `
-e MCP_PORT=8000 -e MCP_PATH=/mcp `
smirnov0ser/mcp1c_metadata:latest
Минимально достаточно пробросить только metadata_src. Папки metadata_dist и logs можно не монтировать — они будут созданы в контейнере.
Пояснения:
- Внешний порт: 8007 — ваш порт на хосте; контейнер слушает 8000
- metadata_src: каталог с JSON-метаданными конфигураций 1С, полученные обработкой ВыгрузитьМетаданныевJson.epf
- metadata_dist: артефакты компиляции (индекс конфигураций)
- logs: файлы логов сервиса
Пример без дополнительных томов:
docker run --rm -it -p 8007:8000 -v "C:\ERP\Report":/app/metadata_src smirnov0ser/mcp1c_metadata:latest
Локальный запуск (без Docker)
Требуется Python 3.12+.
python -m venv venv
.\venv\\Scripts\\Activate.ps1
python -m pip install -r .\requirements.txt
$env:INPUT_METADATA_DIR = "C:\ERP\Report"
$env:MCP_HOST = "0.0.0.0"
$env:MCP_PORT = "8000"
$env:MCP_PATH = "/mcp"
python .\app\src\main.py
Переменные окружения
- INPUT_METADATA_DIR: путь к исходным JSON с метаданными (по умолчанию
/app/metadata_src) - DIST_METADATA_DIR: путь для артефактов/индексов (по умолчанию
/app/metadata_dist) - MCP_HOST: хост MCP-сервера (по умолчанию
0.0.0.0) - MCP_PORT: порт MCP-сервера (по умолчанию
8000) - MCP_PATH: URL-путь MCP (по умолчанию
/mcp) - USE_SSE:
true|false— транспортsseилиstreamable-http(по умолчаниюfalse→streamable-http) - Логи:
- LOG_LEVEL:
DEBUG|INFO|WARNING|ERROR(по умолчаниюINFO) - LOG_TO_FILE:
true|false(по умолчаниюtrue) - LOG_DIR: каталог логов (по умолчанию
/app/logs) - LOG_ROTATION:
size|daily(по умолчаниюsize) - LOG_MAX_BYTES: размер файла для size-ротации (по умолчанию 10 МБ)
- LOG_BACKUP_COUNT: число резервных файлов (по умолчанию 5)
- LOG_LEVEL:
Метаданные: структура каталогов
- Входные JSON:
INPUT_METADATA_DIR(по умолчанию/app/metadata_src) - Индекс конфигураций: сохраняется в
DIST_METADATA_DIR/metadata_configs_index.json
Поддерживается несколько конфигураций одновременно (несколько JSON-файлов). Сервис строит краткий индекс для быстрых подсказок и поиска.
Инструменты MCP
- metadatasearch(query, find_usages=False, limit=5, config=None)
- query: строка запроса. Рекомендуется полное имя, например
Справочники.Номенклатура - find_usages: зарезервировано под поиск использований (пока не используется)
- limit: ограничение результатов (по умолчанию 5)
- config: выбор конфигурации. Можно указать базовое имя файла без расширения, имя файла с расширением, или значения полей
Имя/Синонимиз индекса
- query: строка запроса. Рекомендуется полное имя, например
Особенности:
- Типы автоматически нормализуются к единственному числу:
Документы.*→Документ.*, суффиксСсылкаобрезается - Если конфигураций несколько и
configне указан, вернётся подсказка со списком доступных
Примеры запросов:
query = "Документы.Счет"
query = "Справочники.Номенклатура"
query = "РегистрСведений.НастройкиПользователя"
Инструкции для ИИ-агентов
Рекомендуемый промпт-инструктаж:
If you use configuration metadata, check its existence and structure using 'metadatasearch'.
Use the full name in service, for example 'Справочники.Номенклатура'. Set limit 1 for the first call.
Use find_usages = true only if you need to find where an object is used.
Пример mcp.json (Cursor/SuperAssistant):
{
"mcpServers": {
"mcp1c_metadata": {
"url": "http://localhost:8007/mcp",
"connection_id": "mcp1c_metadata_001"
}
}
}
Сборка и запуск своего образа
Сборка:
cd C:\mcp1c_metadata
docker build -t mcp1c_metadata:latest .
Запуск собственного образа:
docker run --rm -it -p 8007:8000 -v "C:\ERP\Report":/app/metadata_src mcp1c_metadata:latest
При необходимости используйте тот же синтаксис монтирования
metadata_distиlogs.
Примечания
- На Windows пути с пробелами заключайте в кавычки:
"C:\\Path With Spaces" - Изображение по умолчанию использует Python 3.12-slim; сервер MCP запускается командой
python src/main.py
Metadata
Release files for iflow-mcp_smirnov0ser-mcp1c_metadata 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| iflow_mcp_smirnov0ser_mcp1c_metadata-0.1.0.tar.gz | 14.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| iflow_mcp_smirnov0ser_mcp1c_metadata-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.5 kB
Release files / iflow_mcp_smirnov0ser_mcp1c_metadata-0.1.0.tar.gz
| Download URL | iflow_mcp_smirnov0ser_mcp1c_metadata-0.1.0.tar.gz |
|---|---|
| Size | 14.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b019a121bfb9518ccc77a8441ec2319fb8c5efd2d14f1232efc5d288373248c2
|
|
BLAKE2b-256 checksum How to use checksums |
4a0a0e840c3c81e1396a76c20b90635cdadd0e6d2d3b6d1d92f8bb58e7f6e9c0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / iflow_mcp_smirnov0ser_mcp1c_metadata-0.1.0-py3-none-any.whl
| Download URL | iflow_mcp_smirnov0ser_mcp1c_metadata-0.1.0-py3-none-any.whl |
|---|---|
| Size | 16.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
30e6884268ab5b2a61b09aaa56b1b74206f593b04ef1814a81a9abfc9d075e19
|
|
BLAKE2b-256 checksum How to use checksums |
68e85a285a9ba8cae04985c456e2f2a986e9fcff91b06f268a080145dc55c0c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|