mcpField
M
MCP with OAuth

MCP with OAuth

ローカル
github.com/akshay12390メディア・デザイン076 週間前に更新

MCP with OAuth について

MCP 仕様に沿って OAuth2 で MCP サーバーを保護する方法を示す Spring のサンプルです。トークン認証を検討する開発者向けに、クライアントクレデンシャルとブラウザー経由の PKCE 認可フローを扱います。

主な機能

  1. 01OAuth2 で保護された MCP サーバー
  2. 02クライアントクレデンシャルのトークンフロー
  3. 03PKCE によるブラウザー認可
  4. 04アクセストークン発行エンドポイント

活用シーン

  1. 01トークンベースの MCP サーバーアクセスをテスト
  2. 02クライアントクレデンシャル認可を検証
  3. 03ブラウザー経由の PKCE 認可を試行

MCP 対応

OAuth2 で保護された MCP サーバーの実装例です。MCP クライアントは発行されたアクセストークンで接続し、MCP Inspector でテストできます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"weather-oauth2-server": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
起動コマンドnpx -y @modelcontextprotocol/inspector

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@modelcontextprotocol/inspector

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

OAuth を使用する MCP

このサンプルでは、MCP 仕様に従って、OAuth2 を使用して MCP サーバーを保護する方法を紹介します。

はじめに

次のコマンドでプロジェクトを実行します。

./mvnw spring-boot:run
クライアントクレデンシャル

/oauth2/token エンドポイントを呼び出してトークンを取得します。

curl -XPOST "http://localhost:8080/oauth2/token" \
  --data grant_type=client_credentials \
  --user "mcp-client:secret"
# And copy-paste the access token
# Or use JQ:
curl -XPOST "http://localhost:8080/oauth2/token" \
  --data grant_type=client_credentials \
  --user "mcp-client:secret" | jq -r ".access_token"
ブラウザーフローを使用した認可コード(PKCE)

まず認可エンドポイントを呼び出して認可コードを取得します。

python3 pkce_generator.py

次に、/oauth2/token エンドポイントを呼び出してアクセストークンを取得します。

python3 token_request.py

MCP Inspector の使用

前の手順で生成したトークンを保存し、MCP Inspector を起動します。

npx @modelcontextprotocol/[email protected]

MCP Inspector にトークンを貼り付けます。「Connect」をクリックすれば完了です!

トークンの有効期間は 15 分です。

実装時の考慮事項

依存関係

Spring で MCP サーバーの OAuth2 サポートを追加するには、次のものが必要です。

  1. Spring Security(セキュリティの基盤)
  2. Spring Authorization Server(トークンの発行)
  3. Spring Security: OAuth2 Resource Server( トークンを使用した認証)

Spring Authorization Server はリアクティブスタックをサポートしていないため、トークンの発行は Servlet でのみ動作します。

コメント

MCP は初めてですか?

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

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