mcpField
M
MCP with OAuth

MCP with OAuth

ローカル
github.com/akshay12390開発ツール077 週間前に更新

MCP with OAuth について

MCP with OAuthは、MCP仕様に沿ってOAuth2でMCPサーバーを保護する方法を示すSpringベースのサンプルです。クライアントクレデンシャルとブラウザー経由のPKCE認可を例示し、認証付きMCP接続を検討する開発者向けです。

主な機能

  1. 01OAuth2エンドポイントでトークンを発行
  2. 02クライアントクレデンシャルフローを例示
  3. 03ブラウザー経由のPKCE認可を例示
  4. 04MCP Inspectorで接続

活用シーン

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

MCP 対応

OAuth2で保護されたMCPサーバーと、アクセストークンを使ってMCP Inspectorから接続する方法を示します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"weather-starter-webmvc-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 つのサーバーを複数のクライアントで再利用できます。