Gradio を使用した Python での MCP サーバー実装

Gradio は、Python 関数を自動的に LLM ツールに変換することで、Python 開発者が Model Context Protocol (MCP) サーバーを実装できるようにしました。この統合により、Large Language Models (LLMs) は Hugging Face Hub にホストされている専門的な AI モデルや Spaces にアクセスでき、テキストベースの回答から能動的な問題解決へと能力が拡張されます。

自動ツール変換と MCP 機能

Gradio は、Python コードと LLM 互換ツール間の橋渡しを自動化することで、MCP サーバーの作成を簡素化します。主な技術的特徴は以下の通りです:

  • 自動関数からツールへの変換: Gradio アプリのすべての API エンドポイントが自動的に MCP ツールに変換されます。Gradio は関数の docstring を使用して、ツールの名前、説明、入力スキーマを生成します。
  • リアルタイム進捗通知: Gradio はステータス更新を直接 MCP クライアントにストリーミングし、開発者が手動で進捗追跡を実装する必要がなくなります。
  • 自動ファイル処理: システムは自動ファイルアップロードをサポートし、さまざまなファイルタイプや公開 URL の処理を含みます。

ケーススタディ: バーチャル試着付き AI ショッピングアシスタント

これらの機能を実証するために、Hugging Face はウェブ閲覧とバーチャル試着モデルを組み合わせた AI ショッピングアシスタントの作成方法を示しています。アシスタントは以下の 3 つの主要コンポーネントで構成されています:

  1. IDM-VTON ディフュージョンモデル: バーチャル試着機能に特化したモデルで、特定の衣服を着用した人物の写真を生成します。実装は IDM-VTON 用の Hugging Face Space を利用しています。
  2. Gradio: MCP サーバーブリッジとして機能し、LLM が IDM-VTON モデルやその他必要なツールを呼び出せるようにします。
  3. VS Code AI Chat: ユーザーインターフェースとして機能し、任意の MCP サーバーを追加してコマンドを発行し結果を表示できます。

技術実装

アシスタントのコアは vton_generation ツールを公開する Gradio MCP サーバーです。この関数は人物モデル画像と衣服画像を入力として受け取り、IDM-VTON モデルを介して生成された画像を返します。サーバーは Gradio インターフェースの launch() メソッド内で mcp_server=True を設定することで有効化されます。

元の IDM-VTON Space は Gradio 4.x(自動 MCP 機能が導入される前)で構築されていたため、デモ実装では Gradio API クライアントを介して元の Space にクエリを送る Gradio インターフェースを使用しています。

統合と構成

Gradio MCP サーバーを VS Code のようなクライアントに接続するには、mcp.json 設定ファイルを更新する必要があります。提供された例では、アシスタントは 2 つのサーバーを使用します:

  • VTON サーバー: ローカル URL(例: http://127.0.0.1:7860/gradio_api/mcp/)で接続されます。
  • Playwright MCP サーバー: npx を介して統合され、AI アシスタントがウェブ上で衣服アイテムを検索できるようにします。

設定が完了すると、LLM は小売ウェブサイトを特定の衣服で閲覧し、ユーザーの写真をそれらの衣服に適用するバーチャル試着ツールを使用するなど、複雑なマルチステップタスクを実行できます。

Sources