Spaces:
Runtime error
Runtime error
FastMCP サンプル MCP サーバー (Hugging Face Spaces デプロイ用)
FastMCP 2.12.4 を使った MCP サーバーのサンプルです。app.py では Sample MCP Server (version 0.1.0) を定義し、/mcp エンドポイントを Streamable HTTP で公開しています。@mcp.tool で登録した echo ツールを呼び出すと、受け取ったテキストをそのまま返します。Hugging Face Spaces に配置することで、ChatGPT などの MCP 対応クライアントから簡単に利用できます。
セットアップ
- Python 3.10 以降を想定しています。
- 仮想環境を作成したら、
pip install -r requirements.txtを実行して FastMCP と Uvicorn をインストールしてください。
ローカル動作確認
python app.pyを実行すると、http://localhost:7860にサーバーが立ち上がります。/でヘルスチェック ({"status": "ok", ...}) を確認できます。- クライアント検証には
python client.py --url http://localhost:7860/mcpを使用します。ping → list_tools → call_tool("echo")の順に呼び出し、最初のTextContentを標準出力に表示します。
Hugging Face Spaces へのデプロイ
- Space を作成し、SDK を「Docker」、ランタイムを「Streamable HTTP」に設定します。
- このリポジトリをそのままアップロードします (既存の
Dockerfileでuvicorn app:app --host 0.0.0.0 --port 7860が実行される前提です)。 - ビルド後、Space の URL
https://<your-space>.hf.spaceが発行されます。Streamable HTTP の/mcpエンドポイントが外部に公開され、MCP クライアントからアクセス可能になります。 必要に応じて README に上記 Streamable HTTP 前提であること、Dockerfileのコマンド (uvicorn app:app) が FastMCP サーバーに対応していることを追記してください。 /gradioパスにアクセスすると、Gradio ベースの「MCP Server Configurator」が起動します。Space の公開 URL やサーバー名を入力すると、servers.jsonのエントリー例や ChatGPT 側の設定手順、ローカル検証用コマンドが自動生成されます。
サーバー仕様メモ
/mcpは HTTP ベースの MCP エンドポイントです (WebSocket ではありません)。@mcp.toolを追加することで、任意のツールを拡張できます。例:echoツールは{"text": "..."}を受け取り同じ内容を返します。/は Starlette ベースのヘルスチェックを返し、Spaces の稼働監視に利用できます。
ChatGPT からの接続手順
- ChatGPT アプリの MCP サーバー設定に、新規エンドポイントとして
https://<your-space>.hf.space/mcpを登録します。 - FastMCP のクライアント (例:
client.py) で事前に疎通確認すると安心です。 - ChatGPT 側で接続後、
echoツールを呼び出すと、入力テキストがそのままレスポンスとして返ります。