Skip to main content
Glama
hydris-diagnostic-mcp

hydris-diagnostic-mcp

by tarun-km

hydris-mcp-integration

Hydris Pulse Bridge トラック、ワークアイテム1:診断用MCPサーバーのスケルトン これはLiteモノレポ内の lite/diagnostic_mcp/ に配置されます。 BRIDGE-2(呼び出しごとのファクトリー認可)、BRIDGE-5(呼び出しごとの監査ログ)、NFR-4(セキュリティ)を実行し、構造的にBRIDGE-1(読み取り専用ツールセット)を強制します。

ここで構築される内容とされない内容の詳細は docs/scope.md を、保留中の決定事項(失効レイテンシ、監査シンク障害時の動作、非漏洩エラー形状、ツールセットバージョンスキーム)については docs/decisions.md を参照してください。このスケルトンはこれらの決定事項に対して立場を取っており、Nematullah の承認を待っています。

アーキテクチャ

  • 二つのIDを分離(diagnostic_mcp/auth/):サービスプリンシパルJWT(読み取り専用スコープ、独立して検証)と呼び出しごとのユーザーコンテキストJWT。サービストークンはアクセスを拡大しません。

  • すべての呼び出しに一つのパイプライン(diagnostic_mcp/registry/pipeline.py):両方のIDを認証し、引数を検証し、ユーザーのライブファクトリー付与(キャッシュなし)を確認し、ディスパッチし、監査ログに結果(成功、拒否、エラー)を毎回記録します。

  • 登録時の読み取り専用ゲート(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

呼び出しごとのユーザーコンテキストヘッダーが解析され、付与が解決され、サービストークンが使用される前に呼び出しが拒否

完了

非漏洩な認可エラー形状が合意され実装

完了 - docs/decisions.md の O3 参照

失効レイテンシが選択され文書化

完了 - docs/decisions.md の O1 参照

監査シンクが、成功、失敗、拒否のすべての場合において6つの必須フィールドを書き込む

完了

PulseセッションIDが伝搬され記録され、TC-BRIDGE-5.3とのパリティを確保

完了 - X-Pulse-Session-Id ヘッダー

監査シンク障害時の動作がNematullahと協議され実装

提案済み、承認待ち - 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
    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.
    -