MCP Server について
モックツール、プラグイン、任意で使える Gradio プレイグラウンドを備えた、開発者向けの最小構成の MCP リファレンスサーバーです。ローカルまたは Google Colab で動作し、OpenAI のチャットと画像認識プラグインの例を含みます。
主な機能
- 01モック MCP ツール
- 02任意で使える Gradio プレイグラウンド
- 03プラグインによるツール拡張
- 04OpenAI のチャット・画像認識例
- 05ローカルと Colab での起動
活用シーン
- 01MCP サーバーの動作確認
- 02ビジュアル画面でのツール試用
- 03モデルプラグインによるサーバー拡張
MCP 対応
統一された `/mcp` エンドポイントで MCP を実装し、POST の JSON-RPC と GET の Server-Sent Events に対応します。MCP クライアントからツールを呼び出し、リソースにアクセスできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP サーバー
いくつかのモックツールと、オプションの Gradio プレイグラウンドを備えた、Model Context Protocol(MCP)の最小限のリファレンス実装です。
使用方法
サーバーをローカルで実行します。
python server.py
dev.env ファイルを作成し、OpenAI API キーを追加します。
OPENAI_API_KEY=your-openai-key
Google Colab またはその他のノートブック内では、ヘルパーを使用します。
from colab_adapter import launch_in_colab
launch_in_colab()
API はデフォルトでポート 8000 で提供され、Gradio UI は GRADIO_SERVER_PORT または 7860 から始まる最初の空きポートを使用します。
Google Colab で実行する
Colab で MCP_colab.ipynb を開くか、上のバッジをクリックしてセルを実行します。
空のノートブックから始める場合は、次のコマンドを実行してサーバーをセットアップし、起動します。
!git clone https://github.com/zack-dev-cm/mcp_server.git
%cd /content/mcp_server
!pip install fastapi uvicorn[standard] gradio==4.* pydantic python-dotenv \
httpx openai pydantic-settings
from colab_adapter import launch_in_colab
launch_in_colab()
これで、別のセルから API にクエリを送信できます。
import requests, time
time.sleep(2)
print(requests.get("http://localhost:8000/v1/resources").json())
サーバーの出力に Gradio インターフェースの公開 URL が表示されるので、デモを視覚的に試すことができます。
LLM/VLM プラグインの例
プラグインを使うと、サーバーに新しいツールを追加できます。付属の openai_chat および openai_vision プラグインは、OpenAI モデルの呼び出し方法を示しています。環境に OPENAI_API_KEY を設定して、サーバーを起動します。
ローカルで実行する場合は、まず必要なパッケージをインストールします。
pip install openai httpx pydantic-settings
python server.py
Dockerfile は openai を自動的にインストールします。API または Gradio UI を介して、openai.chat または openai.vision ツールを呼び出します。
Streamable HTTP エンドポイント
ChatGPT コネクターは、統一された /mcp ルートを使ってサーバーに直接接続できます。
標準の JSON 応答を受け取るには、POST /mcp で JSON-RPC リクエストを送信します。クライアントが Server-Sent Events に対応している場合は、代わりに GET /mcp を実行して接続を開いたままにし、更新をストリーミングできます。
ChatGPT コネクターがサーバーのベース URL を参照し、ストリーミングなしとストリーミングの両方のやり取りに /mcp エンドポイントを使用するよう設定します。
ユーザーデータ API
認証済みのセッションでは、ユーザー固有の JSON ペイロードを保存・管理できます。 まずセッション ID をリクエストし、それをベアラートークンとして渡します。
# create a session and grab the token
TOKEN=$(curl -s -X POST http://localhost:8000/v1/initialize \
-H 'Content-Type: application/json' \
-d '{"id":1,"jsonrpc":"2.0","method":"initialize","params":{}}' \
| jq -r '.result.sessionId')
# store data
curl -X POST http://localhost:8000/api/user/data \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{"foo":"bar"}'
# fetch it back
curl -H "Authorization: Bearer $TOKEN" http://localhost:8000/api/user/data
# remove it
curl -X DELETE -H "Authorization: Bearer $TOKEN" \
http://localhost:8000/api/user/data
Cloud Run へのデプロイ
付属の Dockerfile を使って、Google Cloud Run にサーバーをデプロイできます。
# build and push the container
gcloud builds submit --tag gcr.io/PROJECT_ID/mcp-server
# deploy the image to Cloud Run
gcloud run deploy mcp-server \
--image gcr.io/PROJECT_ID/mcp-server \
--region REGION \
--allow-unauthenticated
Cloud Run は環境変数 PORT を自動的に設定し、サーバーはこれを使って同じエンドポイントで API と Gradio UI の両方を公開します。
テストの実行
テストスイートでは、ELEVENLABS_MCP_SECRET と OPENAI_API_KEY の両方が設定されている必要があります。dev.env をコピーして読み込んでから、pytest を実行します。
cp dev.env .env
set -a && source .env && set +a
pytest
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。