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