mcpField
F
FastAPI MCP Client

FastAPI MCP Client

github.com/rooseveltadvisorsフレームワーク・SDK880 週間前に更新

FastAPI MCP Client について

FastAPI MCP Client は、Server-Sent Events (SSE) で Model Context Protocol を実装する FastAPI サービスと連携するために設計された専門的なクライアントライブラリです。完全な MCP プロトコルサポートと非同期第一設計を提供します。

主な機能

  1. 01完全な MCP プロトコル実装
  2. 02Server-Sent Events ストリーミング
  3. 03非同期第一設計
  4. 04セッション自動管理
  5. 05型アノテーション
  6. 06包括的エラーハンドリング

活用シーン

  1. 01MCP 対応 FastAPI サービスに接続
  2. 02高性能な非同期アプリケーションを構築
  3. 03ストリーミングデータ操作を処理
  4. 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 ディレクトリを参照してください。

  • サーバー例: FastAPI MCP サーバーのサンプル
  • SSE 例: カスタム設定を使用した高度なストリーミング

貢献

貢献を歓迎します。Pull Request を遠慮なく提出してください。

開発環境のセットアップ
  1. リポジトリをクローンする

    git clone https://github.com/RooseveltAdvisors/fastapi-mcp-client.git
    cd fastapi-mcp-client
    
  2. uv をインストールする

    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  3. 仮想環境を作成して有効化する

    uv venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    
  4. 開発依存関係をインストールする

    uv sync --all-extras
    
  5. テストを実行する

    pytest
    
Pull Request プロセス
  1. フィーチャーブランチを作成する (git checkout -b feature/amazing-feature)
  2. 変更を加えてテストがパスすることを確認する
  3. 変更をコミットする (git commit -m 'Add some amazing feature')
  4. ブランチにプッシュする (git push origin feature/amazing-feature)
  5. Pull Request を開く

ライセンス

このプロジェクトは MIT ライセンスの下でライセンスされています。詳細は LICENSE ファイルを参照してください。

謝辞

  • FastAPI MCP と連携するために構築されています。これは API に MCP サポートを追加するための FastAPI 拡張機能です。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。