Skip to main content
Glama
tarun-km

hydris-diagnostic-mcp

by tarun-km

hydris-mcp-integration

Hydris Pulse Bridge трек, Рабочий элемент 1: скелет диагностического MCP-сервера, который будет находиться в lite/diagnostic_mcp/ внутри монорепозитория Lite. Он реализует BRIDGE-2 (авторизация фабрики по вызову), BRIDGE-5 (аудит-логирование по вызову) и NFR-4 (безопасность), а также структурно обеспечивает BRIDGE-1 (набор инструментов только для чтения).

См. docs/scope.md для точного описания того, что здесь построено, а что нет, и docs/decisions.md для решений по открытым вопросам (задержка отзыва, поведение при сбое аудита-приемника, форма ошибки без утечки, схема версионирования набора инструментов), по которым этот скелет занял позицию в ожидании ратификации Нематуллы.

Архитектура

  • Два субъекта, раздельные (diagnostic_mcp/auth/): JWT сервисного принципала (области только для чтения, проверяется независимо) и JWT контекста пользователя для каждого вызова. Сервисный токен никогда не расширяет доступ.

  • Один конвейер для каждого вызова (diagnostic_mcp/registry/pipeline.py): аутентификация обоих субъектов, проверка аргументов, проверка активного разрешения фабрики пользователя (без кэширования), диспетчеризация, аудит-логирование результата — успех, отклонение или ошибка — каждый раз.

  • Шлюз только для чтения на этапе регистрации (diagnostic_mcp/registry/tool_registry.py): инструмент без classification="read_only" или без обязательного аргумента factory_id отклоняется при регистрации, а не при вызове.

  • FastMCP для объявления схемы, одно переопределение для диспетчеризации (diagnostic_mcp/server.py): tools/list поступает от FastMCP как обычно; tools/call перехватывается один раз, на низкоуровневом сервере, так что каждый инструмент — настоящий или будущий — проходит через один и тот же конвейер без шаблонного кода для каждого инструмента.

  • Один демонстрационный инструмент, get_plant_overview (diagnostic_mcp/tools/plant_overview.py), работающий на основе заглушки в памяти слоя чтения Lite, заполненной точными фикстурами, указанными в исходных документах (u-ops-alpha предоставлен fx-mbr-01; u-ops-beta предоставлен fx-beta-01).

Related MCP server: system-monitor

Быстрый старт

python -m venv .venv
.venv/Scripts/pip install -e ".[dev]"      # .venv/bin/pip on macOS/Linux
cp .env.example .env                        # then edit the two secrets

Запустите сервер:

set -a; source .env; set +a                 # or export the vars another way
python -m diagnostic_mcp.server

По умолчанию он слушает streamable-http на http://127.0.0.1:8765/mcp.

Проверка от начала до конца

pytest -v            # includes a real streamable-HTTP client/server round trip
ruff check .
mypy diagnostic_mcp tests
python scripts/check_no_write_imports.py

Чтобы вручную вызвать работающий сервер с официальным MCP-клиентом, создайте сервисный токен и токен контекста пользователя с теми же секретами, с которыми работает сервер:

from diagnostic_mcp.auth.service_principal import issue_service_token
from diagnostic_mcp.auth.user_context import issue_user_context_token

service_token = issue_service_token("<LITE_MCP_SERVICE_TOKEN_SECRET>")
user_token = issue_user_context_token("<LITE_MCP_USER_CONTEXT_SECRET>", "u-ops-alpha", "org-alpha")
print(f"Authorization: Bearer {service_token}")
print(f"X-Pulse-User-Context: {user_token}")

Затем вызовите get_plant_overview с factory_id=fx-mbr-01 (разрешено — успех) или factory_id=fx-beta-01 (не разрешено — отклонено, и обе попытки попадают в audit.jsonl).

Критерии завершения рабочего элемента 1

Пункт

Статус

MCP-сервер зарегистрирован в процессе, доступен через streamable-HTTP

Готово

Реестр инструментов с классификацией только для чтения, отклоняющий несоответствующую регистрацию при запуске

Готово

Сервисный принципал выпущен с областями только для чтения, инвентаризация областей записана для минимального набора из 15 инструментов

Готово — diagnostic_mcp/auth/service_principal.py::MINIMUM_READ_SCOPES

Заголовок контекста пользователя для каждого вызова разобран, разрешения получены, вызов отклонен до использования сервисного токена

Готово

Форма ошибки авторизации без утечки согласована и реализована

Готово — см. O3 в docs/decisions.md

Задержка отзыва выбрана и задокументирована

Готово — см. O1 в docs/decisions.md

Аудит-приемник записывает все шесть обязательных полей при успехе, ошибке и отклонении

Готово

Идентификатор сессии Pulse распространяется и записывается для соответствия TC-BRIDGE-5.3

Готово — заголовок X-Pulse-Session-Id

Поведение при сбое аудита-приемника согласовано с Нематуллой и реализовано

Предложено, ожидает ратификации — см. O2

CI-проверка запрета записи активна в репозитории Lite

Только временная — см. docs/scope.md

Секреты извлекаются из управляемого хранилища, TLS включен на слушателе

Секреты: готово (прослойка env-var). TLS: вопрос инфраструктуры, см. docs/scope.md

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides secure, read-only access to the TrakSYS manufacturing analytics platform through entity-based tools and guided investigation prompts. It enables users to interact with manufacturing databases and perform data analysis via natural language.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A secure, read-only MCP server for AI-powered system monitoring. It provides real-time OS metrics, config discovery, and safe log tailing to enable autonomous infrastructure audits without shell access risks.
    4
    1
    ISC
  • A
    license
    Not graded
    quality
    C
    maintenance
    A hardened MCP server exposing read-only orders tools to AI agents, with rigorous input validation and parameterized queries to prevent injection attacks.
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    A read-only MCP server that exposes a materials distributor database with four tools for querying tables, describing schemas, sampling rows, and running SELECT queries, secured by three independent layers to prevent any write operations.
    -