FastAPI MCP Client について
FastAPI MCP Client は、Server-Sent Events (SSE) で Model Context Protocol を実装する FastAPI サービスと連携するために設計された専門的なクライアントライブラリです。完全な MCP プロトコルサポートと非同期第一設計を提供します。
主な機能
- 01完全な MCP プロトコル実装
- 02Server-Sent Events ストリーミング
- 03非同期第一設計
- 04セッション自動管理
- 05型アノテーション
- 06包括的エラーハンドリング
活用シーン
- 01MCP 対応 FastAPI サービスに接続
- 02高性能な非同期アプリケーションを構築
- 03ストリーミングデータ操作を処理
- 04リモートサービスと統合
MCP 対応
クライアントは SSE 経由で MCP サービスに接続し、ストリーミング・非ストリーミング両方の操作に対して、セッション確立とメッセージ传递を管理します。
詳細
FastAPI MCP クライアント
Model Context Protocol (MCP) を Server-Sent Events (SSE) 経由で実装する fastapi-mcp サーバーと連携するために特別に設計されたクライアントライブラリです。このライブラリは、MCP 対応の FastAPI サービスとのシームレスな対話方法を提供します。
インストール
# Install with pip
pip install fastapi-mcp-client
# Or with UV
uv add fastapi-mcp-client
クイックスタート
import asyncio
from fastapi_mcp_client import MCPClient
async def main():
async with MCPClient("http://localhost:8000") as client:
# Call a non-streaming operation
result = await client.call_operation("echo", {"message": "Hello, MCP!"})
print(f"Echo result: {result}")
# Call a streaming operation with SSE
stream = await client.call_operation(
"generate_numbers",
{"count": 5},
stream=True
)
async for event in stream:
print(f"Event: {event}")
asyncio.run(main())
機能
- MCP プロトコルサポート: Model Context Protocol の完全な実装
- SSE ストリーミング: Server-Sent Events (SSE) ストリーミングへの第一級サポート
- 非同期優先設計: 高性能アプリケーション向けの完全な非同期対応
- シームレスなセッション管理: MCP セッションの確立とメッセージ伝送を処理
- エラーハンドリング: フォールバック機構を備えた包括的なエラーハンドリング
- 型アノテーション: IDE インテグレーションと検証の向上のための完全な型ヒント
例の実行
リポジトリには、使い始めるための例が含まれています。実行方法は以下の通りです。
1. リポジトリをクローンする
git clone https://github.com/RooseveltAdvisors/fastapi-mcp-client.git
cd fastapi-mcp-client
2. 環境をセットアップする
# Create and activate virtual environment
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install all dependencies including examples
uv sync --all-extras
3. 例のサーバーを起動する
# In one terminal
cd examples/server
python simpler_server.py
これで、複数の MCP 対応エンドポイントを持つ FastAPI サーバーが起動します。
echo: 送信したメッセージを返すgenerate_numbers: 数値のシーケンスをストリーミングsearch_documents: ドキュメント検索をシミュレートしてストリーミング結果を返すcalculate: 簡単な数学式を評価する
4. SSE クライアント例を実行する
# In another terminal (with virtual env activated)
cd examples
python sse_example.py
高度な使用法
カスタムクライアント設定
from fastapi_mcp_client import MCPClient, MCPClientConfig
config = MCPClientConfig(
base_url="http://localhost:8000",
timeout=60.0,
log_level="DEBUG"
)
async with MCPClient("http://localhost:8000", config=config) as client:
# Call a streaming tool with custom configuration
stream = await client.call_operation(
"generate_numbers",
{"count": 10},
stream=True
)
async for event in stream:
print(f"Received event: {event}")
MCP/SSE フローの理解
sequenceDiagram
participant C as Client
participant S as Server
Note over C,S: Establish SSE Connection
C->>+S: GET /mcp (Accept: text/event-stream)
S-->>-C: 200 OK (Connection Open)
S-->>C: SSE: data: /mcp/messages/?session_id=XXX
Note over C: Parse session_id=XXX
Note over C,S: MCP Initialization
C->>+S: POST /mcp/messages/?session_id=XXX <br> Payload: {method: "initialize", ...}
S-->>-C: 202 Accepted
Note over C,S: MCP Tool Call
C->>+S: POST /mcp/messages/?session_id=XXX <br> Payload: {method: "tools/call", ...}
S-->>-C: 202 Accepted
Note over C,S: Stream Results
S-->>C: SSE: data: {result_part_1}
S-->>C: SSE: data: {result_part_2}
S-->>C: SSE: data: {final_result}
Note over S: (Closes SSE Connection or sends close event)
例
詳細は examples ディレクトリを参照してください。
貢献
貢献を歓迎します。Pull Request を遠慮なく提出してください。
開発環境のセットアップ
-
リポジトリをクローンする
git clone https://github.com/RooseveltAdvisors/fastapi-mcp-client.git cd fastapi-mcp-client -
uv をインストールする
curl -LsSf https://astral.sh/uv/install.sh | sh -
仮想環境を作成して有効化する
uv venv source .venv/bin/activate # On Windows: .venv\Scripts\activate -
開発依存関係をインストールする
uv sync --all-extras -
テストを実行する
pytest
Pull Request プロセス
- フィーチャーブランチを作成する (
git checkout -b feature/amazing-feature) - 変更を加えてテストがパスすることを確認する
- 変更をコミットする (
git commit -m 'Add some amazing feature') - ブランチにプッシュする (
git push origin feature/amazing-feature) - Pull Request を開く
ライセンス
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE ファイルを参照してください。
謝辞
- FastAPI MCP と連携するために構築されています。これは API に MCP サポートを追加するための FastAPI 拡張機能です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。