MCP для ИИ-инструментов¶
MCP (Model Context Protocol) — протокол, через который среда разработки или ИИ-агент получает доступ к внешним инструментам и источникам данных.
Для v8std.ru MCP-сервер дает агенту структурированный доступ к стандартам,
диагностикам и связям между ними. Вместо того чтобы искать страницы через браузер,
агент вызывает методы MCP: ищет стандарт, получает страницу по идентификатору,
переходит к связанным диагностикам или объясняет предупреждение анализатора.
Основной сценарий — совместная работа с локальными инструментами анализа кода,
например с bsl-analyzer
или BSL Language Server:
- локальный анализатор проверяет исходный код проекта и находит диагностику;
- агент запрашивает в MCP описание диагностики и связанные стандарты;
- агент предлагает исправление с учетом причины нарушения, а не только текста предупреждения.
MCP-сервер v8std не анализирует исходный код пользователя и не принимает файлы
конфигурации. Он работает как read-only банк знаний по публичным материалам сайта.
Подключение готового сервиса¶
Публичный MCP-сервер доступен по адресу:
Подключение к Codex:
Подключение к Claude Code:
Проверочные endpoint'ы:
Готовый сервис использует опубликованный индекс сайта и подходит для обычной работы в IDE: поиск стандартов, объяснение диагностики, подбор связанных страниц.
Локальный запуск¶
Локальный вариант нужен, если требуется полностью автономный запуск по файлам репозитория или нужно проверить изменения сайта до публикации.
git clone https://github.com/zeegin/v8std.git
cd v8std
docker compose -f docker-compose/docker-compose.yml up -d v8std-mcp
MCP будет доступен локально:
Подключение к Codex:
Подключение к Claude Code:
Локальный контейнер монтирует репозиторий в /docs и читает файлы
/docs/docs/ai/pages.jsonl и /docs/docs/ai/search-vectors.jsonl.
При V8STD_MCP_GENERATE_INDEX=auto индекс и векторы генерируются при старте
контейнера, если файлы отсутствуют.
Полезные команды:
curl http://127.0.0.1:8765/healthz
docker logs v8std-mcp
docker compose -f docker-compose/docker-compose.yml restart v8std-mcp
Инструменты MCP¶
v8std.search¶
Ищет страницы гибридным ранжированием: точные алиасы и коды диагностик, BM25 по заголовкам и тексту, статический векторный индекс и доменные правила.
Подходит для сценариев:
- найти стандарт по
std437,#std437,стандарт 437; - найти диагностику по
acc:1245,апк 1245,AssignAliasFieldsInQuery; - найти материалы по теме:
запросы,регламентные задания,права; - найти смысловой запрос:
форма не должна содержать бизнес-логику и доступ к данным; - разобрать кодовый фрагмент:
Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ ...").
Основные параметры:
| Параметр | Назначение |
|---|---|
query |
Строка поиска |
types |
Необязательный список типов: standard, diagnostic, pattern, service |
mode |
hybrid, exact, bm25 или semantic |
limit |
Количество результатов, не больше 50 |
v8std.page¶
Возвращает страницу по идентификатору, алиасу, пути или URL.
Подходит для сценариев:
- получить полный текст стандарта перед исправлением кода;
- открыть Markdown-версию страницы по HTML-ссылке;
- получить описание диагностики по точному коду.
Основные параметры:
| Параметр | Назначение |
|---|---|
id_or_alias_or_url |
Идентификатор, алиас, путь, HTML URL или Markdown URL |
body_limit |
Ограничение размера возвращаемого Markdown |
v8std.related¶
Возвращает связанные стандарты, диагностики и проверки EDT.
Подходит для сценариев:
- от стандарта перейти к диагностике анализатора;
- от диагностики перейти к стандарту, объясняющему причину;
- собрать контекст для code review или автоисправления.
Основные параметры:
| Параметр | Назначение |
|---|---|
id_or_alias_or_url |
Исходная страница |
relations |
Необязательный список связей, например standard, diagnostic, edt_check |
limit |
Количество связей |
v8std.explain_snippet¶
Разбирает короткий фрагмент BSL/SDBL и возвращает распознанные токены, сигналы, вероятные диагностики, стандарты и confidence.
Подходит для сценариев:
- передать
Запрос = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ ...")и получитьstd415; - передать
ОткрытьФормуМодально,Предупреждение,Вопроси получитьbslls:UsingModalWindows; - отделить кодовые токены от обычного текстового поиска.
Основные параметры:
| Параметр | Назначение |
|---|---|
snippet |
Фрагмент кода до 4000 символов |
language |
auto, bsl или sdbl |
limit |
Количество вероятных страниц |
v8std.explain_diagnostics¶
Объясняет список диагностик и группирует связанные стандарты.
Подходит для сценариев:
- после запуска
bsl-analyzerобъяснить пачку предупреждений; - сгруппировать отчет BSL Language Server по стандартам;
- выбрать исправления, которые устраняют причины нарушений.
Основные параметры:
| Параметр | Назначение |
|---|---|
codes |
Список кодов: acc 1245, bslls:AssignAliasFieldsInQuery, v8cs:...; максимум 500 |
Файлы для ИИ-инструментов¶
Сайт генерирует несколько статических файлов, которые можно использовать без MCP.
| Файл | Назначение |
|---|---|
/llms.txt |
Компактная карта сайта: разделы, страницы, ссылки на корпус и индекс |
/llms-full.txt |
Полный очищенный Markdown-корпус страниц без front matter и служебной разметки темы |
/ai/pages.jsonl |
Машинный JSONL-индекс страниц, алиасов, связей, источников и очищенного Markdown |
/ai/search-vectors.jsonl |
Статический векторный индекс для semantic-слоя MCP |
/*.md |
Очищенная Markdown-версия публичной страницы по исходному пути, например /std/437.md |
/ai/pages.jsonl является основным источником данных для MCP. Каждая строка —
отдельная страница со следующими полями:
| Поле | Назначение |
|---|---|
id |
Стабильный идентификатор: std437, acc:1245, bslls:AssignAliasFieldsInQuery |
type |
Тип страницы: standard, diagnostic, pattern, service |
title |
Заголовок страницы |
description |
Краткое описание |
url |
Канонический HTML URL |
markdown_url |
URL очищенной Markdown-версии |
source_path |
Исходный путь страницы в репозитории |
aliases |
Поисковые алиасы и варианты записи идентификатора |
related |
Связанные стандарты, диагностики и проверки |
source_urls |
Внешние источники страницы |
body_markdown |
Очищенное содержимое страницы |
/ai/search-vectors.jsonl строится из pages.jsonl. MCP читает этот файл как
готовый read-only индекс; если файл временно недоступен, сервер продолжает
работать через точные правила и BM25, а /healthz показывает
semantic_enabled: false.
Через MCP resources доступны:
Страницы с front matter llms.ignore: true исключаются из /llms.txt,
/llms-full.txt и /ai/pages.jsonl, но остаются обычными страницами сайта.
Детали для разработчиков¶
Код локального MCP находится в репозитории:
| Файл | Назначение |
|---|---|
scripts/v8std_mcp_index.py |
Загрузка индекса, нормализация алиасов, поиск, связи |
scripts/v8std_mcp_server.py |
HTTP MCP-сервер и регистрация инструментов |
scripts/generate_search_vectors.py |
Генерация статического векторного индекса |
scripts/search_benchmark.py |
Регрессионный benchmark поиска |
scripts/run_v8std_mcp.sh |
Docker-entrypoint для автономного локального запуска |
retrieval-rules.yml |
Доменные алиасы, синонимы и code-aware mappings |
requirements-mcp.txt |
Зависимости MCP-сервера |
tests/test_v8std_mcp_index.py |
Unit-тесты поиска и нормализации |
Переменные локального Docker-запуска:
| Переменная | Значение по умолчанию | Назначение |
|---|---|---|
V8STD_MCP_PAGES |
/docs/docs/ai/pages.jsonl |
Локальный JSONL-индекс |
V8STD_MCP_VECTORS |
/docs/docs/ai/search-vectors.jsonl |
Локальный векторный индекс |
V8STD_MCP_GENERATE_INDEX |
auto |
auto генерирует индекс только при отсутствии файла, always всегда обновляет |
V8STD_MCP_HOST |
0.0.0.0 |
Адрес, на котором слушает контейнер |
V8STD_MCP_PORT |
8765 |
Порт MCP-сервера |
V8STD_MCP_PATH |
/mcp |
HTTP path MCP endpoint'а |
Локальная проверка MCP без Docker:
python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt -r requirements-mcp.txt
python scripts/generate_ai_artifacts.py
python scripts/generate_search_vectors.py
python scripts/v8std_mcp_server.py \
--pages docs/ai/pages.jsonl \
--vectors docs/ai/search-vectors.jsonl \
--host 127.0.0.1 \
--port 8765
Проверка качества поиска:
MCP-сервер intentionally read-only: он не изменяет код пользователя, не запускает
анализаторы и не принимает исходники. Для анализа проекта подключайте локальный
bsl-analyzer или другой анализатор
отдельным инструментом, а v8std используйте как источник стандартов,
связей и объяснений.