Skip to main content
Glama
hydris-diagnostic-mcp

hydris-diagnostic-mcp

by tarun-km

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 ohne classification="read_only" oder ohne ein erforderliches factory_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/list kommt wie gewohnt von FastMCP; tools/call wird 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-alpha gewährt fx-mbr-01; u-ops-beta gewährt fx-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 secrets

Server ausführen:

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

Er 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.py

Um 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 – diagnostic_mcp/auth/service_principal.py::MINIMUM_READ_SCOPES

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 docs/decisions.md

Widerrufslatenz gewählt und dokumentiert

Erledigt – siehe O1 in docs/decisions.md

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 – X-Pulse-Session-Id-Header

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 docs/scope.md

Geheimnisse aus dem verwalteten Speicher auflösen, TLS am Listener erzwungen

Geheimnisse: erledigt (Umgebungsvariablen-Schnittstelle). TLS: Infrastrukturthema, siehe 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
    D
    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
    C
    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.
    -