hydris-diagnostic-mcp
hydris-mcp-integration
Hydris Pulse Bridge Track, Arbeitspaket 1: das Diagnose-MCP-Server-Skelett, das sich im Lite-Monorepo unter lite/diagnostic_mcp/ befinden wird. Es erfüllt BRIDGE-2 (pro-aufruf-Factory-Autorisierung), BRIDGE-5 (pro-aufruf-Audit-Protokollierung) und NFR-4 (Sicherheit) und erzwingt strukturell BRIDGE-1 (schreibgeschütztes Toolset).
Siehe docs/scope.md für eine genaue Beschreibung dessen, was hier gebaut wird und was nicht, und docs/decisions.md für die offenen Entscheidungen (Widerrufslatenz, Verhalten bei Audit-Sink-Fehlern, die nicht preisgebende Fehlerform, das Toolset-Versionsschema), zu denen dieses Skelett eine Position bezogen hat, in Erwartung der Ratifizierung durch Nematullah.
Architektur
Zwei Identitäten, getrennt gehalten (
diagnostic_mcp/auth/): ein Dienstprinzipal-JWT (schreibgeschützte Bereiche, unabhängig verifiziert) und ein pro-aufruf Benutzerkontext-JWT. Das Diensttoken erweitert niemals den Zugriff.Eine Pipeline für jeden Aufruf (
diagnostic_mcp/registry/pipeline.py): Authentifiziere beide Identitäten, validiere Argumente, prüfe die Live-Factory-Berechtigung des Benutzers (kein Caching), leite weiter, protokolliere das Ergebnis – Erfolg, Ablehnung oder Fehler – jedes Mal.Schreibgeschütztes Tor zur Registrierungszeit (
diagnostic_mcp/registry/tool_registry.py): Ein Tool ohneclassification="read_only"oder ohne ein erforderlichesfactory_id-Argument wird bei der Registrierung abgelehnt, nicht beim Aufruf.FastMCP für Schema-Ankündigung, eine Überschreibung für Dispatch (
diagnostic_mcp/server.py):tools/listkommt wie gewohnt von FastMCP;tools/callwird einmal auf dem Low-Level-Server abgefangen, sodass jedes Tool – gegenwärtig oder zukünftig – dieselbe Pipeline durchläuft, ohne pro-Tool-Boilerplate.Ein Demonstrations-Tool,
get_plant_overview(diagnostic_mcp/tools/plant_overview.py), gestützt durch einen In-Memory-Stub der Lese-Service-Schicht von Lite, befüllt mit den genauen Fixtures, die die Quelldokumente nennen (u-ops-alphagewährtfx-mbr-01;u-ops-betagewährtfx-beta-01).
Related MCP server: system-monitor
Quickstart
python -m venv .venv
.venv/Scripts/pip install -e ".[dev]" # .venv/bin/pip on macOS/Linux
cp .env.example .env # then edit the two secretsServer ausführen:
set -a; source .env; set +a # or export the vars another way
python -m diagnostic_mcp.serverEr hört standardmäßig auf streamable-http unter http://127.0.0.1:8765/mcp.
End-to-End-Überprüfung
pytest -v # includes a real streamable-HTTP client/server round trip
ruff check .
mypy diagnostic_mcp tests
python scripts/check_no_write_imports.pyUm den laufenden Server manuell mit dem offiziellen MCP-Client aufzurufen, erstelle ein Diensttoken und ein Benutzerkontext-Token mit denselben Geheimnissen, mit denen der Server läuft:
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}")Rufe dann get_plant_overview mit factory_id=fx-mbr-01 auf (gewährt – erfolgreich) oder factory_id=fx-beta-01 (nicht gewährt – abgelehnt, und beide Versuche landen in audit.jsonl).
Definition of Done für Arbeitspaket 1
Item | Status |
MCP-Server prozessintern registriert, streamable-HTTP erreichbar | Erledigt |
Tool-Registry mit schreibgeschützter Klassifizierung, lehnt nicht konforme Registrierung beim Start ab | Erledigt |
Dienstprinzipal mit schreibgeschützten Bereichen ausgestellt, Bereichsinventar gegen das 15-Tool-Minimum-Set festgehalten | Erledigt – |
Pro-Aufruf-Benutzerkontext-Header geparst, Berechtigungen aufgelöst, Aufruf abgelehnt bevor das Diensttoken verwendet wird | Erledigt |
Nicht preisgebende Autorisierungsfehlerform vereinbart und implementiert | Erledigt – siehe O3 in |
Widerrufslatenz gewählt und dokumentiert | Erledigt – siehe O1 in |
Audit-Sink schreibt alle sechs vorgeschriebenen Felder bei Erfolg, Fehler und Ablehnung | Erledigt |
Pulse-Sitzungs-ID weitergegeben und aufgezeichnet, für TC-BRIDGE-5.3-Parität | Erledigt – |
Verhalten bei Audit-Sink-Fehler mit Nematullah entschieden und implementiert | Vorgeschlagen, ausstehende Ratifizierung – siehe O2 |
No-Write-CI-Prüfung live im Lite-Repository | Nur Platzhalter – siehe |
Geheimnisse aus dem verwalteten Speicher auflösen, TLS am Listener erzwungen | Geheimnisse: erledigt (Umgebungsvariablen-Schnittstelle). TLS: Infrastrukturthema, siehe |
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.
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 gradedqualityDmaintenanceA hardened MCP server exposing read-only orders tools to AI agents, with rigorous input validation and parameterized queries to prevent injection attacks.MIT
- FlicenseNot gradedqualityCmaintenanceA 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.-