ホストされている MCP サーバーの開発者ガイド (プレビュー)

Important

このプレビュー機能は、 Microsoft Azure プレビューの追加使用条件に従います

このガイドでは、コネクターネームスペースにおけるホスト型モデルコンテキストプロトコル(MCP)サーバーの機能、構成詳細、要件を扱います。 ホストされたMCPサーバーの概要については、 コネクターネームスペースのホストMCPサーバーを参照してください。

サポートされているリージョン

プレビュー期間中、ホストされている MCP サーバーは次のリージョンで利用できます。

  • 米国中西部
  • 東アジア
  • 米国中部
  • 北ヨーロッパ

コネクタ名前空間ポータルへのアクセス

ホストされている MCP サーバーとその名前空間は、コネクタ名前空間ポータルで管理します。 次の 2 つの方法でアクセスできます。

  • Azure ポータルを使用します。 Azure ポータルでプロビジョニングされた名前空間リソースを開き、その名前空間のコネクタ名前空間ポータルにリンクします。
  • 直接Web ポータルに移動し、名前空間を選択します。

Authentication

ホストされる MCP サーバーには、2 つの認証境界が含まれます。

受信認証

受信認証は、MCP クライアントとホストされているサーバーの間の接続をセキュリティで保護します。 名前空間は、Microsoft Entra IDを使用した OAuth ベースの認証を提供します。

送信認証

アウトバウンド認証は、ホストサーバーと下流サービス間の接続を安全にします。 サーバーでは、次のメカニズムがサポートされています。

Method Description
マネージド ID サーバーは、名前空間に割り当てられたマネージド ID を使用してダウンストリーム サービスに対して認証を行います。 資格情報の管理は必要ありません。
On-Behalf-of (OBO) サーバーは呼び出し元のユーザーの ID を使用してダウンストリーム サービスに対して認証を行います。これにより、委任されたアクセス シナリオが可能になります。

マネージド ID オプション

アウトバウンド認証にマネージドIDを使用する場合、以下のいずれかを選択してください:

  • システム割り当てマネージド ID (SAMI)。 名前空間の作成時に有効にすると、名前空間が自動的に作成され、名前空間に割り当てられます。 名前空間のライフサイクルに関連付けられているため、名前空間が削除されると削除されます。
  • ユーザー割り当てマネージド ID(UAMI)。 名前空間に作成して割り当てるスタンドアロン Azure リソース。 これは独立して保持され、リソース間で再利用できます。

ユーザー割り当てマネージド ID を名前空間に追加する手順

UAMI を使用する場合は、その ID を名前空間に追加する 必要があります 。 それ以外の場合、サーバーはダウンストリーム サービスに対して認証できません。

UAMI を名前空間に追加するには:

  1. Web ポータルで、名前空間インスタンスに移動します。

  2. 左側のメニューで、[ID] タブ 選択します。

  3. [ ユーザー割り当て ] セクションで、[ +追加 ] ボタンを選択します。

  4. 目的のマネージド ID を検索し、[ 追加] を選択します。

  5. 右上の [保存] を選択して変更を保存します。

Application Insights との統合

指定した Application Insights リソースにログとメトリックを送信するようにサーバーを構成できます。 サーバー作成フローは、作成直後にこのオプションを設定する方法を提供します。 見逃した場合は、次の手順に従います。

  1. Web ポータルで、名前空間インスタンスに移動します。

  2. [ 監視 ] セクションで、[ 監視を有効にする] を選択します。

  3. Application Insights リソースの接続文字列を入力し、[有効] を選択します。

サーバー ログを表示するには:

  1. Azure ポータルに移動し、構成した Application Insights リソースを見つけます。

  2. 左側のメニューで、調査>検索を選択します

  3. [ローカル時刻] フィルターを目的の時間範囲に設定します。 ログをトレースまたは個々の項目として表示します。

アクセス ポリシー

アクセスポリシーを設定することで、ホストされたMCPサーバーへのアクセス権をコントロールできます。 サーバーを作成すると、ポータルが自動的にポリシーを作成します。 他のユーザーにサーバーへのアクセスを許可するポリシーを追加できます。

個々のユーザーまたはグループのアクセス ポリシーを追加できます。 グループを作成するには、Microsoft Entra ID でのグループの管理を参照してください。

アクセス ポリシーを追加するには:

  1. Web ポータルで、名前空間インスタンスに移動します。

  2. 左側のメニューで [MCP コネクタ ] タブを選択し、サーバーを開きます。

  3. サーバー内で、[ アクセス ポリシー ] タブを選択します。

  4. [ + アクセス ポリシーの追加] ボタンを選択します。

  5. 希望する Principal Type の値を選択します。

  6. プリンシパル オブジェクト ID の値を入力します。 Microsoft Entra 管理センターで見つけることができます。

  7. サブスクリプションの テナント ID 値を入力します。

サーバー展開の要件

ほとんどのホストMCPサーバーは追加のアーティファクトなしで展開します。 カタログからサーバーを選択すると、名前空間によってプロビジョニングされます。 一部のサーバーでは、デプロイ時に追加の構成が必要です。

Azure SQL

Azure SQL MCP サーバーは、Data API Builder (DAB) 上に構築されています。 DAB は、データベース上にセキュリティで保護されたデータ API レイヤーを提供し、エージェントが呼び出すことができる MCP ツールとして選択したエンティティを公開します。

エージェントをデータベースに直接接続するのではなく、サーバーは DAB を実行します。 DAB では、指定したエンティティ定義とエンティティごとのアクセス許可が適用されるため、エージェントは明示的に公開したデータと操作にのみアクセスできます。

Azure SQLには、次を定義する DAB 構成ファイルが必要です。

  • データベース接続文字列。
  • 公開するエンティティ (テーブルまたはビュー)。
  • 各エンティティのアクセス許可。

このファイルを生成するには、 DAB CLI をインストールします。 次に、次のコマンドを実行して MCP のみを有効にします (DAB は GraphQL エンドポイントと REST エンドポイントもサポートしているため)。

dab init --database-type "mssql" --host-mode "Development" --graphql.enabled false --rest.enabled false --connection-string "<your-connection-string>"

接続文字列の形式は、サーバーがデータベースにアクセスするために使用するマネージド ID の種類によって異なります。

Server=<your-sql-server>.database.windows.net;Database=<your-database>;Authentication=Active Directory Default;Encrypt=True;TrustServerCertificate=False;

ファイルを生成したら、エンティティと関連するアクセス許可も追加する必要があります。 次のコマンドは、例として Books を追加します。

dab add Books --source "dbo.Books" --permissions "anonymous:*"

エンティティとアクセス許可の構成の詳細については、 データ API ビルダーの承認の概要を参照してください。

名前空間ポータルでサーバーのデプロイ中に生成された構成ファイル () をアップロードします。

マネージド ID へのアクセスを許可する

デプロイ後、マネージド ID にデータベースへのアクセス権を付与します。 Azure ポータルで、SQL データベース (管理者としてサインイン) のクエリ エディターで次のコマンドを実行して、アクセス許可を付与します。 ID の種類に対して正しいクエリを選択してください。

CREATE USER [<your-connector-namespace-name>] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [<your-connector-namespace-name>];
ALTER ROLE db_datawriter ADD MEMBER [<your-connector-namespace-name>];
GRANT VIEW DEFINITION TO [<your-connector-namespace-name>];

ID を作成したことを確認するには:

SELECT name, type_desc, authentication_type_desc
FROM sys.database_principals
WHERE type IN ('E', 'X')
ORDER BY name;
-- Expected: <identity-name> | EXTERNAL_USER | EXTERNAL