この記事では、Microsoft Entra 認証を使用して、Azure App Service でホストされているモデル コンテキスト プロトコル (MCP) サーバーをセキュリティで保護する方法について説明します。 認証を有効にすると、Microsoft Entra で認証されたユーザーのみが Visual Studio Code の Copilot エージェント モードを介して MCP サーバーにアクセスできるようになります。
その他の認証方法と一般的な MCP サーバーのセキュリティの概念については、 Azure App Service でのモデル コンテキスト プロトコル サーバーのセキュリティ保護に関するページを参照してください。
[前提条件]
MCP サーバーをホストする App Service アプリ。 作成する必要がある場合は、次のいずれかのチュートリアルを参照してください。
- App Service アプリを GitHub Copilot Chat (.NET) 用 MCP サーバーとして統合する
- App Service アプリを GitHub Copilot Chat (Java) 用 MCP サーバーとして統合する
- App Service アプリを GitHub Copilot チャット用 MCP サーバーとして統合する (Python)
- App Service アプリを GitHub Copilot Chat 用 MCP サーバーとして統合する (Node.js)
Microsoft Entra 認証を有効にする
Azure portal で、App Service アプリに移動します。
左側のメニューで、[>認証] を選択し、[ID プロバイダーの追加] を選択します。
[ID プロバイダーの追加] ページで、ID プロバイダーとして Microsoft を選択します。
App Service 認証設定の [クライアント シークレットの有効期限] で、有効期限 (6 か月など) を選択します。
他のすべての既定値をそのまま使用し、[ 追加 ] を選択して ID プロバイダーを作成します。
これにより、クライアント シークレットを使用して Microsoft Entra ID に新しいアプリ登録が作成され、認証に使用するように App Service アプリが構成されます。
App Service 認証で Visual Studio Code を承認する
認証を有効にした後、MCP サーバーにアクセスするために Visual Studio Code を承認する必要があります。
App Service アプリの [認証 ] ページの [ ID プロバイダー] で、作成した Microsoft プロバイダーの横にある [編集] (鉛筆アイコン) を選択します。
[ ID プロバイダーの編集 ] ページの [ 追加のチェック>Client アプリケーション要件] で、[ 特定のクライアント アプリケーションからの要求を許可する] を選択します。
鉛筆ウィジェットを選択して、許可されているアプリケーションを編集します。
[ 許可されたクライアント アプリケーション ] フィールドに、Visual Studio Code クライアント ID:
aebc6443-996d-45c2-90f0-388ff96faa56を追加します。[ OK] を選択し、[ 保存] を選択します。
アプリの登録で Visual Studio Code を承認する
次に、API を Visual Studio Code に公開するようにアプリの登録を構成する必要があります。
App Service アプリの [認証 ] ページに戻ります。
[ID プロバイダー] 列で Microsoft プロバイダー を選択して、アプリ登録ページを開きます。
アプリ登録ページで、左側のメニューから [管理>API をExpose] を選択します。
[ 承認されたクライアント アプリケーション] で、[ クライアント アプリケーションの追加] を選択します。
[ クライアント ID ] フィールドに、Visual Studio Code クライアント ID:
aebc6443-996d-45c2-90f0-388ff96faa56を入力します。このスコープを承認するには、 user_impersonation スコープの横にあるチェック ボックスをオンにします。
アプリケーション追加を選択します。
この API で定義されているスコープで、完全なスコープ値を見つけてコピーします。
api://<app-registration-app-id>/user_impersonationのようになります。このスコープ値は、次のセクションで必要になります。
承認スコープを設定して保護されたリソース メタデータを有効にする
MCP サーバー承認を有効にするには、アプリ設定で承認スコープを設定して、保護されたリソース メタデータ (PRM) を構成する必要があります。 これにより、MCP クライアントは、 /.well-known/oauth-protected-resource エンドポイントを介して認証要件を検出できます。
Azure portal で、App Service アプリ ページに戻ります。
左側のメニューで、 設定>Environment 変数を選択します。
[ 追加] を選択して、新しいアプリケーション設定を作成します。
名前には、
WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPESを入力します。[ 値] に、アプリ登録からコピーしたスコープ (
api://<app-registration-app-id>/user_impersonation) を貼り付けます。[ 適用] を選択し、もう一度 [適用 ] を選択してアプリを確認して再起動します。
この設定により、MCP サーバー承認に必要なスコープが含まれるよう PRM が構成されます。
Visual Studio Code から接続する
これで、Visual Studio Code からセキュリティで保護された MCP サーバーに接続できます。
ローカル コンピューターで Visual Studio Code を開きます。
MCP 構成ファイル (
mcp.json) を開くか作成します。 ワークスペース スコープ MCP 構成の場合は、ワークスペースの .vscode ディレクトリに作成します。MCP サーバー構成を追加します。
{ "servers": { "my-app-service-mcp": { "type": "http", "url": "https://<your-app-url>.azurewebsites.net/api/mcp" } } }<your-app-url>を実際の App Service アプリの URL に置き換えます。 アプリの既定のドメインは、Azure portal の [概要 ] ページで確認できます。 この例では、パスは/api/mcpですが、実際のパスは MCP コードによって異なります。Visual Studio Code で、コマンド パレット (macOS の
Ctrl+Shift+PまたはCmd+Shift+P) を開きます。「MCP: サーバーの一覧表示」と入力し、Enter キーを押します。
一覧から MCP サーバーを選択し、[ サーバーの開始] を選択します。
Visual Studio Code では、Microsoft Entra ID を使用してサインインするように自動的に求められます。 認証プロンプトに従います。
MCP 拡張機能は、構成したスコープを使用して OAuth フローを処理し、Visual Studio Code は MCP サーバーを呼び出すために必要なアクセス トークンを取得します。
ヒント
予期しない認証プロンプトが表示された場合、またはエラーが発生した場合は、「 トラブルシューティング」を参照してください。
認証が完了すると、MCP サーバーが接続され、GitHub Copilot Chat エージェント モードまたは他の MCP クライアントで使用できるようになります。
接続をテストする
MCP サーバーが適切にセキュリティで保護され、アクセス可能であることを確認するには、次の手順を実行します。
Visual Studio Code で GitHub Copilot Chat を開きます (macOS の
Ctrl+Alt+IまたはCmd+Option+I)。MCP サーバーから機能を使用してみてください。 たとえば、Todos サンプルを使用している場合は、次のようになります。
Show me all my tasksGitHub Copilot が MCP サーバーを正常に呼び出すと、チャットに結果が表示されます。 問題が発生した場合は、「 トラブルシューティング」を参照してください。
トラブルシューティング
Visual Studio Code で MCP サーバーを起動すると、構成が正しいかどうかを示す認証プロンプトが表示されます。
正しい構成: Visual Studio Code では、 Microsoft での認証を求められます。 つまり、保護されたリソース メタデータ (PRM) が正しく構成され、Visual Studio Code によって、
/.well-known/oauth-protected-resourceエンドポイントから承認サーバーとスコープが正常に検出されました。正しくない構成: Visual Studio Code では、App Service アプリの
/authorizeエンドポイント (https://<your-app-url>.azurewebsites.net/authorizeなど) で認証するように求められます。 これは、PRM が正しく構成されていないことを意味します。 Visual Studio Code では承認サーバーと承認スコープが見つからないため、存在しない承認エンドポイントとしてアプリの URL を使用するようにフォールバックします。
正しくない認証プロンプトが表示された場合は、次のことを確認します。
- アプリ設定
WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPESは、完全なスコープ値api://<app-registration-app-id>/user_impersonationで正しく構成されています。 - アプリ設定を追加した後、App Service アプリが完全に再起動しました。 再起動が完了するまでに数分かかる場合があります。
サインイン後に認証エラーが表示される場合は、次のことを確認します。
- Visual Studio Code クライアント ID (
aebc6443-996d-45c2-90f0-388ff96faa56) は、App Service 認証構成 (許可されたクライアント アプリケーション) とアプリ登録 ( API の公開で承認されたクライアント アプリケーション) の両方に追加されます。 - アプリ設定のスコープ値は、アプリの登録で定義されているものと正確に一致します。