Starlette MCP SSE について
Starlette MCP SSEは、StarletteのWebアプリにSSEベースのMCP機能を組み込む方法を示すサンプルです。MCPエンドポイントと通常のWebルートを併設したい開発者向けです。
主な機能
- 01MCP SSEエンドポイントの統合
- 02同一アプリでのWebルート提供
- 03ルート構成のカスタマイズ
- 04MCP機能とWeb機能の分離
活用シーン
- 01SSEトランスポートを使うMCPサーバーの構築
- 02MCPにステータスやドキュメントのルートを追加
MCP 対応
MCPクライアントが接続できるよう、`/sse`と`/messages/`のMCP SSEエンドポイントをStarletteアプリに組み込みます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Starlette MCP SSE
英語 | 簡体字中国語
Starlette フレームワークと Model Context Protocol (MCP) を統合した、Server-Sent Events(SSE)の実装です。
MCP とは?
Model Context Protocol (MCP) は、AI モデルが外部ツールやデータソースとやり取りできるようにするオープン標準です。MCP は、AI 開発における次のような重要な課題を解決します。
- コンテキストの制限:モデルがトレーニングデータ以外の最新情報にアクセスできるようにします
- ツールの統合:モデルが外部ツールや API を使用するための標準化された方法を提供します
- 相互運用性:異なる AI モデルやツール間に共通のインターフェイスを作成します
- 拡張性:再トレーニングを行わずに、AI システムへ新しい機能を簡単に追加できるようにします
このプロジェクトでは、Starlette のウェブアプリケーションで Server-Sent Events(SSE)を使用して MCP を実装する方法を紹介します。
説明
このプロジェクトでは、Model Context Protocol(MCP)の機能を統合しながら、Starlette フレームワークを使用して Server-Sent Events(SSE)を実装する方法を紹介します。主な特長は、カスタムルートを含むフル機能の Starlette ウェブアプリケーションに、MCP の SSE 機能をシームレスに統合していることです。
特長
- MCP による Server-Sent Events(SSE)の実装
- カスタムルートとの Starlette フレームワーク統合
- MCP と標準的なウェブエンドポイントの両方を備えた統合ウェブアプリケーション
- カスタマイズ可能なルート構成
- MCP とウェブ機能を明確に分離
アーキテクチャ
このプロジェクトでは、次のようなモジュール型アーキテクチャを紹介します。
- MCP SSE エンドポイント(
/sseと/messages/)を Starlette アプリケーションに統合します - 標準的なウェブルート(
/、/about、/status、/docs)を提供します - MCP 機能とウェブルートを分離して維持する方法を示します
インストールと使用方法
前提条件
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/starlette_mcp_sse.git start
オプション 2:完全インストール
仮想環境を作成
プロジェクト用の分離された Python 環境を作成します。
uv venv
仮想環境を有効化
使用する仮想環境を有効化します。
.venv\Scripts\activate
依存関係をインストール
必要なパッケージをすべてインストールします。
uv pip install -r pyproject.toml
統合サーバーを起動
MCP SSE 機能を備えた統合 Starlette サーバーを起動します。
python src/server.py
または
uv run start
利用可能なエンドポイント
サーバーを起動すると(オプション 1 またはオプション 2 のいずれかを使用)、次のエンドポイントを利用できます。
- メインサーバー:http://localhost:8000
- 標準的なウェブルート:
- ホームページ:http://localhost:8000/
- 概要ページ:http://localhost:8000/about
- ステータス API:http://localhost:8000/status
- ドキュメント:http://localhost:8000/docs
- 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をクリックして実行します
アプリケーションの拡張
カスタムルートの追加
アプリケーションの構成により、新しいルートを簡単に追加できます。
- routes.py で新しいルートハンドラーを定義します
- routes.py の routes リストにルートを追加します
- メインアプリケーションにこれらのルートが自動的に追加されます
MCP 統合のカスタマイズ
MCP SSE 機能は、server.py を通じて以下のように統合されています。
- SSE トランスポートの作成
- SSE ハンドラーの設定
- Starlette アプリケーションへの MCP ルートの追加
Continue との統合
この MCP サーバーを Continue VS Code 拡張機能で使用するには、次の設定を Continue の設定に追加します。
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"name": "weather",
"type": "sse",
"url": "http://localhost:8000/sse"
}
}
]
}
}
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。