mcp-bsl-platform-help-context

mcp
Security Audit
Pass
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
Purpose
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.
SUMMARY

MCP-сервер: документация API платформы 1С, строгая типизация BSL, стандарты кода. Keyword, semantic и hybrid поиск для AI-ассистентов.

README.md

MCP BSL Platform Help Context

SafeSkill 92/100

MCP-сервер для доступа к документации API платформы 1С:Предприятие

Python
License
MCP

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-пайплайн: DocumentBuilderEmbeddingProvider → 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 стратегии с приоритетами:

  1. CompoundTypeSearch — составные имена типов ("Справочник Объект" → "СправочникОбъект")
  2. TypeMemberSearch — паттерн "Тип.Член" ("ТаблицаЗначений Добавить")
  3. RegularSearch — прямой lookup по индексам (точное совпадение + префикс)
  4. 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-сервера рекомендуется:

  1. Начинайте с search для нахождения нужных элементов API. Используйте конкретные термины 1С, а не общие описания.

  2. Уточняйте через info — после нахождения нужного элемента получите полную документацию по точному имени.

  3. Навигация по типам: используйте get_members для обзора всех методов/свойств типа, затем get_member для конкретного.

  4. Конструкторы: если нужно создать объект, используйте get_constructors для получения сигнатур.

  5. Строгая типизация: для вопросов о типизации BSL используйте get_strict_typing_info (сначала topic='topics' для списка тем).

  6. Стиль кода: get_coding_guideline содержит полные рекомендации по написанию кода 1С.

  7. Режимы поиска:

    • keyword — быстрый, для точных имён API (НайтиПоСсылке, ValueTable)
    • semantic — для запросов на естественном языке ("как добавить строку в таблицу")
    • hybrid — лучшее качество, комбинирует оба подхода
  8. Версии платформы: 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).

Благодарности

Лицензия

MIT

Reviews (0)

No results found