この記事では、Azure Functionsでホストされている Model Context Protocol (MCP) サーバーを Microsoft Foundry Agent Service に接続する方法について説明します。 このガイドを完了すると、エージェントは MCP サーバーによって公開されているツールを検出して呼び出すことができます。
この記事では、Foundry Agent Service から MCP サーバー接続を構成するためのこの基本的なプロセスに従います。
- Azureで MCP サーバーを作成して関数アプリにデプロイします。
- MCP サーバー エンドポイント URL を取得します。
- (必要に応じて) 認証資格情報を取得します。
- キーベースの認証を無効にします (不要な場合)。
- 既存のエージェントに MCP サーバー ツール接続を追加します。
[前提条件]
開始する前に、次のリソースが配置されていることを確認します。
接続オプションを確認する
次の表は、Foundry Agent Service の MCP サーバーへのエージェント接続を認証するために現在サポートされているオプションをまとめたものです。
| メソッド |
Description |
利用シーン |
追加のセットアップ |
Functions は、次の機能をサポートします。 |
|
キーによる (既定) |
エージェントは、要求ヘッダーで共有 関数アクセス キー を渡すことによって認証します。 この方法は、Functions の HTTP エンドポイントの既定の認証です。 |
開発中、または MCP サーバーがMicrosoft Entra認証を必要としない場合に使用します。 |
None |
イエス |
|
Microsoft Entra |
エージェントは、独自の ID (エージェント ID) または Foundry プロジェクトの共有 ID (プロジェクトマネージド ID) を使用して認証します。 |
運用シナリオではエージェント ID を使用しますが、共有 ID は開発に限定します。 |
組み込みの MCP 認証を有効にします。キーベースの認証も無効にします。 |
プロジェクトマネージド (共有) ID |
|
OAuth ID パススルー |
エージェントは、指定されたトークンを使用して認証を行い、ユーザーにサインインとアクセスの承認を求めます。 |
各ユーザーが独自の ID で認証する必要があり、ユーザー コンテキストを永続化する必要がある場合は、運用環境で使用します。 |
組み込みの MCP 認証を有効にします。キーベースの認証も無効にします。 |
イエス |
|
認証されていないアクセス |
エージェントが認証されていない呼び出しを行います。 |
開発中、または MCP サーバーがパブリック情報にのみアクセスする場合に使用します。 |
キーベースの認証を無効にします。 |
イエス |
Foundry Agent Service でサポートされる MCP サーバー認証オプションの詳細については、「 MCP ツールの認証を設定する」を参照してください。
リモート MCP サーバー エンドポイントを取得する
エージェントを Functions ホース MCP サーバーに接続する前に、サービスのエンドポイント URL を取得する必要があります。 特定の URL 形式は、MCP サーバーの作成方法とデプロイ方法によって異なります。
https://<FUNCTION_APP_NAME>.azurewebsites.net/runtime/webhooks/mcp
詳細については、Azure Functionsの「Remote MCP servers」を参照してください。
資格情報の取得
エージェントが MCP サーバーに接続するために必要な資格情報は、接続をセキュリティで保護する方法によって異なります。 接続認証オプションを示すタブを選択します。
アクセス キーを使用して MCP サーバー エンドポイントに接続する場合は、共有秘密鍵を使用して、ランダム エージェントがサーバーに接続しにくくします。
Important
アクセス キーは既定で不要なエンドポイント アクセスを防ぐのに役立ちますが、Microsoft Entra IDまたは OAuth ID 認証を使用して、運用環境の MCP サーバー エンドポイントにセキュリティを強化することを検討してください。
必要なアクセス キーの名前は、MCP サーバーのデプロイによって異なります。
| MCP サーバーの種類 |
キー名 |
キーの種類 |
| MCP 拡張機能ベースのサーバー |
mcp_extension |
システム キー |
| セルフホステッド MCP サーバー |
default |
ホスト キー |
Azure ポータルからキーを取得するには:
-
Azure ポータルで関数アプリ リソースに移動します。
- 左側のメニューの [ 関数 ] ドロップダウンを展開します。
- [ アプリ キー] を選択します。
- MCP サーバーの種類に応じて、
mcp_extensionキー ([システム キー] の下) または defaultキー ([ホスト キー] の下) をコピーします。
詳細については、「work with access keys in Azure Functions」を参照してください。
Agent Identity と Project Managed IdentityMicrosoft Entra認証を使用します。 現時点では、Functions では Project マネージド ID のみがサポートされています。これには、サーバー で組み込みの認証と承認を使用する必要があります。
サーバー アプリにユーザー割り当てマネージド ID がない場合は、 最初に作成します。
サーバー アプリから Foundry プロジェクトにユーザー割り当てマネージド ID を接続します。
Azure ポータルで、Foundry を検索します。 Microsoft Foundry で、[ すべてのリソース] から Foundry リソースを選択します。
リソース管理>Identity>割り当てられたユーザーで、[ + 追加] を選択します。 サーバー アプリで使用されるユーザー割り当てマネージド ID を選択し、[ 追加] を選択します。
新しく追加した ID を選択し、 クライアント ID の値をコピーします。
ユーザー割り当てマネージド ID を許可されたクライアント アプリケーションとしてサーバー アプリに追加します。
Azure ポータルでアプリ リソースに移動します。
左側のメニューから [設定>認証 ] を選択します。
登録済みの Entra ID プロバイダーの [編集] アイコンを選択します。
プロバイダーで、[ クライアント アプリケーションの要件 ] を [特定のクライアント アプリケーションからの要求を許可 する] に設定し、[ 許可されたクライアント アプリケーション] の横にある編集ボタンを選択します。
ユーザー割り当てマネージド ID のクライアント ID を追加し、[ OK] を 選択して [保存] を選択します。
サーバー アプリの Entra アプリ登録から アプリケーション ID URI を 取得します。この URI は、エージェントで Entra 認証の登録を完了する必要があります。
アプリの [認証 ] ページに戻り、登録済みの Entra ID プロバイダーの名前を選択します。 この選択により、Entra アプリのリソース ページが表示されます。
左側のメニューで、[管理] >[API をExpose] を選択します。
ページの上部にある アプリケーション ID URI を コピーします。 この ID 値は api://aaaabbbb-0000-cccc-1111-dddd2222eeeeのようになります。
OAuth ID パススルーは、MCP サーバーへのサインインとアクセスの承認をユーザーに求めます。 組み込みの認証を使用する Functions でホストされる MCP サーバーの場合は、Microsoft Entra アプリの登録でカスタム OAuth を使用します。
Azure ポータルから必要な資格情報を取得するには:
Azure ポータルで関数アプリ リソースに移動します。
左側のメニューから [設定>認証 ] を選択します。
Microsoft の横にある Entra アプリの名前を選択 します。 この選択により、Entra アプリ リソースが表示されます。
[概要] ページの [要点] から、次のフィールドの値をコピーします。
-
アプリケーション (クライアント) ID
-
ディレクトリ (テナント) ID
-
アプリケーション ID URI
テナント ID を使用して、必要な OAuth URL を作成します。
| URL の種類 |
Format |
|
認証 URL |
https://login.microsoftonline.com/<TENANT_ID>/oauth2/v2.0/authorize |
|
トークン URL |
https://login.microsoftonline.com/<TENANT_ID>/oauth2/v2.0/token |
|
URL の更新 |
https://login.microsoftonline.com/<TENANT_ID>/oauth2/v2.0/token |
<TENANT_ID>を実際のテナント ID 値に置き換えます。 これらの値は後で保存します。
管理>証明書&シークレット を選択します。 まだクライアント シークレットがない場合は新しいクライアント シークレットを作成し、後で使用するためにその値をコピーします。
管理>API を公開して、既存のスコープをコピーします。
Foundry ポータルで OAuth ID パススルーを構成すると、リダイレクト URL が表示されます。 このリダイレクト URL を Microsoft Entra アプリ登録に追加するには、Entra アプリの登録に戻る必要があります。
認証されていないアクセスには共有シークレットや認証は必要ないため、資格情報を収集する必要はありません。 ただし、サーバー エンドポイントで匿名アクセスが許可されるように、 キーベースの認証を無効にする 必要があります。
Important
このオプションを使用すると、任意のクライアントまたはエージェントが MCP サーバー エンドポイントにアクセスできます。 読み取り専用の公開情報を返すツールに対して、またはプライベート開発時にのみ使用します。
MCP サーバーを追加する
MCP サーバーへのエージェント接続を作成するプロセスは、特定のエンドポイント認証オプションによって異なります。
キーベースの認証を使用する場合、エージェントは要求ヘッダーの関数アクセス キーを MCP サーバーに渡すことによって認証します。
MCP サーバー エンドポイントに接続するには:
Foundry ポータル (新しい Foundry) に移動します。
ページの上部にある [ ビルド ] タブを選択し、MCP サーバーに接続するエージェントを選択します。
[ プレイグラウンド ] タブで、[ ツール ] ドロップダウンを展開し、[ 追加] を選択します。
[ツールの選択] の [カスタム] タブで、[モデル コンテキスト プロトコル (MCP)]>[作成] を選択します。
[モデル コンテンツ プロトコルの追加] ツールで、次の表の情報を入力して、アクセス キーベースの接続を構成します。
| フィールド |
Description |
Example |
|
名前 |
MCP サーバー用の一意の識別子。 関数アプリ名を既定値として使用します。 |
contoso-mcp-tools |
|
リモート MCP サーバー エンドポイント |
MCP サーバーの URL エンドポイント。 |
https://contoso-mcp-tools.azurewebsites.net/runtime/webhooks/mcp |
|
認証 |
使用する認証方法。 |
Key-based |
|
資格情報 |
関数アプリで認証するキーと値のペア。 |
x-functions-key: aaaaaaaa-0b0b-1c1c-2d2d-333333333333 |
[ 接続 ] を選択して、MCP サーバー エンドポイントへの接続を作成します。 [ ツール] の下にサーバー名が表示されます。
[ 保存] を 選択して、MCP ツール構成をエージェントに保存します。
Microsoft Entra認証を使用すると、エージェントはマネージド ID を使用して MCP サーバーに接続することで認証を行います。
MCP サーバー エンドポイントに接続するには:
Foundry ポータル (新しい Foundry) に移動します。
ページの上部にある [ ビルド ] タブを選択し、MCP サーバーに接続するエージェントを選択します。
[ プレイグラウンド ] タブで、[ ツール ] ドロップダウンを展開し、[ 追加] を選択します。
[ツールの選択] の [カスタム] タブで、[モデル コンテキスト プロトコル (MCP)]>[作成] を選択します。
Add Model Content Protocol tool で、次の表の情報を入力して、Microsoft Entraベースの接続を構成します。
| フィールド |
Description |
Example |
|
名前 |
MCP サーバー用の一意の識別子。 関数アプリ名を使用できます。 |
contoso-mcp-tools |
|
リモート MCP サーバー エンドポイント |
MCP サーバーの URL エンドポイント。 |
https://contoso-mcp-tools.azurewebsites.net/runtime/webhooks/mcp |
|
認証 |
使用する認証方法。 |
Microsoft Entra |
|
タイプ |
エージェントが認証に使用する ID の種類。 |
Project Managed Identity |
|
オーディエンス |
関数アプリのアプリケーション ID URI (Entra 登録用)。 この値は、トークンの対象となるアプリを ID プロバイダーに伝えます。 |
api://aaaabbbb-0000-cccc-1111-dddd2222eeee |
[ 接続 ] を選択して、MCP サーバー エンドポイントへの接続を作成します。 [ ツール] の下にサーバー名が表示されます。
[ 保存] を 選択して、MCP ツール構成をエージェントに保存します。
OAuth ID パススルーを使用すると、エージェントはユーザーにサインインを求め、サーバーに接続するときに返されたアクセス トークンを使用します。
Foundry ポータル (新しい Foundry) に移動します。
ページの上部にある [ ビルド ] タブを選択し、MCP サーバーに接続するエージェントを選択します。
[ プレイグラウンド ] タブで、[ ツール ] ドロップダウンを展開し、[ 追加] を選択します。
[ツールの選択] の [カスタム] タブで、[モデル コンテキスト プロトコル (MCP)]>[作成] を選択します。
[ モデル コンテンツ プロトコルの追加] ツールで、次の表の情報を入力して、OAuth ID パススルー接続を構成します。
| フィールド |
Description |
Example |
|
名前 |
MCP サーバー用の一意の識別子。 関数アプリ名を使用できます。 |
contoso-mcp-tools |
|
リモート MCP サーバー エンドポイント |
MCP サーバーの URL エンドポイント。 |
https://contoso-mcp-tools.azurewebsites.net/runtime/webhooks/mcp |
|
認証 |
使用する認証方法。 |
OAuth Identity Passthrough |
|
クライアント ID |
関数アプリ Entra 登録のクライアント ID |
00001111-aaaa-2222-bbbb-3333cccc4444 |
|
クライアント シークレット |
関数アプリ Entra 登録のクライアント シークレット |
abcEFGhijkLMNopqRST |
|
トークン URL |
サーバー アプリが呼び出して、アクセス トークンの承認コードまたは資格情報を交換するエンドポイント。 |
https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/oauth2/v2.0/token |
|
認証 URL |
ユーザーが認証にリダイレクトされ、サーバー アプリに承認が付与されるエンドポイント。 |
https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/oauth2/v2.0/authorize |
|
URL の更新 |
現在のアクセス トークンの有効期限が切れたときに新しいアクセス トークンを取得するために使用されるエンドポイント。 |
https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/oauth2/v2.0/token |
|
スコープ |
サーバー アプリが承認サーバーに要求する特定のアクセス許可またはリソース アクセス レベル |
api://aaaabbbb-0000-cccc-1111-dddd2222eeee/user_impersonation |
[ 接続 ] を選択して、MCP サーバー エンドポイントへの接続を作成します。
資格情報プロバイダーを作成すると、 リダイレクト URL が表示されます。 このウィンドウを 閉じる 前に、必ず URL 値をコピーしてください。 このリダイレクト URL を Entra アプリの登録に追加する必要があります。
Entra アプリの登録に戻り、[ 管理>認証 ] で [ + リダイレクト URI の追加] を選択します。
[Web] を選択し、コピーしたリダイレクト URI の値を貼り付けて、[構成] を選択します。
エージェント ウィンドウに戻り、[ 閉じる>保存] を選択して、MCP ツールの構成をエージェントに保存します。
認証されていないアクセスは、MCP サーバーが認証を必要とせず、パブリック情報にのみアクセスする場合にのみ使用します。
MCP サーバー エンドポイントに接続するには:
Foundry ポータル (新しい Foundry) に移動します。
ページの上部にある [ ビルド ] タブを選択し、MCP サーバーに接続するエージェントを選択します。
[ プレイグラウンド ] タブで、[ ツール ] ドロップダウンを展開し、[ 追加] を選択します。
[ツールの選択] の [カスタム] タブで、[モデル コンテキスト プロトコル (MCP)]>[作成] を選択します。
[モデル コンテンツ プロトコルの追加] ツールで、認証されていない接続を構成するために、次の表の情報を指定します。
| フィールド |
Description |
Example |
|
名前 |
MCP サーバー用の一意の識別子。 関数アプリ名を使用できます。 |
contoso-mcp-tools |
|
リモート MCP サーバー エンドポイント |
MCP サーバーの URL エンドポイント。 |
https://contoso-mcp-tools.azurewebsites.net/runtime/webhooks/mcp |
|
認証 |
使用する認証方法。 |
Unauthenticated |
[ 接続 ] を選択して、MCP サーバー エンドポイントへの認証されていない接続を作成します。 これで、[ ツール] の下にサーバー名が表示されます。
[ 保存] を 選択して、MCP ツール構成をエージェントに保存します。
MCP サーバーをエージェントに接続した後、ツールが正しく動作することを確認します。
- エージェント ビルダーで、[ プレイグラウンド] の下にあるチャット ウィンドウを見つけます。
- MCP ツールの 1 つをトリガーするプロンプトを入力します。 たとえば、MCP サーバーにグリーティング ツールがある場合は、
Use the greeting tool to say helloを試してください。
- OAuth ID パススルーを使用している場合は、[ 同意を開く ] を選択し、Entra アカウントでサインインします。
- エージェントが MCP ツールの呼び出しを要求したら、ツール名と引数を確認し、[ 承認] を選択して呼び出しを許可します。
- ツールが期待される結果を返すかどうかを確認します。
エージェントは、Azure Functionsでホストされている MCP サーバーによって公開されているツールを使用できるようになりました。
関連資料
次の追加の記事は、エージェントと関数アプリの機能を構築するのに役立ちます。