MCP Joke Server with Authentication について
MCP Joke Server with Authenticationは、FastAPIとFastMCPで認証付きMCPサーバーを作る方法を学ぶ開発者向けのサンプルです。Microsoft Entra IDのOAuth2 Bearerトークンでエンドポイントを保護します。
主な機能
- 01FastAPIとFastMCPによるサーバー構築
- 02OAuth2 Bearerトークン認証
- 03Microsoft Entra IDの設定
- 04保護されたエンドポイントのテスト
活用シーン
- 01MCPサーバーの認証実装の学習
- 02エンドポイントのEntra IDトークン検証設定
- 03VS Code GitHub Copilot Agent modeでの実行
MCP 対応
Microsoft Entra IDのOAuth2 BearerトークンでMCPサーバーを保護する方法と、GitHub Copilot Agent modeでの設定例を示します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP 認証サンプル 🚀
このリポジトリには、FastAPI と FastMCP を使用して認証機能付きの Model Context Protocol(MCP)サーバーを構築するためのサンプルコードが含まれています。
サーバーの起動 🖥️
- VS Code でこのフォルダーを開きます
- (devcontainer を使用する場合)プロンプトが表示されたら「Reopen in Container」をクリックします
- 依存関係をインストールします:
pip install -r requirements.txt - サーバーを起動します:
python server.py
サーバーは http://localhost:8000 で起動します
Microsoft Entra ID(Azure AD)による認証 🔐
このサンプルでは、Microsoft Entra ID(Azure AD)の OAuth2 Bearer トークンを使用して、MCP サーバーを保護する方法を紹介します。
Entra ID アプリケーションの必須設定 🛠️
- Azure Portal から Microsoft Entra ID(Azure AD)にアプリケーションを登録します。
- API を公開します:
- アプリの登録画面で「Expose an API」に移動します。
- アプリケーション ID URI(例:
api://<APPUUID>)を設定します。 - スコープ(例:
mcp.tools)を追加します。
- 認証を構成します:
- クライアントで必要な場合は、リダイレクト URI を追加します。
- アプリの以下の値を取得します:
- テナント ID
- アプリケーション(クライアント)ID
- アプリケーション ID URI
- スコープ名
コードとリソースのメタデータを更新する ✏️
-
server.pyのBearerAuthProviderを更新します:<ENTRATENANTID>を Entra テナント ID に置き換えます。<APPUUID>をアプリケーション(クライアント)ID またはアプリケーション ID URI に置き換えます。- 正しい
jwks_uri、issuer、audience、required_scopesを設定します。
例:
auth = BearerAuthProvider( jwks_uri="https://login.microsoftonline.com/<ENTRATENANTID>/discovery/v2.0/keys", issuer="https://sts.windows.net/<ENTRATENANTID>/", algorithm="RS256", audience="api://<APPUUID>", required_scopes=["mcp.tools"] ) -
oauth-protected-resource.jsonを更新します:- リソース ID、スコープ、issuer など、このファイルがアプリケーションのメタデータと一致していることを確認します。
例:oauth-protected-resource.json 📄
{
"resource": "api://<APPUUID>",
"issuer": "https://sts.windows.net/<ENTRATENANTID>/",
"scopes": ["mcp.tools"]
}
プレースホルダーを実際の値に置き換えます。
GitHub Copilot Agent Mode 🤖
この MCP サーバーは、VS Code の GitHub Copilot Agent mode でも使用できます。有効にするには、以下の手順を実行します:
- サーバーが起動していることを確認します。
mcp.jsonファイルを使用して、GitHub Copilot 用に MCP サーバーを構成します。mcp.jsonの構成からサーバーを起動します。
テスト 🧪
curl を使用して、保護されたエンドポイントをテストできます:
curl -H "Authorization: Bearer <token>" http://localhost:8000/mcp
トークンが指定されていない場合、または無効なトークンが指定された場合は、401 Unauthorized レスポンスが返されます。
ライセンス 📜
LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。