hydris-diagnostic-mcp
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 инструментов | Готово — |
Заголовок контекста пользователя для каждого вызова разобран, разрешения получены, вызов отклонен до использования сервисного токена | Готово |
Форма ошибки авторизации без утечки согласована и реализована | Готово — см. O3 в |
Задержка отзыва выбрана и задокументирована | Готово — см. O1 в |
Аудит-приемник записывает все шесть обязательных полей при успехе, ошибке и отклонении | Готово |
Идентификатор сессии Pulse распространяется и записывается для соответствия TC-BRIDGE-5.3 | Готово — заголовок |
Поведение при сбое аудита-приемника согласовано с Нематуллой и реализовано | Предложено, ожидает ратификации — см. O2 |
CI-проверка запрета записи активна в репозитории Lite | Только временная — см. |
Секреты извлекаются из управляемого хранилища, TLS включен на слушателе | Секреты: готово (прослойка env-var). TLS: вопрос инфраструктуры, см. |
This server cannot be deployed
Maintenance
Related MCP Connectors
Read-only MCP server for AIStatusDashboard status, incidents, metrics, and fallback recommendations.
Guarded MCP server for agent-readable business truth, provenance, readiness, and discovery.
Read-only MCP access to a documented IT fleet: state, changes, posture. 15 tools.
- gatewayOAuthai.sealgate
MCP gateway with runtime security policy, tool-call-level control, and audit of agent actions.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn 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
- AlicenseAqualityDmaintenanceA 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.41ISC
- AlicenseNot gradedqualityCmaintenanceA hardened MCP server exposing read-only orders tools to AI agents, with rigorous input validation and parameterized queries to prevent injection attacks.MIT
- FlicenseNot gradedqualityBmaintenanceA 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.-