SSE-based Server and Client for について
SSE プロトコルベースの MCP サーバーとクライアント実装の参照例です。クラウドネイティブなデカップルアーキテクチャを実現し、エージェントがサブプロセスとして埋め込まずにリモートサーバーから動的にツールを利用できます。
主な機能
- 01SSE ベースの MCP サーバー実装
- 02スタンドアロン MCP クライアント
- 03天気予報ツール統合
- 04デカップルされたクライアント-サーバーアーキテクチャ
活用シーン
- 01クラウドネイティブ MCP サービスの構築
- 02動的なクライアント-サーバー接続
- 03エージェントがリモートツールをオンデマンドで利用
- 04クロスプロセス間のエージェント調整
MCP 対応
本プロジェクトは SSE プロトコルを使った MCP サーバーとクライアントを実装し、サーバーを独立したプロセスとして実行し、クライアントが SSE エンドポイント経由でツールにアクセスします。
詳細
MCP 用の SSE ベースのサーバーとクライアント
SSE ベースの MCP サーバーとそこからツールを使用するスタンドアロン MCP クライアントの動作パターンを実装したものです。こちらの元々の議論に基づいています。
使用方法
注: .env ファイル内または環境変数として ANTHROPIC_API_KEY を指定してください。
uv run weather.py
uv run client.py http://0.0.0.0:8080/sse
Initialized SSE client...
Listing tools...
Connected to server with tools: ['get_alerts', 'get_forecast']
MCP Client Started!
Type your queries or 'quit' to exit.
Query: whats the weather like in Spokane?
I can help you check the weather forecast for Spokane, Washington. I'll use the get_forecast function, but I'll need to use Spokane's latitude and longitude coordinates.
Spokane, WA is located at approximately 47.6587° N, 117.4260° W.
[Calling tool get_forecast with args {'latitude': 47.6587, 'longitude': -117.426}]
Based on the current forecast for Spokane:
Right now it's sunny and cold with a temperature of 37°F and ...
なぜこれが必要なのか?
これにより、MCP サーバーは実行中のプロセスになり、エージェント(クライアント)がいつでもどこからでも接続し、ツールを使用し、切断できるようになります。つまり、SSE ベースのサーバーとクライアントは、独立したプロセス(場合によっては異なるノード上)になることができます。これは、クライアント自身がサーバーをサブプロセスとして起動する STDIO ベースのパターンとは異なり、「クラウドネイティブ」なユースケースにより適しています。
Smithery 経由でのインストール
Smithery 経由で SSE ベースのサーバーとクライアント for Claude Desktop を自動的にインストールするには:
npx -y @smithery/cli install @sidharthrajaram/mcp-sse --client claude
サーバー
weather.py は National Weather Service API に基づいたツールを提供する SSE ベースの MCP サーバーです。MCP ドキュメントのサンプル STDIO サーバー実装から適応されています。
デフォルトではサーバーは 0.0.0.0:8080 で実行されますが、以下のようなコマンドラインの引数で設定可能です:
uv run weather.py --host <your host> --port <your port>
クライアント
client.py は SSE ベースの MCP サーバーに接続してそこからツールを使用する MCP クライアントです。MCP ドキュメントのサンプル STDIO クライアント実装から適応されています。
デフォルトではクライアントはコマンドラインの引数で提供される SSE エンドポイントに接続します:
uv run client.py http://0.0.0.0:8080/sse
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。