MCP Discovery について
MCP Discovery は、MCP サーバーの機能を調べてドキュメント化する Rust 製のコマンドラインツールです。ドキュメントを最新の状態に保ちたいサーバー開発者に向けたもので、GitHub Action としても実行できます。
主な機能
- 01ツール、リソース、機能情報のターミナル出力
- 02Markdown、HTML、プレーンテキスト形式の文書生成
- 03マーカーで指定した範囲の既存ファイル更新
- 04組み込みテンプレートとカスタム Handlebars テンプレート
- 05OAuth やトークンによるリモートサーバーへの接続
活用シーン
- 01MCP サーバーの機能リファレンスの生成
- 02リポジトリの README にあるサーバー機能一覧の更新
- 03GitHub Action による CI での文書の維持
MCP 対応
本プロジェクトは MCP クライアントとして動作し、Streamable HTTP によるリモートサーバーを含む MCP サーバーに接続して機能情報を読み取り、文書を生成します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Discovery
MCP サーバーの機能を検出して文書化する、Rust で記述されたコマンドラインツールです。
結果はターミナルに出力するか、Markdown、HTML、プレーンテキスト、JSON、またはユーザーが定義したカスタムテンプレートを使ってファイルに保存できます。
手順とコマンド例については、プロジェクトのドキュメントをご確認ください。
機能 💡
- MCP の詳細を表示:ツール、リソース、機能など、MCP サーバーの情報をターミナルに直接出力します。
- ファイルを生成:MCP サーバーの詳細と機能を含むファイルを、Markdown(
.md)、HTML(.html)、またはプレーンテキスト(.txt)形式で作成します。 - ファイルを更新:既存の Markdown、HTML、またはテキストファイルを変更し、指定されたマーカーの間に MCP サーバーの機能を追加します。これにより、MCP サーバーの開発者は、最新のドキュメントやリポジトリの README ファイルを自動的に維持できます。
- 柔軟な出力のカスタマイズ:組み込みテンプレート(
md、md-plain、html、txt)を選択するか、カスタム Handlebars テンプレートを指定して、出力をカスタマイズできます。 - MCP Discovery GitHub Action:mcp-discovery CLI を GitHub Action として統合し、開発ワークフローで最新の MCP サーバーのドキュメントを自動的に維持できます。
このオープンソースプロジェクトは、MCP サーバーとシームレスに連携するために、rust-mcp-sdkを利用しています。
🌐 出力例については、rust-mcp-filesystem の機能ページをご覧ください。
インストール ⬇️
CLI として実行
各プラットフォームでのツールのインストール手順については、プロジェクトのドキュメントをご確認ください。
GitHub Action
最新の MCP サーバーのドキュメントを自動的に維持する最も簡単な方法は、mcp-discovery を GitHub Action として使用することです。 インストールと設定の手順については、rust-mcp-stack/mcp-discovery-actionをご覧ください。
サブコマンド
print:MCP サーバーの機能をターミナルに表示します。create:MCP サーバーの機能の詳細を含む新しいファイルを作成します。update:指定されたマーカーの間に MCP サーバーの機能を挿入して、既存のファイルを更新します。
👉 注:サブコマンドが指定されていない場合は、デフォルトで print サブコマンドが使用されます。
オプション ⚙️
-f, --filename <FILENAME>:createコマンドとupdateコマンドで使用し、生成または変更する出力ファイルを指定します。-t, --template <TEMPLATE>:組み込みの出力テンプレートを選択します。オプション:md、md-plain、html、txt。-p, --template-file <TEMPLATE_FILE>:カスタム Handlebars テンプレートファイルのパス、またはtemplate.hbsと任意の同階層のpartials/ディレクトリを含むフォルダーを指定します。-s, --template-string <TEMPLATE_STRING>:文字列として指定するインライン Handlebars テンプレートです。--template-url <URL>:https://URL(.hbs、.zip、.tar.gz)から Handlebars テンプレートを取得してレンダリングします。フラグメントディレクティブ#sha256=<hex>(整合性の固定)と#entry=<subpath>(アーカイブ内のファイルを選択)をサポートします。--cache-dir <PATH>:--template-urlで取得したテンプレートのキャッシュディレクトリです(存在しない場合は作成され、デフォルトでは OS のキャッシュディレクトリが使用されます)。-l, --log-level <LOG_LEVEL>:ログレベルを指定します(デフォルト:info)。オプション:error、warn、info、debug、trace。--template-file/アーカイブテンプレートでは、partials/フォルダーにある独自のパーシャルを使用できます。詳しくはカスタムテンプレートガイドをご覧ください。--url <URL>:ストリーミング可能な HTTP トランスポートを介してリモート MCP サーバーに接続します。--header "Name: Value":ストリーミング可能な HTTP トランスポート用の静的 HTTP ヘッダーです(繰り返し指定できます)。--grant <GRANT>:保護されたサーバー用の OAuth グラントです:client-credentials(デフォルト)またはauthorization-code。--client-id <ID>:事前登録された OAuth クライアント ID です(Dynamic Client Registration を使用する場合は省略します)。--client-secret <SECRET>:事前登録された OAuth クライアントシークレットです。--scope <SCOPE>:要求する OAuth スコープです。--redirect-uri <URI>:authorization-codeグラント用のリダイレクト URI です。-h, --help:ヘルプ情報を表示します。-V, --version:mcp-discoveryのバージョンを表示します。
👉 注:テンプレートが指定されていない場合、mcp-discovery はファイル拡張子に基づいて最適な組み込みテンプレートを自動的に選択します。
👉 注:認証フラグを使用するには --url が必要です。オープンな MCP サーバー、トークンで保護された MCP サーバー、OAuth で保護された MCP サーバーへの接続例については、認証ガイドをご覧ください。
組み込みテンプレート 🧬
CLI は、次の組み込み出力テンプレートをサポートしています。
md:MCP サーバーの機能を表形式で示す、書式付きの Markdown です。md-plain:表の代わりにプレーンテキストを使用する、シンプルな出力向けの最小限の Markdown です。html:基本的なスタイルを適用した構造化 HTML です。txt:書式設定のないプレーンテキストです。
カスタムテンプレート 🧩
カスタム Handlebars テンプレートは、次の方法で指定できます。
--template-fileフラグを使用してカスタムテンプレートファイルを指定するか、template.hbsと任意の同階層のpartials/ディレクトリを含むフォルダーを指定します。--template-stringフラグを使用して、生の Handlebars テンプレートを文字列として直接指定します。--template-urlフラグを使用して、https://URL から Handlebars テンプレート(.hbs、.zip、.tar.gz)を取得します。フラグメントディレクティブ#sha256=<hex>(整合性の固定)と#entry=<subpath>(アーカイブ内のファイルを選択)をサポートします。詳しくはリモートテンプレートガイドをご覧ください。- インラインテンプレートを使用するには、
updateコマンド専用のファイル内で定義します。これは print または create では機能しません。
インラインテンプレートは、指定のマーカーアノテーションで囲む必要があります。
例
MCP サーバーの機能をターミナルに出力する:
mcp-discovery -- npx -y @modelcontextprotocol/server-everything
MCP サーバーの機能を含む HTML ファイルを作成する:
mcp-discovery create -f capabilities.html -- npx -y @modelcontextprotocol/server-everything
📄 生成された HTML ファイルを表示するにはここをクリックしてください
MCP サーバーの機能を含む MD ファイルを作成する:
mcp-discovery create -f capabilities.md -- npx -y @modelcontextprotocol/server-everything
カスタム Handlebars テンプレートを使用する:
mcp-discovery create -f capabilities.md --template-file=custom_template.hbs -- npx -y @modelcontextprotocol/server-everything
💡 CLI の使用例については、プロジェクトドキュメントのコマンドの例セクションをご覧ください。
マーカーで更新領域を定義する
update サブコマンドを使用すると、mcp-discovery は対象ファイル内の指定されたマーカーの間に機能を配置します。マーカーはファイル形式によって異なり、通常はコメント行です。
update コマンドを使うと、開発者やメンテナーが手間なくドキュメントを最新の状態に保てます。
mcp-discovery update コマンドを実行すれば、いつでもファイルを最新の MCP サーバー機能で更新できます。
マーカー注釈
- レンダリングブロックの開始:
mcp-discovery-render - レンダリングブロックの終了:
mcp-discovery-render-end
👉 mcp-discovery-render マーカーでは、template および template-file プロパティも使用できます。詳細は以下の例をご確認ください。
必要に応じて、レンダリングブロック内にテンプレート識別子をインラインで含めることができます。識別子は次のマーカーで囲みます。
- テンプレートブロックの開始:
mcp-discovery-template - テンプレートブロックの終了:
mcp-discovery-template-end
レンダリングブロック内でテンプレート注釈が検出されると、mcp-discovery はその注釈を使用して出力をレンダリングします。これにより、組み込みまたは外部のテンプレートファイルに依存せず、テンプレートをカスタマイズできます。詳細は以下の例をご確認ください。
レンダリングブロックの注釈を付けた Markdown ファイルの例:
# Server Info and Capabilities
Server Capabilities will be placed here...
レンダリングブロックとテンプレート名の注釈を付けた Markdown ファイルの例:
# Server Info and Capabilities
Server Capabilities will be placed here...
レンダリングブロックとカスタムテンプレートファイルの注釈を付けた Markdown ファイルの例:
# Server Info and Capabilities
Server Capabilities will be placed here...
注釈を付けた HTML ファイルの例:
<!DOCTYPE html>
<html lang="en">
<head>
<title>My MCP Server</title>
</head>
<body>
<h1>MCP Server Details</h1>
<div>
</div>
</body>
</html>
インラインテンプレートを含む HTML ファイルの例:
<h1>MCP Server Details</h1>
<div>
</div>
mcp-discovery update コマンドの実行後に生成される HTML を、以下のスクリーンショットで確認できます。
ファイルを最新の MCP サーバー機能で更新する必要がある場合は、いつでも mcp-discovery update コマンドを実行できます。
貢献
貢献をご希望の方はどなたでも歓迎します!詳細については、貢献ガイドラインをご覧ください。
イシューやプルリクエストを含むすべての貢献は、 Rust の行動規範に従う必要があります。
特に明記されていない限り、mcp-discovery への収録を目的として提出された貢献は、追加の条件や制限を伴わず、MIT ライセンスの条件に基づいて提供されます。
ライセンス
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細については、LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。