FastAPI MCP SSE について
FastAPI MCP SSE は、FastAPI アプリケーション内で Server-Sent Events による MCP を提供する方法を示すサンプルプロジェクトです。MCP エンドポイントと通常の Web ルートを 1 つのアプリにまとめたい開発者を対象としています。
主な機能
- 01/sse と /messages/ による MCP SSE エンドポイント
- 021 つの FastAPI アプリでの MCP と通常の Web ルート
- 03APIRouter によるカスタムルートの追加
- 04MCP Inspector で確認できる天気の例のツール
活用シーン
- 01FastAPI に MCP SSE エンドポイントを組み込む方法の学習
- 02Continue 拡張機能から SSE 経由でローカルの MCP サーバーに接続
MCP 対応
本プロジェクトは MCP サーバーの例であり、SSE エンドポイントを通じて get_alerts や get_forcast などの天気ツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
FastAPI MCP SSE
英語 | 簡体字中国語
FastAPI フレームワークと Model Context Protocol(MCP) を統合した、Server-Sent Events(SSE)の実装です。
MCP とは?
Model Context Protocol(MCP) は、AI モデルが外部ツールやデータソースとやり取りできるようにするオープンスタンダードです。MCP は、AI 開発におけるいくつかの重要な課題を解決します。
- コンテキストの制限:モデルが学習データを超えて、最新情報にアクセスできるようにします
- ツールの統合:モデルが外部ツールや API を利用するための標準化された方法を提供します
- 相互運用性:異なる AI モデルとツールの間に共通のインターフェースを作成します
- 拡張性:再トレーニングなしで、AI システムに新しい機能を簡単に追加できます
このプロジェクトでは、FastAPI の Web アプリケーションで Server-Sent Events(SSE)を使用して MCP を実装する方法を紹介します。
説明
このプロジェクトでは、FastAPI フレームワークを使用して Server-Sent Events(SSE)を実装し、Model Context Protocol(MCP)の機能を統合する方法を紹介します。主な特徴は、カスタムルートを含むフル機能の FastAPI Web アプリケーションに、MCP の SSE 機能をシームレスに統合していることです。
機能
- MCP を使用した Server-Sent Events(SSE)の実装
- カスタムルートを含む FastAPI フレームワークとの統合
- MCP と標準の Web エンドポイントを備えた統合 Web アプリケーション
- カスタマイズ可能なルート構成
- MCP 機能と Web 機能の明確な分離
アーキテクチャ
このプロジェクトでは、次のようなモジュール式アーキテクチャを紹介します。
- FastAPI アプリケーションに MCP SSE エンドポイント(
/sseと/messages/)を統合します - 標準の Web ルート(
/、/about、/status、/docs、/redoc)を提供します - MCP 機能と Web ルートを分離して維持する方法を紹介します
インストールと使用方法
前提条件
Rust で記述された高速な Python パッケージインストーラーである UV Package Manager をインストールします。
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
オプション 1:インストールせずにすぐ実行
UV の実行ツールを使用して、リポジトリをクローンせずにアプリケーションを直接実行します。
uvx --from git+https://github.com/panz2018/fastapi_mcp_sse.git start
オプション 2:完全インストール
仮想環境を作成
プロジェクト用に分離された Python 環境を作成します。
uv venv
仮想環境を有効化
仮想環境を有効化して使用します。
.venv\Scripts\activate
依存関係をインストール
必要なパッケージをすべてインストールします。
uv pip install -r pyproject.toml
統合サーバーを起動
MCP SSE 機能を備えた統合 FastAPI サーバーを起動します。
python src/server.py
または
uv run start
利用可能なエンドポイント
サーバーの起動後(オプション 1、オプション 2 のどちらでも)、次のエンドポイントを利用できます。
- メインサーバー:http://localhost:8000
- 標準の Web ルート:
- ホームページ:http://localhost:8000/
- 概要ページ:http://localhost:8000/about
- ステータス API:http://localhost:8000/status
- ドキュメント(Swagger UI):http://localhost:8000/docs
- ドキュメント(ReDoc):http://localhost:8000/redoc
- MCP SSE エンドポイント:
- SSE エンドポイント:http://localhost:8000/sse
- メッセージの投稿:http://localhost:8000/messages/
MCP Inspector でデバッグ
MCP 機能のテストとデバッグには、MCP Inspector を使用します。
mcp dev ./src/weather.py
MCP Inspector に接続
- http://localhost:5173 で MCP Inspector を開きます
- 接続を設定します。
- Transport Type を
SSEに設定します - URL に http://localhost:8000/sse を入力します
Connectをクリックします
- Transport Type を
関数をテスト
Toolsセクションに移動しますList Toolsをクリックして、利用可能な関数を確認します。get_alerts:気象警報を取得しますget_forcast:天気予報を取得します
- 関数を選択します
- 必要なパラメーターを入力します
Run Toolをクリックして実行します
アプリケーションの拡張
カスタムルートの追加
アプリケーション構造により、FastAPI の APIRouter を使用して新しいルートを簡単に追加できます。
-
APIRouter を使用して、routes.py に新しいルートハンドラーを定義します。
@router.get("/new-route") async def new_route(): return {"message": "This is a new route"} -
ルーターで定義したすべてのルートは、メインアプリケーションに自動的に追加されます。
MCP 統合のカスタマイズ
MCP SSE 機能は、server.py で次のように統合されています。
- SSE トランスポートの作成
- SSE ハンドラーの設定
- FastAPI アプリケーションへの MCP ルートの追加
Continue との統合
この MCP サーバーを Continue VS Code 拡張機能で使用するには、次の設定を Continue の設定に追加します。
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"name": "weather",
"type": "sse",
"url": "http://localhost:8000/sse"
}
}
]
}
}
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。