mcp-bsl-platform-help-context
Health Pass
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 10 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
This tool is a Python-based MCP server that provides AI assistants with access to 1C:Enterprise API documentation, strict BSL typing rules, and code standards. It offers keyword, semantic, and hybrid search capabilities to help AI models query platform-specific documentation.
Security Assessment
Overall Risk: Low
The automated code scan checked 12 files and found no dangerous patterns, hardcoded secrets, or requests for risky permissions like executing shell commands. While the server does read local HBK documentation files and supports network-capable transports (SSE and Streamable HTTP), these are standard functions required to serve the documentation to your AI assistant. The tool primarily processes and retrieves text from local data sources rather than interacting with sensitive system files.
Quality Assessment
The project is in active development, with its last push occurring just today. It is licensed under the highly permissive and standard MIT license. Community trust is currently low-to-moderate, as the repository has only 10 GitHub stars, but this is expected for a niche developer tool. It is a Python port of an existing Kotlin/Spring Boot project, which demonstrates a clear, structured architectural intent. The provided README is highly detailed, clearly outlining the available tools, transport options, and configuration modes, which reflects good developer experience and maintenance standards.
Verdict
Safe to use.
MCP-сервер: документация API платформы 1С, строгая типизация BSL, стандарты кода. Keyword, semantic и hybrid поиск для AI-ассистентов.
MCP BSL Platform Help Context
MCP-сервер для доступа к документации API платформы 1С:Предприятие
Python-порт mcp-bsl-platform-context (Kotlin/Spring Boot).
Возможности
- Три режима поиска: keyword (нечёткий), semantic (embeddings + Qdrant), hybrid (оба + RRF-слияние + reranker)
- Детальная информация о типах, методах, свойствах, конструкторах платформы 1С
- Навигация по объектной модели платформы
- Документация по строгой типизации BSL и рекомендации по стилю кода
- Два источника данных: прямое чтение HBK файлов или pre-exported JSON
- Три транспорта: STDIO (для Claude Desktop, Cursor), SSE и Streamable HTTP
- Мультиверсионность: автоматическое обнаружение версий платформы с выбором ближайшей
- YAML-конфигурация с поддержкой переменных окружения и CLI-аргументов
- Двуязычность: русские и английские имена API, поиск регистронезависимый
MCP-инструменты
Поиск и навигация по API
| Инструмент | Описание | Параметры |
|---|---|---|
search |
Поиск по API платформы 1С. Поддерживает keyword, semantic и hybrid режимы. Используйте термины 1С (русские или английские) для лучших результатов | query (строка поиска), mode? (keyword/semantic/hybrid), type? (method/property/type), limit? (1–50, по умолчанию 10) |
info |
Детальная информация о конкретном элементе API по точному имени | name (точное имя, например НайтиПоСсылке), type (method/property/type) |
get_member |
Получить информацию о методе или свойстве конкретного типа | type_name (имя типа), member_name (имя метода/свойства) |
get_members |
Полный список методов и свойств типа | type_name (имя типа, например ТаблицаЗначений) |
get_constructors |
Сигнатуры конструкторов для создания экземпляров типа | type_name (имя типа) |
get_platform_info |
Информация о текущей версии платформы и список доступных версий | — |
Документация и стандарты кода
| Инструмент | Описание | Параметры |
|---|---|---|
get_coding_guideline |
Рекомендации по стилю кода BSL (1С:Предприятие) | — |
get_strict_typing_info |
Документация по строгой типизации BSL. Используйте topic='topics' для списка тем |
topic (название темы или topics) |
search_strict_typing |
Текстовый поиск по документации строгой типизации с контекстом | query (поисковый запрос) |
Режимы поиска
Инструмент search поддерживает три режима (параметр mode, по умолчанию из конфигурации):
| Режим | Движок | Описание |
|---|---|---|
keyword |
SimpleSearchEngine |
4-стратегийный поиск: точное совпадение, префикс, составные имена, порядок слов |
semantic |
SemanticSearchEngine |
Векторный поиск: embedding запроса → ANN в Qdrant → опциональный cross-encoder rerank |
hybrid |
HybridSearchEngine |
Keyword + semantic параллельно → RRF-слияние (k=60) → rerank |
RAG-пайплайн: DocumentBuilder → EmbeddingProvider → Qdrant embedded → Reranker
Модели по умолчанию:
- Embedder:
ai-forever/ru-en-RoSBERTa - Reranker:
DiTy/cross-encoder-russian-msmarco
Провайдеры: local (sentence-transformers) или openai-compatible (любой API в формате OpenAI)
Установка
pip install -e . # Базовая установка (keyword search)
pip install -e ".[dev]" # + pytest для разработки
pip install -e ".[local]" # + sentence-transformers, torch (semantic/hybrid search)
Зависимости
- Python 3.10+
- fastmcp >= 2.0
- beautifulsoup4 >= 4.12
- lxml >= 5.0
- click >= 8.1
- PyYAML >= 6.0
Конфигурация
YAML-файл (рекомендуется)
Скопируйте config.example.yml в config.yml и настройте под своё окружение:
cp config.example.yml config.yml
mcp-bsl-context -c config.yml
Приоритет конфигурации: YAML < переменные окружения (MCP_BSL_*) < CLI-аргументы.
Основные секции: server, platform, search, embeddings, reranker, storage, index, docs.
Параметры CLI
--config, -c Путь к YAML-файлу конфигурации
--platform-path, -p Путь к каталогу установки 1С
--platform-version Предпочтительная версия платформы (e.g., 8.3.20)
--mode, -m Транспорт: stdio (по умолчанию), sse или streamable-http
--port Порт для HTTP-сервера (по умолчанию: 8080)
--data-source Источник данных: hbk или json
--json-path Путь к каталогу с JSON-файлами
--verbose, -v Включить отладочное логирование
Переменные окружения
| CLI-аргумент | Переменная окружения | По умолчанию |
|---|---|---|
--platform-path |
MCP_BSL_PLATFORM_PATH |
(обязателен для hbk) |
--platform-version |
MCP_BSL_PLATFORM_VERSION |
null (авто — последняя) |
--mode |
MCP_BSL_MODE |
stdio |
--port |
MCP_BSL_PORT |
8080 |
--data-source |
MCP_BSL_DATA_SOURCE |
hbk |
--json-path |
MCP_BSL_JSON_PATH |
— |
--verbose |
MCP_BSL_VERBOSE |
false |
--host |
MCP_BSL_HOST |
127.0.0.1 |
| — | MCP_BSL_DOCS_STRICT_TYPES_PATH |
null (встроенный) |
| — | MCP_BSL_DOCS_GUIDELINE_PATH |
null (встроенный) |
Использование
YAML-конфигурация (рекомендуется)
mcp-bsl-context -c config.yml # Полная конфигурация из YAML
mcp-bsl-context -c config.yml -p /opt/1cv8/x86_64 # YAML + CLI override
CLI-параметры
mcp-bsl-context -p /opt/1cv8/x86_64 # Автоопределение последней версии
mcp-bsl-context -p /opt/1cv8/x86_64 --platform-version 8.3.20 # Ближайшая к 8.3.20
mcp-bsl-context -p /path -m streamable-http --port 8080 # Streamable HTTP транспорт
mcp-bsl-context -p /path --data-source json --json-path /path # JSON источник
Интеграция
Claude Desktop
Добавьте в claude_desktop_config.json:
{
"mcpServers": {
"bsl-context": {
"command": "python",
"args": ["-m", "mcp_bsl_context", "-p", "/opt/1cv8/x86_64/8.3.25.1257"]
}
}
}
Cursor IDE
Добавьте в .cursor/mcp.json:
{
"mcpServers": {
"bsl-context": {
"command": "python",
"args": ["-m", "mcp_bsl_context", "-p", "C:\\Program Files\\1cv8\\8.3.25.1257"]
}
}
}
Мультиверсионный режим
Укажите путь к родительскому каталогу, и сервер автоматически найдёт все установленные версии:
# Linux: /opt/1cv8/x86_64 содержит 8.3.22.2838/, 8.3.25.1257/, ...
mcp-bsl-context -p /opt/1cv8/x86_64
# Выбрать конкретную версию (будет найдена ближайшая доступная)
mcp-bsl-context -p /opt/1cv8/x86_64 --platform-version 8.3.20
Streamable HTTP (рекомендуется для сетевого доступа)
Streamable HTTP — актуальный HTTP-транспорт в спецификации MCP, заменяющий устаревший SSE. Основные отличия:
- Единый эндпоинт
/mcpвместо двух (/sse+/messages) — проще настройка и проксирование - Stateless-режим — каждый запрос самодостаточен, не требуется держать долгоживущее SSE-соединение
- Лучше для production — корректно работает за reverse proxy, load balancer, в Kubernetes
mcp-bsl-context -p /opt/1cv8/x86_64/8.3.25.1257 -m streamable-http --port 8080
Подключение клиента:
{
"mcpServers": {
"bsl-context": {
"url": "http://localhost:8080/mcp"
}
}
}
Примечание: SSE-режим (
-m sse) по-прежнему поддерживается для обратной совместимости.
Docker
Docker Compose
В docker-compose.yml нужно указать путь к каталогу установки платформы 1С, в котором находится файл shcntx_ru.hbk.
volumes:
# Linux:
- /opt/1cv8/x86_64/8.3.25.1257:/data/platform:ro
# Windows (Docker Desktop):
# - "C:/Program Files/1cv8/8.3.25.1257:/data/platform:ro"
docker compose up -d # CPU + API providers
docker compose --profile gpu up -d # GPU + локальные модели
docker compose --profile json up -d # JSON data source
Ручная сборка
docker build -t mcp-bsl-context .
# HBK-данные
docker run -d \
-v /opt/1cv8/x86_64/8.3.25.1257:/data/platform:ro \
-p 8080:8080 \
mcp-bsl-context
# JSON-данные
docker run -d \
-e MCP_BSL_DATA_SOURCE=json \
-v ./json-data:/data/json:ro \
-p 8080:8080 \
mcp-bsl-context
Проверка здоровья
docker inspect --format='{{.State.Health.Status}}' mcp-bsl-context
Архитектура
mcp_bsl_context/
├── config.py # AppConfig — YAML + env + CLI merge
├── domain/ # Доменный слой (все dataclasses frozen)
│ ├── entities.py # Definition, MethodDefinition, PropertyDefinition, PlatformTypeDefinition
│ ├── enums.py # ApiType (METHOD, PROPERTY, TYPE, CONSTRUCTOR)
│ ├── exceptions.py # Иерархия исключений
│ ├── value_objects.py # SearchQuery, SearchOptions, PlatformVersion
│ ├── services.py # ContextSearchService
│ └── docs_service.py # DocsInfoService (строгая типизация, guideline)
│
├── infrastructure/
│ ├── hbk/ # Парсер бинарного формата HBK
│ │ ├── container_reader.py # Бинарный контейнер
│ │ ├── content_reader.py # ZIP-распаковка, TOC + FileStorage
│ │ ├── context_reader.py # Оркестратор чтения
│ │ ├── pages_visitor.py # Visitor: обход дерева страниц
│ │ ├── toc/ # TOC: токенизатор, парсер, дерево
│ │ └── parsers/ # HTML-парсеры страниц (BeautifulSoup)
│ │
│ ├── json_loader/ # Альтернативный источник: JSON
│ ├── search/ # Поисковые движки
│ │ ├── indexes.py # HashIndex, StartWithIndex
│ │ ├── strategies.py # 4 стратегии keyword-поиска
│ │ ├── engine.py # SimpleSearchEngine (keyword)
│ │ ├── semantic_engine.py # SemanticSearchEngine (Qdrant + embeddings)
│ │ └── hybrid_engine.py # HybridSearchEngine (RRF + rerank)
│ │
│ ├── embeddings/ # ML-модели
│ │ ├── provider.py # EmbeddingProvider (local/API)
│ │ ├── reranker.py # Reranker (cross-encoder, local/API)
│ │ └── document_builder.py # Entities → embeddable text + Qdrant payload
│ │
│ └── storage/ # Хранилище и репозиторий
│ ├── storage.py # PlatformContextStorage (thread-safe, lazy)
│ ├── repository.py # PlatformRepository (фасад)
│ ├── loader.py # PlatformContextLoader
│ ├── mapper.py # Маппинг сущностей
│ └── version_discovery.py # VersionDiscovery (мультиверсионность)
│
├── presentation/
│ └── formatter.py # Markdown-форматтер для MCP-ответов
│
├── docinfo/ # Встроенная документация
│ ├── strict-types.md # Строгая типизация BSL
│ └── guideline.md # Рекомендации по стилю кода
│
├── server.py # FastMCP сервер (9 инструментов)
└── __main__.py # CLI (click) + YAML config
Поисковый движок (keyword)
4 стратегии с приоритетами:
- CompoundTypeSearch — составные имена типов ("Справочник Объект" → "СправочникОбъект")
- TypeMemberSearch — паттерн "Тип.Член" ("ТаблицаЗначений Добавить")
- RegularSearch — прямой lookup по индексам (точное совпадение + префикс)
- WordOrderSearch — поиск по вхождению отдельных слов
Семантический поиск
- Embedding запроса через
ai-forever/ru-en-RoSBERTa(или API-провайдер) - ANN-поиск в Qdrant embedded (in-process, данные на диске)
- Reranking результатов cross-encoder (
DiTy/cross-encoder-russian-msmarco) - Ленивая инициализация: модели загружаются при первом semantic/hybrid запросе
Инструкции для AI-ассистентов
При использовании этого MCP-сервера рекомендуется:
Начинайте с
searchдля нахождения нужных элементов API. Используйте конкретные термины 1С, а не общие описания.Уточняйте через
info— после нахождения нужного элемента получите полную документацию по точному имени.Навигация по типам: используйте
get_membersдля обзора всех методов/свойств типа, затемget_memberдля конкретного.Конструкторы: если нужно создать объект, используйте
get_constructorsдля получения сигнатур.Строгая типизация: для вопросов о типизации BSL используйте
get_strict_typing_info(сначалаtopic='topics'для списка тем).Стиль кода:
get_coding_guidelineсодержит полные рекомендации по написанию кода 1С.Режимы поиска:
keyword— быстрый, для точных имён API (НайтиПоСсылке, ValueTable)semantic— для запросов на естественном языке ("как добавить строку в таблицу")hybrid— лучшее качество, комбинирует оба подхода
Версии платформы:
get_platform_infoпокажет текущую версию и доступные.
Тестирование
pip install -e ".[dev]"
pytest -v # Все тесты (306)
pytest -v tests/test_search_engine.py # Один модуль
pytest -v tests/test_search_engine.py::test_name # Один тест
Источник данных
Сервер читает файл shcntx_ru.hbk из каталога установки платформы 1С:Предприятие. Это бинарный контейнер, содержащий:
- PackBlock — ZIP с оглавлением в bracket-формате
- FileStorage — ZIP с HTML-страницами документации
Поддерживаются версии HBK до 8.3.27+ включительно (multi-page data chains, изменённые TOC-коды языков, CSS-классы V8SH_heading/V8SH_chapter).
Альтернативно можно использовать pre-exported JSON (через platform-context-exporter).
Благодарности
- alkoleft/mcp-bsl-platform-context — оригинальный Kotlin-проект
- DitriXNew/mcp-bsl-platform-context — развитие оригинального проекта
- Model Context Protocol — спецификация MCP
- FastMCP — Python MCP-фреймворк
Лицензия
MIT
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found