MCP Inspector as MCP Server
MCPサーバーとしてのMCP Inspector
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で新機能)
ツール | 説明 |
| MCPサーバーへの永続的な接続を確立します。 |
| 永続的なセッションを閉じ、リソースを解放します。 |
| ステータスとアイドル時間を含むすべてのアクティブなセッションをリスト表示します。 |
| セッションからバッファリングされたイベント(通知、トラフィック、エラー)を読み取ります。 |
| セッションのキューに人間の指示メッセージを注入します。 |
検査ツール
ツール | 説明 |
| MCPサーバーによって公開されているすべてのツールをリスト表示します |
| MCPサーバー上のツールを呼び出します |
| MCPサーバーによって公開されているすべてのリソースをリスト表示します |
| 特定のリソースを読み取ります |
| リソーステンプレートをリスト表示します |
| すべてのプロンプトをリスト表示します |
| 特定のプロンプトを取得します |
接続パラメータ
すべてのツールは以下の接続パラメータを受け入れます:
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."
}
}イベントタイプ
タイプ | 説明 |
| ターゲットサーバーへ送信されたメッセージ |
| ターゲットサーバーから受信したメッセージ |
| ターゲットサーバーからのMCP通知 |
| 通信中に発生したエラー |
| セッションに注入された人間の指示メッセージ |
一般的なワークフロー
LLMがセッションを作成:
insp_connect→sess_abc123を取得LLMがテストを開始:
session_idを指定してinsp_tools_callを実行人間が観察:
curl http://127.0.0.1:9847/api/sessions人間が誘導:
./bin/mcp-steer.mjs "バッチエンドポイントもテストして"LLMが誘導を受信: 次のツール応答に
⚡ STEERING from human: ...が含まれる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サーバーに統合しました:
MCPサーバーを反復的に開発およびデバッグする
会話を離れることなくMCPサーバーの機能をテストする
MCPサーバーが公開しているツール/リソース/プロンプトを探索する
永続的なセッションでステートフルな動作をデバッグする
開発
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.mjsCLIツールを追加TracingTransportWrapperにおけるハンドラーキャプチャのタイミングによりメッセージが消失する重大なバグを修正
v2.0.0
セッション管理を追加 (
insp_connect,insp_disconnect,insp_list_sessions)イベントバッファリングを追加 (
insp_read_events)すべての検査ツールが永続的な接続のためにオプションの
session_idをサポート自動ガベージコレクションを追加(アイドルセッションのTTLは30分)
下位互換性: 従来の一時的な動作には
session_idを省略可能
v1.0.0
一時的な接続による初期リリース
ライセンス
MIT
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