MCP-сервер для локальной документации 1С:Элемент.
xbsl-mcp-docs
xbsl-mcp-docs — MCP-сервер для локальной документации 1С:Элемент.
Сервер индексирует уже подготовленные каталоги документации topics и stdlib, принимает дополнительные пользовательские файлы в md и pdf, а затем отдает поиск и доступ к документам через MCP, браузерный UI и административное HTTP API.
Возможности
- полнотекстовый поиск на
SQLite FTS5 - индексация
html,md,pdf - инкрементальная переиндексация только изменившихся файлов
- встроенный UI для поиска и администрирования
- загрузка
md/pdf, включая кириллические имена файлов - конфигурация источников через переменные окружения
- запуск локально или в Docker
Источники данных
Сервер работает с тремя типами источников:
topics— основная документацияstdlib— справочник по объектной модели и стандартной библиотекеuploads— пользовательские файлы вmdиpdf
Быстрый запуск через Docker
- Перейдите в каталог проекта:
cd xbsl-mcp-docs
- Создайте каталоги для uploads и индекса:
mkdir -p data/uploads data/index
- Создайте
.envна основе .env.example и укажите пути к локальной документации:
HOST=0.0.0.0
PORT=8000
REINDEX_ON_STARTUP=false
TOPICS_HOST_PATH=/absolute/path/to/topics
STDLIB_HOST_PATH=/absolute/path/to/stdlib
UPLOADS_HOST_PATH=./data/uploads
INDEX_HOST_PATH=./data/index
ADMIN_USERNAME=
ADMIN_PASSWORD=
- Запустите сервер:
docker compose up --build -d
- Откройте:
http://127.0.0.1:8000/http://127.0.0.1:8000/uihttp://127.0.0.1:8000/ui/adminhttp://127.0.0.1:8000/health
Остановить сервер:
docker compose down
Локальный запуск без Docker
Требования:
- Python
3.12+ uv
Установка зависимостей:
uv sync --group dev
Запуск:
export TOPICS_ROOT=/absolute/path/to/topics
export STDLIB_ROOT=/absolute/path/to/stdlib
export UPLOADS_ROOT=./data/uploads
export INDEX_DB_PATH=./data/index/docs.db
uv run xbsl-mcp-docs
Конфигурация
Основные переменные окружения:
HOST— адрес привязки, по умолчанию0.0.0.0PORT— HTTP-порт, по умолчанию8000TOPICS_ROOT— путь кtopicsSTDLIB_ROOT— путь кstdlibUPLOADS_ROOT— путь к пользовательским файламINDEX_DB_PATH— путь к SQLite-индексуREINDEX_ON_STARTUP— запускать ли индексацию при стартеADMIN_USERNAME,ADMIN_PASSWORD— optional basic auth для admin-маршрутов
В Docker используются host mount-переменные:
TOPICS_HOST_PATHSTDLIB_HOST_PATHUPLOADS_HOST_PATHINDEX_HOST_PATH
Важно: пути к topics, stdlib и uploads задаются только через переменные окружения или .env.
Если вы меняете их в Docker, обновите .env, перезапустите контейнер и выполните reindex.
Маршруты
MCP
/mcp— Streamable HTTP endpoint для MCP-клиентов/ui/mcp— браузерная страница с пояснением по MCP endpoint
UI
/— главная страница/ui— поиск по документации/ui/admin— администрирование индекса/ui/operations— обзор операций и endpoint’ов
Admin API
GET /healthGET /admin/index/statusPOST /admin/index/rebuildPOST /admin/upload
Примеры запросов
Принудительная переиндексация:
curl -X POST http://127.0.0.1:8000/admin/index/rebuild \
-H 'Content-Type: application/json' \
-d '{"force": true}'
Загрузка markdown или PDF:
curl -X POST 'http://127.0.0.1:8000/admin/upload?reindex=true' \
-F 'file=@notes.md'
Разработка
Проверка кода:
./.venv/bin/ruff check src tests
./.venv/bin/pytest -q
License
MIT