MCP Infra Lens
mcp-infra-lens
ベースラインを認識するMCPツールを使用して、SSH経由でLinuxのインシデントを解説します。
デモ

Claudeが「prod-01に何が起きているの?」と尋ねた際の analyze_server の応答例:
{
"host": "prod-01.internal",
"health_score": 42,
"summary": "Found 2 anomalies on prod-01.internal. Most urgent signal: CPU is at 91% (3.4σ above baseline 28.2%). Load is 7.2/6.8/5.1. Top CPU consumer: java (87%).",
"anomalies": [
{
"metric": "cpu",
"severity": "high",
"value": 91,
"z_score": 3.4,
"explanation": "CPU is at 91% (3.4σ above baseline 28.2%). Load is 7.2/6.8/5.1. Top CPU consumer: java (87%).",
"recommendation": "Investigate java (PID 18432) and review application logs or scale-out options."
},
{
"metric": "disk:/",
"severity": "high",
"value": 91,
"explanation": "Disk / is 91% full (182GB/200GB).",
"recommendation": "Run du -sh //* | sort -rh | head -20 and clean logs or temporary files."
}
]
}機能
mcp-infra-lens はSSH経由でLinuxホストに接続し、ライブインフラストラクチャのスナップショットをキャプチャし、最近記録されたベースラインと比較して、異常を平易な英語で解説します。
ターゲットホストを変更することなく、CPU、メモリ、ディスク、ネットワーク、プロセス、OSデータを収集します
ベースライン、比較、トレンド検索のために、ローカルのメトリクス履歴をSQLiteに記録します
十分なベースラインサンプルが存在する場合、CPU異常検知にzスコア分析を使用します
単なる生のメトリクス値だけでなく、負荷の可能性が高い原因を解説します
stdioおよび Streamable HTTP 経由のMCPをサポートします
仕組み
flowchart TD
A["Claude / Cursor / VS Code / Windsurf"] --> B["mcp-infra-lens"]
B --> C["server-core.ts"]
C --> D["collector.ts"]
C --> E["analyzer.ts"]
C --> F["baseline.ts + db.ts"]
D --> G["ssh.ts"]
G --> H["Linux host over SSH"]
F --> I["SQLite history + baselines"]analyze_server は、要求された duration_minutes にわたって実際のサンプリング収集を実行し、収集期間中のCPUおよびメモリ負荷を平均化し、結果のスナップショットを永続化してから、選択されたベースラインに対して異常検知を実行します。
ツール
ツール | 機能 | 主要なパラメータ |
| サンプリングされたスナップショットを収集・保存し、異常を解説します |
|
| 分析なしで現在の時点のメトリクスをキャプチャして保存します |
|
| 将来の比較のために、ラベル付けされた正常状態のサンプルを保存します |
|
| 現在の状態を名前付きベースラインと比較し、差分を解説します |
|
| SQLiteから過去のCPU、メモリ、または負荷ポイントを返します |
|
クイックスタート
1. npx で実行
npx -y mcp-infra-lens2. Claude Desktop
公開済みパッケージ:
{
"mcpServers": {
"infra-lens": {
"command": "npx",
"args": ["-y", "mcp-infra-lens"],
"env": {
"INFRA_LENS_DB": "/Users/you/.mcp-infra-lens/metrics.db"
}
}
}
}ローカル開発:
{
"mcpServers": {
"infra-lens": {
"command": "node",
"args": ["/absolute/path/to/mcp-infra-lens/dist/mcp.js"],
"env": {
"INFRA_LENS_DB": "/Users/you/.mcp-infra-lens/metrics.db"
}
}
}
}3. Docker
docker build -t mcp-infra-lens .
docker run --rm -it \
-v "$HOME/.mcp-infra-lens:/home/appuser/.mcp-infra-lens" \
mcp-infra-lens設定
環境変数 | デフォルト | 説明 |
|
| SQLiteデータベースのパス。テストには |
|
| HTTPトランスポートのバインドアドレス |
|
| HTTPトランスポートのポート |
ヘルススコア
90-100: 正常、有意な異常は検出されませんでした70-89: 軽微または局所的な負荷40-69: 複数の警告、または進行中の重大な問題0-39: 緊急の対応が必要な重大な状態
推奨ワークフロー
正常な稼働期間中に
record_baselineサンプルを記録します。インシデントや負荷スパイクが発生した際に
analyze_serverを使用します。名前付きベースラインとのより厳密な差分ビューには
compare_to_baselineを使用します。トレンドを調査し、デフォルトのスナップショットとラベル付けされたベースラインセッションを分離するには
get_historyを使用します。
認証
SSH入力スキーマは以下をサポートしています:
パスワード認証
インライン秘密鍵認証
暗号化された鍵のためのオプションのパスフレーズサポート
認証情報フィールドは、stderr に書き込まれる前に構造化ログから削除されます。
セキュリティに関する注意点
SSH収集はターゲットホストに対して読み取り専用です
SSH認証情報はSQLiteに保存されません
v1では互換性のためにホストキー検証が許可されています。本番環境へのデプロイでは、アウトバウンドネットワークアクセスを制限し、将来のリリースで厳格なホスト検証を強制することを計画してください
HTTPトランスポートには組み込みの認証がありません。ループバックにバインドし、ローカル以外へのデプロイでは認証されたリバースプロキシの背後に配置してください
報告ポリシーおよび保存データの範囲については SECURITY.md を参照してください。
統合
Claude Desktop
{
"mcpServers": {
"infra-lens": {
"command": "npx",
"args": ["-y", "mcp-infra-lens"],
"env": {
"INFRA_LENS_DB": "/Users/you/.mcp-infra-lens/metrics.db"
}
}
}
}Cursor IDE
{
"mcpServers": {
"infra-lens": {
"command": "npx",
"args": ["-y", "mcp-infra-lens"]
}
}
}VS Code (MCP extension)
{
"inputs": [],
"servers": {
"infra-lens": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-infra-lens"]
}
}
}Windsurf
{
"mcpServers": {
"infra-lens": {
"command": "npx",
"args": ["-y", "mcp-infra-lens"]
}
}
}Docker (HTTP transport)
docker run -d \
-p 3000:3000 \
-v $HOME/.mcp-infra-lens:/home/appuser/.mcp-infra-lens \
ghcr.io/oaslananka/mcp-infra-lens:latestその後、MCPクライアントが http://localhost:3000 を使用するように設定してください。
Docker
バンドルされているDockerイメージは以下の通りです:
TypeScriptプロジェクトを別のステージでビルドします
両方のステージでコンテナアーキテクチャ用に
better-sqlite3を再ビルドします非rootユーザー
appuserとして実行しますSQLiteデータを
/home/appuser/.mcp-infra-lens/metrics.dbに保存します
貢献
貢献を歓迎します。CONTRIBUTING.md から始めて、以下を使用してください:
ツールの例については docs/usage.md
コンポーネントマップについては docs/architecture.md
ローカル検証および公開チェックについては docs/testing.md
npmおよびMCPレジストリのバージョン管理ルールについては RELEASE_POLICY.md
リポジトリ固有のAIコーディングガイダンスについては
AGENTS.md,CLAUDE.md,GEMINI.md,.github/copilot-instructions.md, および.agent/rules/repository.md
運用 / CIに関する注意点
azure-pipelines.ymlは標準のCIパイプラインであり、Node 20およびNode 22でQualityステージを実行し、JUnitおよびCoberturaアーティファクトを発行し、Node 20でDockerベースのSSH e2eカバレッジを実行します.azure/pipelines/publish.ymlは手動のnpmリリースパイプラインとして残されています.azure/pipelines/mirror.ymlはリポジトリミラーリングワークフロー用に利用可能ですローカルの公開前チェックリストとCIの両方がNode 20で正常に完了した後にのみ公開してください
変更にnpm、MCPレジストリ、またはレジストリのみのプレリリース公開が必要かどうかを判断する際は RELEASE_POLICY.md に従ってください
ライセンス
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/oaslananka/mcp-infra-lens'
If you have feedback or need assistance with the MCP directory API, please join our Discord server