mcpField
I
Infra Lens

Infra Lens

ローカル
github.comクラウド・インフラ21 週間前に更新

Infra Lens について

Infra Lens は、SSH 経由で Linux ホストを診断する TypeScript 製 MCP サーバーです。観測結果と承認済みベースラインを SQLite に保存し、修復を実行せずに異常分析やレビュー前提のインシデント対応を支援します。

主な機能

  1. 01SSH 経由の指標収集と診断
  2. 02SQLite による履歴と健全性ベースライン
  3. 03異常分析とベースライン比較
  4. 04承認を求める修復案
  5. 05インシデント報告と期間比較
  6. 06任意の観測データエクスポート

活用シーン

  1. 01Linux ホストの異常調査
  2. 02現在の状態と健全性ベースラインの比較
  3. 03インシデント報告と事後分析の作成
  4. 04保存済み観測データのエクスポート

MCP 対応

MCP サーバーとして、ホスト収集、ベースライン管理、履歴照会、インシデント対応のツールをクライアントに提供します。stdio と Streamable HTTP に対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"infra-lens": {
"command": "npx",
"args": [
"-y",
"infra-lens-mcp"
]
}
}
}
起動コマンドnpx -y infra-lens-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npminfra-lens-mcp1.5.1

ツール

10

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
connectionobjectはい
connection.hoststringはいサーバーのホスト名または IP
connection.portintegerいいえSSH ポート
connection.passwordstringいいえSSH パスワード
connection.usernamestringはいSSH ユーザー名
connection.passphrasestringいいえ秘密鍵のパスフレーズ
connection.privateKeystringいいえSSH 秘密鍵の内容
connection.hostKeySha256stringいいえ固定する SSH ホスト鍵のフィンガープリント。SHA256: プレフィックスの有無は問いません
connection.knownHostsPathstringいいえ厳密なホスト鍵検証に使用する OpenSSH known_hosts ファイルのパス
include_networkbooleanいいえネットワーク指標を含める
duration_minutesintegerいいえ分析用の指標を何分間収集するか
include_processesbooleanいいえ上位プロセスの分析を含める

詳細

infra-lens-mcp

ベースラインを考慮した MCP ツールで、SSH 経由の Linux インシデントを解説します。

ライブ Linux 診断、ローカル SQLite 履歴、
レビュー優先のインシデントワークフロー、安全なオブザーバビリティエクスポートに対応する TypeScript MCP サーバーです。

CI ステータス CodeQL ステータス セキュリティゲートのステータス OSV-Scanner のステータス Codecov のカバレッジ OpenSSF Scorecard

npm バージョン npm ダウンロード数 Node.js 22 以降 MCP 2025-11-25 署名済みマルチアーキテクチャ GHCR イメージ MIT ライセンス

ドキュメント · 使い方 · アーキテクチャ · セキュリティ · ガバナンス · ロードマップ · サポート · リリース

コーヒーをごちそうしてください

infra-lens-mcp は SSH 経由で Linux ホストに接続し、上限を設けたライブメトリクスを取得して、観測結果と承認済みベースラインをローカル SQLite に保存し、異常を解説して、レビュー優先のインシデント成果物を作成します。npm パッケージと署名済みコンテナーはリリース可能な状態です。外部 OAuth/HTTPS デプロイの検証が完了するまでは、コネクターの公開を意図的に保留しています。

デモ

infra-lens-mcp のデモ

現在のプロトコルサポート、委任動作、コネクター公開の制約については、MCP 2025-11-25 準拠マトリクスをご覧ください。

ツール

ツール目的
analyze_server進捗/キャンセルに対応した、範囲を限定したサンプリングウィンドウを分析し、完了した観測結果のみを保存します
analyze_server_snapshotサンプリング待ち時間なしで、即時スナップショットを分析して保存します
snapshot異常分析を行わず、特定時点の観測結果を保存します
record_baseline正常状態のサンプルにラベルを付けて保存します
compare_to_baseline現在の状態を指定したベースラインと比較します
get_historySQLite から CPU、メモリ、または負荷の履歴を返します
inspect_host_capabilities収集前に必要な Linux コマンドと proc ファイルを確認します
plan_remediation変更を実行せず、証拠に基づく承認必須の修復を提案します
draft_incident_report保存済みの観測結果からインシデントレポートと事後分析を作成します
compare_incident_windows1 台のホストの隣接するウィンドウ、または 2 台のホストの同一ウィンドウを比較します

すべてのツールは、読み取り可能な JSON テキストと、宣言された outputSchema 定義に照らして検証された MCP structuredContent の両方を返すため、クライアントやエージェントはテキストブロックを解析せずに応答を利用できます。収集ツールでは、任意のセクションを収集できなくても部分的なスナップショットが利用可能な場合、warnings 配列が含まれます。対話形式での確認には analyze_server_snapshot を使用してください。サンプリングウィンドウが必要な場合に限り、analyze_server を使用してください。サンプリング分析では、クライアントが進捗トークンを指定すると MCP の進捗が通知され、キャンセルされた実行の途中結果が保存されることはありません。

要件

  • CI、Docker、リリースのワークフローには Node.js 24 LTS
  • パッケージのランタイム互換性には Node.js 22 以降
  • 開発環境へのインストールには、Corepack 経由の pnpm 11.15.1
  • /proc、free、df、ps、uname を備えた Linux SSH 接続先
  • known_hosts または固定された SHA256 ホストキーによる、厳格な SSH ホスト検証

クイックスタート

npm から stdio MCP サーバーを実行します:

npx -y infra-lens-mcp

デスクトップ MCP クライアント向けの設定:

{
  "mcpServers": {
    "infra-lens": {
      "command": "npx",
      "args": ["-y", "infra-lens-mcp"],
      "env": {
        "INFRA_LENS_DB": "/Users/you/.infra-lens-mcp/metrics.db"
      }
    }
  }
}

ローカル開発:

corepack enable
corepack prepare [email protected] --activate
pnpm install --frozen-lockfile
pnpm run build
node dist/mcp.js

設定

トランスポートは環境変数ではなく、実行ファイルのエントリーポイントによって選択されます。npx -y infra-lens-mcp または node dist/mcp.js は stdio を起動し、node dist/server-http.js は Streamable HTTP を起動します。

変数デフォルト説明
INFRA_LENS_DB~/.infra-lens-mcp/metrics.dbSQLite データベースのパス
INFRA_LENS_RETENTION_DAYS30スナップショットの保持日数。0 にすると自動削除が無効になります
MCP_HTTP_HOST127.0.0.1HTTP のバインド先ホスト。HOST は非推奨の別名として引き続き使用できます
MCP_HTTP_PORT3000HTTP のバインド先ポート。PORT は非推奨の別名として引き続き使用できます
MCP_HTTP_ENDPOINT_PATH/mcpStreamable HTTP MCP エンドポイントの標準パス
MCP_HTTP_ALLOWED_ORIGINS未設定許可する Origin 値をカンマ区切りで指定します
MCP_HTTP_ALLOWED_HOSTS未設定許可する Host 値をカンマ区切りで指定します
MCP_HTTP_AUTH_MODEnonenone、bearer、または oauth-gateway。互換性のため、oauth も別名として使用できます
MCP_HTTP_BEARER_TOKEN未設定ローカル/開発用の Bearer フォールバックトークン
MCP_HTTP_OAUTH_GATEWAY_HEADERx-infra-lens-gateway-auth信頼された OAuth ゲートウェイによって挿入されるヘッダー
MCP_HTTP_OAUTH_GATEWAY_SECRET未設定oauth-gateway モードで必要な共有バックエンドシークレット
MCP_HTTP_BODY_LIMIT_BYTES1048576JSON リクエストボディの最大サイズ
MCP_HTTP_REQUEST_TIMEOUT_MS30000ソケットが閉じられるまでに HTTP リクエストを受信して処理する最大時間
MCP_HTTP_MAX_CONCURRENT_REQUESTS100Node プロセスが受け付ける HTTP リクエストの最大同時数
MCP_HTTP_RATE_LIMIT_PER_MINUTE0クライアントごとの任意のインメモリレート制限。0 にすると無効になります
MCP_HTTP_AUTHORIZATION_SERVERS未設定OAuth 認可サーバーのメタデータ URL
MCP_PROFILEfullfull、remote-safe、chatgpt、または claude
MCP_SSH_STRICT_HOST_CHECKINGtrue厳格なホストキー検証の切り替え
MCP_SSH_KNOWN_HOSTS~/.ssh/known_hostsKnown hosts ファイル
MCP_SSH_ALLOWED_HOSTS未設定ホスト/IP の完全一致、または IPv4 CIDR の許可リスト。リモートセーフプロファイルでは必須であり、設定されている場合は full プロファイルでも適用されます
MCP_SSH_ALLOWED_USERS未設定SSH ユーザー名の任意のカンマ区切り許可リスト
MCP_SSH_ALLOWED_PORTS未設定SSH ポートの任意のカンマ区切り許可リスト
MCP_SSH_MAX_SESSIONS_PER_HOST0ホスト:ポートごとのアクティブな SSH セッション数の任意の上限。0 にすると無効になります
MCP_SSH_MAX_CONNECTION_ATTEMPTS_PER_MINUTE0ホスト:ポートごとの 1 分あたりの SSH 接続試行回数の任意の上限。0 にすると無効になります

以前の例にある MCP_DB_PATH は使用されません。INFRA_LENS_DB を使用してください。

SSH セキュリティ

ホストキーの厳格な確認はデフォルトで有効です。次のいずれかを指定してください。

  • 接続入力の hostKeySha256 値。例:SHA256:...
  • 接続入力の knownHostsPath
  • OpenSSH の known_hosts ファイルを指す MCP_SSH_KNOWN_HOSTS

生のパスワード、秘密鍵、パスフレーズは、信頼されたローカル MCP コンテキスト向けのデフォルト full プロファイルでのみ受け付けられます。remote-safe、chatgpt、claude プロファイルでは、ツール入力での生の SSH 認証情報は拒否され、MCP_SSH_ALLOWED_HOSTS が必須です。本番環境の SSH ポリシーでは、ホストの完全一致または IPv4 CIDR 範囲、ユーザー、ポート、ホストごとのアクティブセッション数、ホストごとの接続試行回数を制限することもできます。

デフォルトのプロセスコマンドでは、プロセスコマンドの引数は収集されません。プロセスデータ、SSH エラー、ログ内のシークレットと思われる値は、保存または出力する前にマスキングされます。

HTTP トランスポート

Streamable HTTP トランスポートをローカルで実行します。MCP_HTTP_ENDPOINT_PATH を変更しない限り、標準の MCP エンドポイントは http://127.0.0.1:3000/mcp です。現在、HTTP モードはステートレスです。サーバーは MCP-Session-Id を発行も受け付けもせず、MCP エンドポイントでは POST による JSON-RPC 呼び出しのみをサポートします。MCP_HTTP_REQUEST_TIMEOUT_MS とプロキシのタイムアウトは、要求したサンプリング期間を超える値にしてください。そうでない場合は analyze_server_snapshot を使用します。stdio にはサーバー側で管理される実時間のリクエストタイムアウトがないため、クライアントがタイムアウトと MCP キャンセルを制御します。

MCP_HTTP_HOST=127.0.0.1 MCP_HTTP_PORT=3000 node dist/server-http.js

ローカル開発では、ループバック HTTP を認証なしで実行できます。0.0.0.0 など、ループバック以外のアドレスにバインドすると、以下のすべてが設定されていない限り、すぐに失敗します。

  • MCP_PROFILE=remote-safe、chatgpt、または claude
  • MCP_HTTP_AUTH_MODE=bearer または oauth-gateway
  • MCP_HTTP_ALLOWED_ORIGINS
  • MCP_HTTP_ALLOWED_HOSTS

ネイティブの OAuth/JWT 検証は、このパッケージ内には実装されていません。パブリック環境にデプロイする場合は、本番環境用の OAuth 対応ゲートウェイまたはリバースプロキシの背後で MCP_HTTP_AUTH_MODE=oauth-gateway を使用し、HTTPS の MCP_HTTP_RESOURCE_URL を設定して、Node プロセスへの直接アクセスをブロックしてください。上流のプロキシでも適用している場合でも、Node プロセスではオリジン/ホストの許可リスト、リクエストボディの上限、リクエストタイムアウト、同時実行数の上限、任意のレート制限を有効にしてください。ADR 0006 を参照してください。コネクターのデプロイ全体が検証されるまで、コネクターの公開準備は未完了のままです。

Docker

Docker イメージはデフォルトで stdio モードになります。

docker build -t infra-lens-mcp .
docker volume create infra-lens-data
docker run --rm -i \
  --read-only \
  --cap-drop=ALL \
  --security-opt=no-new-privileges:true \
  --tmpfs /tmp:rw,noexec,nosuid,nodev,size=64m \
  --mount type=volume,src=infra-lens-data,dst=/home/appuser/.infra-lens-mcp \
  infra-lens-mcp

ローカルで HTTP をテストするには、コマンドを上書きし、remote-safe プロファイルと認証制御を設定していない限り、バインド先のホストをループバックにしてください。

docker run --rm -p 127.0.0.1:3000:3000 \
  --read-only \
  --cap-drop=ALL \
  --security-opt=no-new-privileges:true \
  --tmpfs /tmp:rw,noexec,nosuid,nodev,size=64m \
  --mount type=volume,src=infra-lens-data,dst=/home/appuser/.infra-lens-mcp \
  -e MCP_HTTP_HOST=0.0.0.0 \
  -e MCP_HTTP_ALLOWED_ORIGINS=http://localhost:3000 \
  -e MCP_HTTP_ALLOWED_HOSTS=localhost:3000 \
  -e MCP_HTTP_AUTH_MODE=bearer \
  -e MCP_HTTP_BEARER_TOKEN=local-dev-token \
  infra-lens-mcp node dist/server-http.js

オブザーバビリティのエクスポート

オブザーバビリティは、SSH による収集を開始せず、最後に永続化された観測結果を読み取る、個別のデフォルトで無効なプロセスです。

INFRA_LENS_OBSERVABILITY_ENABLED=true infra-lens-observe

デフォルトの OpenMetrics エンドポイントは http://127.0.0.1:9464/metrics です。任意の OTLP/HTTP JSON エクスポートでは、標準の OTEL_EXPORTER_OTLP_* 変数を使用します。Prometheus、OpenTelemetry、プライバシー、リモートアクセスのガイダンスについては、オブザーバビリティのエクスポートを参照してください。

開発

pnpm run format:check
pnpm run lint
pnpm test
pnpm run test:coverage
pnpm run build
pnpm run check:metadata
pnpm run package:dry-run

Docker を利用した SSH e2e 検証では、自己完結型のフィクスチャライフサイクルを使用します。

pnpm run test:e2e

フィクスチャがすでに実行中で、ライフサイクル管理を意図的に省略する場合は、次を使用します。

INFRA_LENS_E2E_SKIP_FIXTURE=1 pnpm run test:e2e:raw

使い方、クライアントのセットアップ、運用、インシデント対応ワークフロー、オブザーバビリティ、ストレージ、セキュリティ、ガバナンス、テスト、リリースに関するガイダンスは、ドキュメントのインデックスからご確認ください。生成された API ドキュメントは docs/api に、レビュー済みのインシデント例は examples/incidents にあります。

コミュニティ

サポート窓口と応答方針については、SUPPORT.md をご利用ください。進行中の作業は、infra-lens-mcp Governance プロジェクトで管理されています。プロジェクトの行動規範は CODE_OF_CONDUCT.md に、メンテナーのトリアージ方針は docs/governance.md に記載されています。

リリース

リリースは release-please のマニフェストモードと、保護された GitHub Actions のリリースワークフローを通じて管理されます。実装 PR では、パッケージ、コンテナー、MCP Registry のエントリー、マーケットプレイスの成果物、本番用 GitHub Releases を公開してはいけません。

docs/release.md と docs/release-state-machine.md を参照してください。

ライセンス

MIT

エージェントプラグインとランタイム設定

このリポジトリでは、infra-lens-mcp の製品レベルのエージェントプラグイン、MCP ランタイム設定、製品固有のスキルを管理しています。中央の agent-tools リポジトリにこのプラグインを登録しますが、マニフェストとワークフローの手順は、実際の MCP サーバーパッケージとの同期を保つため、ここに置いています。

ファイル目的
.claude-plugin/plugin.jsonClaude Code に準拠した製品プラグインのマニフェストです。
.mcp.jsonClaude Code のプロジェクトローカル MCP サーバー設定です。
.codex/config.example.tomlCodex CLI の MCP 設定例です。
.vscode/mcp.example.jsonVS Code / GitHub Copilot のワークスペース MCP 設定例です。
opencode.example.jsoncOpenCode のプロジェクト MCP 設定例です。
.opencode/skills/OpenCode ネイティブのスキル定義のミラーです。
docs/agent-runtime-config.mdエージェントのランタイム設定と検証に関するメモです。

プラグインのパッケージングをローカルで検証します。

claude plugin validate .

レビューを前提とした修正計画、インシデントの草案、ホストや時間帯の比較については、インシデントのワークフローを参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。