Skip to main content
Glama
esinecan

MCP Inspector as MCP Server

by esinecan

MCPサーバーとしてのMCP Inspector

License: MIT Node.js TypeScript

LLMが他のMCPサーバーを検査・テストできるようにする軽量なMCPサーバーです。外部CLIを呼び出すことなく、MCP SDKを直接使用する自己完結型の実装です。

特徴

  • SDKの直接統合: サーバーとクライアントの両方の操作に @modelcontextprotocol/sdk を直接使用

  • すべてのトランスポートタイプ: stdio、SSE、HTTP(ストリーミング可能)トランスポートをサポート

  • 最小限のフットプリント: 単一の依存関係 (@modelcontextprotocol/sdk)

  • 完全なMCP検査: ツールのリスト表示、ツールの呼び出し、リソースのリスト表示、リソースの読み取り、プロンプトのリスト表示、プロンプトの取得

  • セッション管理: 自動ガベージコレクションを備えた永続的な接続

  • イベントバッファリング: デバッグ用の通知、トラフィック、エラーのキャプチャ

インストール

npm install
npm run build

使用方法

MCPサーバーとして

MCP設定に追加します。ハーネスによって多少の違いはありますが、一般的な形式は同じです:

{
  "mcpServers": {
    "mcp-inspector": {
      "command": "node",
      "args": ["/path/to/mcp-inspector-as-mcp-server/dist/server.js"]
    }
  }
}

利用可能なツール

セッション管理 (v2.0で新機能)

ツール

説明

insp_connect

MCPサーバーへの永続的な接続を確立します。session_id を返します。

insp_disconnect

永続的なセッションを閉じ、リソースを解放します。

insp_list_sessions

ステータスとアイドル時間を含むすべてのアクティブなセッションをリスト表示します。

insp_read_events

セッションからバッファリングされたイベント(通知、トラフィック、エラー)を読み取ります。

insp_inject_steering

セッションのキューに人間の指示メッセージを注入します。

検査ツール

ツール

説明

insp_tools_list

MCPサーバーによって公開されているすべてのツールをリスト表示します

insp_tools_call

MCPサーバー上のツールを呼び出します

insp_resources_list

MCPサーバーによって公開されているすべてのリソースをリスト表示します

insp_resources_read

特定のリソースを読み取ります

insp_resources_templates

リソーステンプレートをリスト表示します

insp_prompts_list

すべてのプロンプトをリスト表示します

insp_prompts_get

特定のプロンプトを取得します

接続パラメータ

すべてのツールは以下の接続パラメータを受け入れます:

stdioトランスポート(ローカルコマンド)の場合:

  • command: 実行するコマンド (例: "node", "python")

  • args: 引数の配列 (例: ["path/to/server.js"])

SSE/HTTPトランスポート(リモートサーバー)の場合:

  • url: サーバーURL (例: "http://localhost:3000/sse")

  • headers: オプションのHTTPヘッダーオブジェクト

共通:

  • transport: トランスポートタイプを強制指定 ("stdio", "sse", または "http")。指定がない場合は自動検出されます。

  • session_id: (オプション) 一時的な接続を作成する代わりに、既存の永続的なセッションを使用します。

セッションワークフロー

ステートフルなサーバーの動作をデバッグするには、永続的なセッションを使用します:

1. insp_connect → returns session_id
2. insp_tools_list (with session_id) → uses persistent connection
3. insp_tools_call (with session_id) → state is preserved
4. insp_read_events (with session_id) → see notifications
5. insp_disconnect (with session_id) → cleanup

セッションは30分間操作がないと自動的に閉じられます。

人間の介入と可観測性

このインスペクターは、LLM主導のMCPテストをリアルタイムで観察し、ガイドできるヒューマン・イン・ザ・ループワークフローを可能にします。

仕組み

┌─────────────┐     MCP calls      ┌─────────────────┐     forwards     ┌─────────────┐
│   LLM Agent │ ◄────────────────► │  MCP Inspector  │ ◄──────────────► │  Target MCP │
│  (Antigravity)                   │    (v2.0)       │                  │   Server    │
└─────────────┘                    └────────┬────────┘                  └─────────────┘
                                            │
                                   Events logged to
                                   session EventBuffer
                                            │
                    ┌───────────────────────┼───────────────────────┐
                    │                       │                       │
                    ▼                       ▼                       ▼
            insp_read_events         HTTP :9847/api          mcp-steer CLI
            (LLM reads events)       (external access)       (human injection)

アクティビティの表示

LLM経由: エージェントは insp_read_events を呼び出して何が起きているかを確認できます:

{
  "session_id": "sess_abc123",
  "types": ["traffic_in", "traffic_out"],
  "limit": 20
}

HTTP経由: ステアリングAPIを直接クエリします:

curl http://127.0.0.1:9847/api/sessions

エージェントの誘導

LLMの次のツール応答に表示されるガイダンスメッセージを注入します。

CLIを使用する場合:

./bin/mcp-steer.mjs "Focus on testing the error handling paths"
./bin/mcp-steer.mjs --session sess_abc123 "Try calling with invalid params"

HTTPを使用する場合:

curl -X POST http://127.0.0.1:9847/api/steer \
  -H "Content-Type: application/json" \
  -d '{"message": "Check the authentication flow next"}'

MCPツールを使用する場合:

{
  "tool": "insp_inject_steering",
  "arguments": {
    "session_id": "sess_abc123",
    "message": "Great progress! Now test edge cases."
  }
}

イベントタイプ

タイプ

説明

traffic_out

ターゲットサーバーへ送信されたメッセージ

traffic_in

ターゲットサーバーから受信したメッセージ

notification

ターゲットサーバーからのMCP通知

error

通信中に発生したエラー

steering

セッションに注入された人間の指示メッセージ

一般的なワークフロー

  1. LLMがセッションを作成: insp_connectsess_abc123 を取得

  2. LLMがテストを開始: session_id を指定して insp_tools_call を実行

  3. 人間が観察: curl http://127.0.0.1:9847/api/sessions

  4. 人間が誘導: ./bin/mcp-steer.mjs "バッチエンドポイントもテストして"

  5. LLMが誘導を受信: 次のツール応答に ⚡ STEERING from human: ... が含まれる

  6. LLMが適応: 人間のガイダンスを考慮に入れる

ローカルMCPサーバーからツールをリスト表示(一時的):

{
  "command": "node",
  "args": ["/path/to/some-mcp-server/dist/server.js"]
}

永続的なセッションを作成:

{
  "command": "node",
  "args": ["/path/to/some-mcp-server/dist/server.js"]
}
// Returns: { "session_id": "sess_abc123", "server_info": {...} }

セッションを使用してツールを呼び出す:

{
  "session_id": "sess_abc123",
  "tool_name": "search",
  "tool_args": {"query": "hello"}
}

アーキテクチャ

├── src/
│   ├── server.ts     # MCP server exposing inspector tools
│   ├── client.ts     # Client wrapper (hybrid stateless/session mode)
│   ├── transport.ts  # Transport factory (stdio, SSE, HTTP) + TracingWrapper
│   ├── session.ts    # SessionRegistry with GC (30-min TTL)
│   └── events.ts     # EventBuffer (ring buffer for notifications)
├── bin/
│   └── mcp-steer.mjs # CLI tool for human steering
├── tests/            # Integration test scripts (run with npx tsx)
└── vitest.config.ts  # Unit test + coverage config

なぜこれが存在するのか

オリジナルのMCP Inspectorは、複数のプロジェクトにまたがるWebベースのUIとCLIの組み合わせでした。これを、LLMが以下を行うために使用できる単一の軽量なMCPサーバーに統合しました:

  1. MCPサーバーを反復的に開発およびデバッグする

  2. 会話を離れることなくMCPサーバーの機能をテストする

  3. MCPサーバーが公開しているツール/リソース/プロンプトを探索する

  4. 永続的なセッションでステートフルな動作をデバッグする

開発

npm install          # install dependencies
npm run build        # compile TypeScript
npm run dev          # watch mode
npm test             # run unit tests
npm run test:cov     # run tests with coverage
npm run lint         # lint source files
npm run format       # auto-format with Prettier
npm run typecheck    # type-check without emitting

変更履歴

v2.1.0

  • ヒューマン・イン・ザ・ループワークフローのための人間の誘導 (insp_inject_steering) を追加

  • 外部からの誘導/可観測性のためにポート9847でHTTP APIを追加

  • 人間が簡単に操作できるように mcp-steer.mjs CLIツールを追加

  • TracingTransportWrapper におけるハンドラーキャプチャのタイミングによりメッセージが消失する重大なバグを修正

v2.0.0

  • セッション管理を追加 (insp_connect, insp_disconnect, insp_list_sessions)

  • イベントバッファリングを追加 (insp_read_events)

  • すべての検査ツールが永続的な接続のためにオプションの session_id をサポート

  • 自動ガベージコレクションを追加(アイドルセッションのTTLは30分)

  • 下位互換性: 従来の一時的な動作には session_id を省略可能

v1.0.0

  • 一時的な接続による初期リリース

ライセンス

MIT

Install Server
A
license - permissive license
A
quality
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/esinecan/mcp-inspector-as-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server