3.8 KiB
MCPサーバーのOAuth認証実装
SSEまたはStreamable HTTPを使用して接続する際、セキュリティを強化するためにインターフェースに認証メカニズムを設計できます。MCP公式ではOAuthプロトコルの採用を推奨しています。以下ではGitHubユーザー情報の取得を例に、openmcp-clientを使用してOAuth認証付きのインターフェースデバッグを完了する方法を説明します。
1. Github OAuth認証IDとsecretの取得
GitHubユーザー情報関連APIを使用するため、まずGitHub OAuthアプリのClient IDとClient secretを取得する必要があります。
Github Developersにアクセスし、New OAuth App
をクリックして新しいOAuth APPを作成します。アプリケーション名は任意で入力し、Homepage URL
にはhttp://localhost:8000
、Authorization callback URL
にはhttp://localhost:8000/github/callback
を入力します。その後、Register application
ボタンをクリックすると、アプリケーションが正常に登録されます。
登録が成功したら、Client ID
を記録し、Generate a new client secret
をクリックしてsecret
を生成します。secretは生成時にのみ表示されるので注意してください。
2. 環境変数の設定
Client ID
とsecret
を取得した後、それらを環境変数として設定する必要があります:
::: code-group
export MCP_GITHUB_GITHUB_CLIENT_ID={{Client ID}}
export MCP_GITHUB_GITHUB_CLIENT_SECRET={{secret}}
$env:MCP_GITHUB_CLIENT_ID = "your_id"
$env:MCP_GITHUB_CLIENT_SECRET = "your_secret"
set MCP_GITHUB_GITHUB_CLIENT_ID={{Client ID}}
set MCP_GITHUB_GITHUB_CLIENT_SECRET={{secret}}
:::
注意:cmdで環境変数を設定する際は引用符を付けないでください。
3. ソースコードのクローン
次に、OAuth認証付きのMCPサーバーをデプロイします。公式python案例を参照してください。
まず公式python-sdkのソースコードをクローンします:
git clone https://github.com/modelcontextprotocol/python-sdk/ # ソースコードをクローン
cd examples/servers/simple-auth # 対応するディレクトリに移動
4. MCP Serverの起動
必要に応じて仮想環境を作成し依存関係をインストールした後、uv
を使用して実行するか、直接python main.py
を実行します。環境変数を設定していないと、起動時に2 validation errors for ServerSettings
エラーが発生するので注意してください。
5. openmcp-clientの起動
これで、起動したばかりのserverにopenmcp-clientを使用して接続できます。ウェブ版でもVSCodeでも可能です。
プラス記号をクリックして接続を追加し、serverコードの--transport
パラメータに基づいてSSEかStreamable HTTPかを決定します。SSEの場合、URLはhttp://localhost:8000/sse
を入力します。Streamable HTTPの場合、URLはhttp://localhost:8000/mcp
を入力します。認証署名は入力不要です。
次に現在のserverに接続すると、自動的にウェブページが開き認証が行われます。初回アクセス時は認証をクリックする必要があり、認証が成功するとウェブページは自動的に閉じます。
認証が成功すると、ツールページに移動し、get_user_profile
ツールが表示されるはずです。クリックして使用すると、GitHubの個人情報を取得できます。