MCP Reporter について
MCP Reporterは、設定したMCPサーバーの情報をMarkdownで一覧化するCLIおよびライブラリです。ツールを実行したりリソースの内容を読んだりせず、公開された機能とメタデータを収集します。
主な機能
- 01stdioとStreamable HTTPサーバーへの接続
- 02ツール、リソース、テンプレート、プロンプトの列挙
- 03スキーマとサーバーメタデータの記録
- 04ページネーションと部分結果の報告
- 05設定可能なMarkdownレポートの生成
活用シーン
- 01プロジェクト内のMCPサーバー機能の文書化
- 02連携前の公開スキーマの確認
- 03一部サーバーの失敗時もレポートを収集
MCP 対応
ローカルのstdioプロセスとリモートのStreamable HTTP MCPサーバーに接続し、公開された機能を列挙します。ツールの実行、リソース内容の読み取り、プロンプトの展開は行いません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-reporter
MCP サーバーが公開している情報を確認できます。
ツール、リソース、プロンプト、スキーマ、サーバーメタデータの Markdown カタログを生成します。
クイックスタート · 設定 · レポートの内容 · ライブラリとして使用 · 開発
mcp-reporter はローカルの stdio プロセスおよびリモートの Streamable HTTP エンドポイントに接続し、公開されている機能を読み取って、プロジェクトのドキュメントと一緒に保管したり、別のツールに渡したりできるレポートを出力します。
ツール、リソース、リソーステンプレート、プロンプトを列挙します。ツールの実行、リソースの内容の読み取り、プロンプトの展開は行いません。合成例のレポートを見る。
クイックスタート
Node.js 22.12 以降が必要です。開発にはBun 1.4 以降を使用します。
すでに実行しているサーバーを指定して、mcp-servers.json を作成します。
{
"mcpServers": {
"local-server": {
"command": "node",
"args": ["/absolute/path/to/server/dist/index.js"]
}
}
}
レポートを生成します。
npx mcp-reporter --config mcp-servers.json --output output/report.md
設定
設定は mcpServers を含む JSON オブジェクトです。各キーはレポート内のサーバーを識別します。ローカルのエントリとリモートのエントリを1つのファイルにまとめられます。
{
"mcpServers": {
"local-server": {
"command": "node",
"args": ["/absolute/path/to/server/dist/index.js"],
"env": { "EXAMPLE_API_KEY": "REPLACE_WITH_YOUR_KEY" }
},
"remote-server": {
"type": "http",
"url": "https://example.com/mcp",
"headers": { "Authorization": "Bearer REPLACE_WITH_YOUR_TOKEN" }
},
"disabled-server": {
"command": "node",
"args": ["/absolute/path/to/another/server.js"],
"disabled": true
}
}
}
| フィールド | 対象 | 意味 |
|---|---|---|
command | stdio | 起動する実行ファイル |
args | stdio | 任意の引数配列 |
env | stdio | 任意の文字列値の環境変数。SDK のトランスポートに渡されます |
cwd | stdio | 子プロセスの任意の作業ディレクトリ |
url | HTTP | MCP パスを含む Streamable HTTP エンドポイント |
headers | HTTP | 任意の固定リクエストヘッダー |
type | いずれか | 任意の stdio または http。エントリと一致している必要があります |
disabled | いずれか | true の場合、エントリをスキップします |
alwaysAllow | いずれか | 設定との互換性のために受け付けます。ツールは呼び出されません |
command または url のどちらか一方だけを指定してください。レポーターは接続前にファイル全体を検証します。パスはプロセスの作業ディレクトリを基準に解決されます。複数の呼び出し元で設定を共有する場合は、絶対パスを使用してください。対話型 OAuth とレガシー SSE エンドポイントはサポートされていません。
設定値には認証情報を含められます。レポーターは、診断情報と起動メタデータから、env/header の値、生のコマンド引数、URL のパス/クエリ/ユーザー情報を除外します。子プロセスの stderr は抑制され、失敗は安全なエラーカテゴリで報告されます。サーバーが提供する説明、スキーマ、指示、拡張メタデータはレポートの内容として保持されるため、レポートを共有する前に確認してください。
プロトコルモードの選択
従来のネゴシエーションがデフォルトで、initialize を想定するサーバーとの互換性を維持します。
--protocol-era | 動作 |
|---|---|
legacy | ディスカバリープローブを行わず、従来のハンドシェイクを使用します |
auto | 最新バージョンへの対応を検出し、従来方式を示す証拠があれば従来方式にフォールバックします |
2026-07-28 | 最新のリビジョンを必須とし、従来方式にはフォールバックしません |
npx mcp-reporter --config mcp-servers.json --protocol-era auto
自動モードでは、stdio プロセスを一時的に追加で起動し、従来のハンドシェイクを使用する前にプローブのタイムアウトまで待機することがあります。HTTP の認証エラーとタイムアウトは失敗として報告され、従来方式を示す証拠とはみなされません。レポートには、実際に選択されたプロトコルのバージョンと時代が記録されます。
レポートの内容
| セクション | 含まれる情報 |
|---|---|
| エグゼクティブサマリー | 接続数と収集した機能の数 |
| 接続の失敗 | 設定されたサーバー ID と安全な失敗理由 |
| サーバー情報 | トランスポート、実装の識別情報、ネゴシエートされたプロトコル、接続時刻、通知されたフラグ、指示 |
| ツール | 名前、タイトル、説明、入出力スキーマ、注釈、アイコン、拡張メタデータ |
| リソースとテンプレート | URI/テンプレート、名前、説明、MIME タイプ、提供されたメタデータ |
| プロンプト | 名前、説明、引数、必須フラグ、提供されたメタデータ |
リストはページごとに収集されます。各機能は 通知なし、完全(空の場合もあります)、または 不完全 として報告されます。ページ数の上限、カーソルの繰り返し、リクエストの失敗が発生した場合、収集済みの項目は保持され、件数は一部のみとして示されます。サーバーまたはリストの取得に失敗しても、取得に成功した他の項目は破棄されません。
レポートでは表とテキストを使い、長い定義は折りたたみ可能な詳細欄に収めます。アイコンはメタデータとして扱い、リモート画像を読み込みません。サーバーの注釈はサーバーから提供されたヒントであり、安全性を独自に検証した保証ではありません。クライアントが無効なスキーマ拡張を含むツールの呼び出しを拒否する場合でも、列挙結果には通知された内容が保持されます。
CLI オプション
| オプション | デフォルト | 目的 |
|---|---|---|
-c, --config <path> | mcp-servers.json | 設定ファイル |
-o, --output <path> | output/mcp_server_report.md | Markdown の出力先 |
--no-schemas | スキーマを含める | 入力スキーマを非表示にします。出力スキーマは引き続き表示されます |
--no-metadata | メタデータを含める | サーバー情報、通知されたフラグ、指示を非表示にします |
--no-examples | 例を含める | 呼び出し元が指定した例を非表示にします |
--protocol-era <era> | legacy | legacy、auto、または 2026-07-28 |
--max-pages <count> | 64 | 各機能リストのページ数の上限(正の整数) |
--timeout <ms> | 30000 | 接続/リクエストのタイムアウト(正の値) |
-q, --quiet | オフ | 進行状況の表示を抑制します。致命的なエラーは引き続き stderr に出力されます |
-V, --version | — | パッケージのバージョンを表示します |
-h, --help | — | ヘルプを表示します |
HTTP サーバーの場合、タイムアウトは初期化済み通知への応答を含むハンドシェイク全体に適用されます。タイムアウトが発生するとトランスポートを閉じ、接続の失敗を記録して、残りのサーバーのレポートを続行します。各機能リストのリクエストには、それぞれ個別のタイムアウトが適用されます。
既存の正のフラグ -s/--schemas、-m/--metadata、-e/--examples も引き続き使用できます。MCP の列挙には例の取得元がありません。例は、プログラムから呼び出す際に呼び出し元がレンダラーに渡した場合にのみ表示されます。
進行状況は stderr に出力され、レポートは指定したファイルに書き込まれます。終了コード 0 は、接続やリストの失敗が記録されていても、レポートが書き込まれたことを示します。設定が無効な場合、またはレポートの書き込みに失敗した場合は、終了コード 1 で終了します。
ライブラリとして使用する
bun add mcp-reporter
import { McpReporter } from 'mcp-reporter';
const reporter = new McpReporter('./mcp-servers.json', {
outputPath: './output/capabilities.md',
protocolEra: 'auto',
includeInputSchemas: true,
includeServerMetadata: true,
maxPages: 64,
timeoutMs: 30_000,
progressCallback(event) {
console.error(event.message);
},
});
await reporter.run();
このライブラリは ESM であり、進行状況コールバックがない場合は何も出力しません。run() はレポートを書き込み、接続を閉じた後に完了します。設定やファイルに関するエラーが発生した場合は拒否されます。2 回目の実行では、新たに収集を開始します。ReportOptions.transportFactory(config, serverId) を使用すると、埋め込み用途や決定論的なテスト向けにトランスポートを指定できます。
型はパッケージのルートからエクスポートされます。収集済みの ServerReport[] をレンダリングするには、mcp-reporter から MarkdownGenerator をインポートし、generateReport(reports, options) を呼び出します。同じレンダリングフラグを適用し、呼び出し元が指定した任意の ToolInfo.examples を保持します。
ランタイム、モジュール、レポートの変更については、1.1.0 へのアップグレードを参照してください。
開発
ソースのチェックアウトをビルドします。
git clone https://github.com/cyanheads/mcp-reporter.git
cd mcp-reporter
bun install
bun run rebuild
ビルドした CLI を node dist/cli.js --config mcp-servers.json で実行します。
| コマンド | 目的 |
|---|---|
bun run devcheck | リント、ソース/スクリプト/テストの型チェック、変更履歴のチェック、全テストスイートの実行 |
bun run rebuild | Node パッケージをクリーンアップしてコンパイル |
bun run test:all | 決定論的な動作テストを実行 |
bun run test:package | コンパイル済みの Node CLI/ライブラリとパッケージの内容を検証 |
bun run format | Biome によるフォーマットと安全な修正を適用 |
bun run example:report | 合成サンプルレポートを再生成 |
bun run tree | ディレクトリマップを再生成 |
bun run list-skills | プロジェクトのワークフローを一覧表示 |
テストでは、メモリ内の SDK サーバー、ループバック HTTP、合成 stdio プロセスを使用します。認証情報や外部 MCP サーバーは必要ありません。リリースワークフローでは、ローカルゲート、バージョンごとの変更履歴、Conventional Commits、注釈付きタグのダイジェストを使用します。公開先は npm と GitHub です。
貢献 · セキュリティ · 変更履歴 · Apache-2.0 ライセンス
Casey Hand が開発 · プロジェクトを支援する
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。