3.8 KiB
Raw Blame History

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:8000Authorization callback URLにはhttp://localhost:8000/github/callbackを入力します。その後、Register applicationボタンをクリックすると、アプリケーションが正常に登録されます。

登録が成功したら、Client IDを記録し、Generate a new client secretをクリックしてsecretを生成します。secretは生成時にのみ表示されるので注意してください。

2. 環境変数の設定

Client IDsecretを取得した後、それらを環境変数として設定する必要があります:

::: 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の個人情報を取得できます。