GradioでMCPサーバーを構築する

Gradioは現在、開発者がアプリケーションをModel Context Protocol(MCP)サーバーとして起動できるようにし、Large Language Models(LLM)がGradioアプリをツールとして呼び出すことを可能にします。この統合により、Gradioアプリ内の任意のPython関数が標準化されたツールに変換され、Cursor、Cline、Claude DesktopなどのMCP対応クライアントが特定の計算を実行したり、メディアを生成したり、データを処理したりできるようになります。

GradioでMCPサーバーをデプロイする

開発者は、.launch()メソッド内で mcp_server=True を設定するか、環境変数 GRADIO_MCP_SERVER=True を設定することで、GradioアプリをMCPサーバーに変換できます。

起動すると、アプリは標準のGradioウェブインターフェースとMCPサーバーの両方を開始し、URLエンドポイント(通常は http://your-server:port/gradio_api/mcp/sse)を公開します。このエンドポイントはMCPクライアントの設定に追加できます。Gradioは関数のdocstringを自動的に使用して、ツールの説明とLLM向けのパラメータスキーマを生成します。

Server-Sent Events(SSE)をサポートしないクライアント(例:Claude Desktop)向けには、mcp-remote Node.js ツールをブリッジとして使用できます。

高度なMCP機能

基本的なツール変換に加えて、GradioはMCP機能の全範囲を実装するための専用デコレータを提供します:

  • MCP Tools: 関数はデフォルトでツールとして登録されますが、@gr.mcp.tool() デコレータを明示的に使用することもできます。
  • MCP Resources: @gr.mcp.resource() デコレータを使用すると、開発者は特定のデータソースをLLMに公開できます。
  • MCP Prompts: @gr.mcp.prompt() デコレータにより、再利用可能なプロンプトテンプレートを定義できます。
  • MCP-Only Functions: gr.api() を使用すると、MCPサーバーでは利用可能だがGradioユーザーインターフェースからは隠された関数を作成できます。

キー統合機能

自動ツール変換とスキーマ管理

Gradioアプリ内のすべてのAPIエンドポイントは自動的にMCPツールに変換されます。生成された名前、説明、入力スキーマは /gradio_api/mcp/schema エンドポイントまたはアプリのフッターにある「View API」リンクからアクセスできます。

ファイルとデータの取り扱い

この統合には、ファイルデータ変換の自動処理が含まれ、以下をサポートします:

  • Base64エンコードされた文字列をファイルデータに変換する。
  • 画像ファイルを正しい形式で処理し、返す。
  • 一時的なファイルストレージを管理する。
  • ローカルファイルアクセス用の自動ファイルアップロードMCPサーバーをサポートする。

パフォーマンス分析

GradioはMCPツールとAPIエンドポイントの組み込みトラッキングを提供します。「View API」ページには成功率、レイテンシパーセンタイル、リクエスト数が表示され、色分けされたインジケータ(成功率100%は緑、0%は赤)でツールの信頼性向上に役立ちます。

Hugging Face Spacesでのホスティングと認証

開発者はGradioアプリケーションをHugging Face Spacesに公開することで、MCPサーバーを無料でホストできます。

プライベートSpaceの場合、MCPクライアント設定にBearerトークンを追加することで認証がサポートされます:

{
  "mcpServers": {
    "gradio": {
      "url": "https://your-private-space.hf.space/gradio_api/mcp/sse",
      "headers": {
        "Authorization": "Bearer <YOUR-HUGGING-FACE-TOKEN>"
      }
    }
  }
}

Sources