MCP サービスを使用してエージェントをサード パーティ製ツールに接続する

MCP サービスは、外部 MCP サーバーを登録し、エージェントがそれをどのように使用するかを管理する Unity Catalog のセキュリティ保護可能なオブジェクトです。 その3階層名 catalog.schema.mcp_service で指定し、AIトラフィックを管理するためのコントロールプレーンである Unity AI Gateway を介して呼び出します。

MCP サーバーを Unity カタログセキュリティ保護可能として登録することは、他の Unity カタログ資産を保護するのと同じプリミティブで管理することを意味します。 これには、呼び出すことができるユーザーを制御するための許可、公開するツールを制限するツールの選択、個々のツール呼び出しを許可または拒否する サービス ポリシー 、すべての呼び出しを追跡するための監査と使用状況のログ記録が含まれます。

Note

MCPサービスは 、エージェントを外部MCPやツールに接続する複数の方法の一つであり、サービスがMCPサーバーを公開する際に推奨されるものです。 マネージドOAuth、Unity Catalog接続プロキシ、REST APIの直接呼び出しなど、全オプションについてはその概要をご覧ください。

MCP サービスを使用するには、次の 2 つの方法があります。

Approach 次の場合に使用します。
Databricks 提供の MCP サービスを使用する Slack、GitHub、Google Driveのようなセットアップなしで使える一般的なソフトウェア・アズ・ア・サービス(SaaS)ツールが欲しいのです。 ホストするサーバーがなく、作成する接続もありません。
独自の外部 MCP サーバーを登録する セキュリティ保護可能な Unity カタログとして管理するセルフホステッドまたはサード パーティの MCP サーバーがあります。

Requirements

  • Unity カタログで有効になっているワークスペース。

どのように機能するのか

エージェントは Unity AI ゲートウェイ URL によって MCP サービスを呼び出し、すべての呼び出しは同じ管理されたパスを通過します。

MCP サービス URL を使用して構成されたエージェントは、Unity AI Gateway を介してサービスを呼び出します。ゲートウェイは Unity カタログの MCP サービスに対する呼び出しを承認します。これにより、EXECUTE 許可、ツールの選択、サービス ポリシーが適用され、GitHubや Slack などの外部 MCP サーバーへのマネージド資格情報を使用して Unity カタログ HTTP 接続を介して要求がプロキシされます。使用状況、監査、およびトレース レコードは、システム テーブルに格納されます。

  1. 呼び出し: エージェントは、呼び出し元のAzure Databricks ID で認証された MCP 要求をサービスの Unity AI ゲートウェイ URL に送信します。
  2. 承認と管理: ゲートウェイは、呼び出し元が Unity カタログの MCP サービスに EXECUTE していることを確認します。 このサービスは 、選択した ツールのみを公開し、接続されている サービス ポリシーを評価します。これにより、呼び出しの許可、拒否、または承認が必要になります。
  3. マネージド資格情報を持つプロキシ: 要求は、サービスの HTTP 接続を介して外部 MCP サーバーに転送されます。 Azure Databricksは資格情報を格納し、OAuth フローとトークン更新を処理するため、エージェントは資格情報を表示しません。
  4. ログの使用状況、監査、トレース: すべての呼び出しはシステム テーブルに記録されるため、 使用状況 と監査アクティビティを時間の経過と同時に監視できます。

Databricks が提供する MCP サービス

Azure Databricksは、一般的な SaaS アプリケーションのsystem.ai スキーマですぐに使用できる MCP サービスを提供するため、エージェントは独自の MCP サーバーをホストしたり登録したりすることなく、これらのツールにアクセスできます。 それぞれは、Unity カタログ名でアドレス指定する組み込みの MCP サービスです。 エージェントにアクセスを与えるには、サービス上で EXECUTE を付与します(例: system.ai.github)。 接続設定は不要です。 組み込みサービスには、プラットフォームで管理されるツールと、書き込み操作をブロックするツールなどの組み込みの サービス ポリシーが付属しています。 カスタム ツールの選択やポリシー機能ではなく、許可を使用して管理します。

MCP サービス ~に接続
system.ai.slack Slack
system.ai.github GitHub
system.ai.atlassian Jira と Confluence
system.ai.google_drive Google ドライブ
system.ai.google_calendar Google カレンダー
system.ai.gmail Gmail
system.ai.microsoft_365 Microsoft 365 (SharePoint、Outlook、Teams)

Google ドライブ、Gmail、Google カレンダー、またはMicrosoft 365の場合、これらの組み込みサービスは OAuth を処理するため、アプリの登録は必要ありません。

組み込みのMCPサービスを呼び出す

組み込みサービスに対して、Unity AIゲートウェイのURLでアドレス指定し、パス内に完全修飾名を付けます。 名前は、表示されているとおり正確に、ドットやアンダースコアも含めて使用し、URL エンコードはしないでください。

https://<workspace-hostname>/ai-gateway/mcp-services/<catalog>.<schema>.<mcp-service>

エージェントコードからサービスを呼び出すには、 DatabricksMCPClient またはエージェントフレームワークをこのURLに向けてください。 カスタム エージェントでMCPサーバーを使用する方法を参照してください。

サービスのツールを知り、その結果を読む

各MCPサービスは異なるツールセットを公開しているため、名前をハードコーディングするのではなく実行時に発見してください。 tools/list(またはDatabricksMCPClient.list_tools())を呼び出して、各ツールの名前、説明、入力スキーマを取得してください。 カスタム エージェントでMCPサーバーを使用する方法を参照してください。

ツール呼び出しの結果を、 result フィールドから読みます。 その形状は、ツールが構造化出力を定義しているかどうかによって異なります。

  • テキスト出力。 ツールは outputSchema を宣伝し、 structuredContentで型付きのJSONオブジェクトを返すことができます。 structuredContent が存在する場合は、それを直接使用してください。 解析は不要です。 Genieツールのような一部のAzure Databricksツールはこのように動作します。
  • テキスト出力。 structuredContentがない場合は、テキストブロックを読みましょう。 最初のブロックにはJSONドキュメントが含まれているので、 result.content[0].text JSONとして解析してください。
  • どちらでもない。 MCPは出力スキーマを必要としません。 ツールが定義しない場合、サンプル応答を調べて出力場を学習します。

例えば、system.ai.google_calendarcalendar_event_listのような読み取りツールを公開しており、そのJSONの結果はidsummarystartendstatuslocation、リンクを含むitemsのイベント配列を持っています。 異なるサービスのツールや結果形状は全く異なるため、必ず確認 tools/list とサンプルコールで確認してください。

Note

組み込みサービスは独自のOAuthスコープを管理します。 サービスは、組み込みの サービスポリシー が書き込みをブロックする場合、デフォルトでツールの読み取り部分のみを公開できます。

外部 MCP サーバーを登録する

管理されるOAuthDatabricksが提供するMCPサービスでカバーされていない外部MCPサーバーについては、それをMCPサービスとして登録し、Unityカタログのセキュアブルとして管理してください。 「 外部MCPサーバーを登録する」を参照してください。

認証とセキュリティ

Azure Databricksでは、マネージド MCP プロキシと Unity カタログ HTTP 接続を使用して、外部 MCP サーバーへの認証を安全に処理します。

  • 共有プリンシパル認証: すべてのユーザーが、外部サービスにアクセスするときに同じ資格情報を共有します。 これには、ベアラー トークン、OAuth マシン間 (M2M)、OAuth ユーザーからマシンへの共有認証が含まれます。 これは、外部サービスがユーザー固有のアクセスを必要としない場合、または 1 つのサービス アカウントで十分な場合に使用します。
  • ユーザーごとの認証 (ユーザーごとの OAuth U2M):各ユーザーは、独自の資格情報を使用して認証します。 外部サービスは、個々のユーザーに代わって要求を受け取り、ユーザー固有のアクセス制御、監査、アカウンタビリティを有効にします。 ユーザーのGitHub リポジトリ、Slack メッセージ、予定表など、ユーザー固有のリソースにアクセスする場合に使用します。

Azure Databricksは OAuth フローとトークン更新を処理するため、エンド ユーザーにはトークンが表示されません。 Unity AI Gateway から LLM エンドポイントと共に外部 MCP 接続を表示および管理します。 各認証方法の詳細な構成手順については、 HTTP 接続を参照してください。

ユーザーごとのアクセス(ユーザー代理アクセス)を有効にする

一部のサービスは、カレンダーやメールなど特定のユーザーに属するデータを読み取ります。 これらのサービスでは、ユーザーごとのOAuthを使って、各通話が共有IDではなく、作成したユーザーとして実行されるようにしてください。 これはsystem.ai.google_calendarsystem.ai.gmailsystem.ai.microsoft_365のような組み込みsystem.ai.*サービスや、ユーザーごとの認証で登録する外部サービスにも当てはまります。

エージェントからの代理アクセスを設定するには:

  1. 発信者がサービスを呼び出せるか確認してください。 任意のMCPサービスを呼び出すには、2つの条件が必要です。

    • EXECUTE サービス上に。
    • その親カタログおよびスキーマに対する USE CATALOG および USE SCHEMA EXECUTE 単独では不十分で、Unity Catalogは親チェーンもチェックします(チーム メイトへのアクセス権限を参照)。

    これらの付与方法はサービスによって異なります:

    • 組み込みの system.ai.* サービス: アカウントユーザーはデフォルトで systemsystem.ai でこれらの権限を保持しているため、通常は何かを付与する必要はありません。
    • 独自のカタログとスキーマでのカスタムサービス: 各セキュア可能な Permissions Tab(カタログエクスプローラー)やREST APIから、呼びかけるユーザーやグループに適切な権限(アプリのサービスプリンシパルだけでなく)を付与します。 SQL DDLはMCPサービスでは利用できません。

    REST APIで付与するには、ご自身の <catalog>.<schema>.<service>を置き換えてください:

    databricks api patch "/api/2.1/unity-catalog/permissions/mcp_service/<catalog>.<schema>.<service>" \
      --json '{ "changes": [ { "principal": "data-team", "add": ["EXECUTE"] } ] }'
    databricks api patch "/api/2.1/unity-catalog/permissions/catalog/<catalog>" \
      --json '{ "changes": [ { "principal": "data-team", "add": ["USE_CATALOG"] } ] }'
    databricks api patch "/api/2.1/unity-catalog/permissions/schema/<catalog>.<schema>" \
      --json '{ "changes": [ { "principal": "data-team", "add": ["USE_SCHEMA"] } ] }'
    
  2. 転送されたユーザートークンがサービスに届くように、アプリai-gatewayユーザーAPIスコープを追加してください。 アプリリソースで user_api_scopes: [ai-gateway] を宣言し、ユーザーごとのクライアント(get_user_workspace_client())でサービスを呼び出します。 「 MCPサービスへの認証 」と「 エージェント作成」とDatabricksアプリへのデプロイを参照してください。

  3. 各ユーザーは一度だけ同意します。 ユーザーが初めてサービスを呼ぶ際は、一度だけOAuthのログインを完成させる必要があります。 アプリにはログインリンクが表示され、ユーザーに表示されるか、ユーザーはカタログエクスプローラーでサービスを開き「 ログイン」をクリックできます。

Note

この EXECUTE はバンドルでアクセス権を与えることはできません。 宣言的自動化バンドル uc_securable リソースは、 VOLUMETABLEFUNCTIONCONNECTION セキュアラブルのみをサポートし、MCPサービスはサポートしていないため、 EXECUTE はUIまたは上記のREST APIで別途付与する必要があります。 注意: databricks bundle validate は欠落した助成金をフラグ付けしないため、エージェントはクリーンに展開でき、サービスに最初に呼び出したときにのみ失敗します。

Limitations

MCPサービスには以下の制限が適用されます:

  • MCP サービスの SQL DDL ( CREATE MCP SERVICEなど) は使用できません。 UI または REST API を使用して MCP サービスを作成および管理します。
  • 外部 MCP サーバーのみを独自の MCP サービスとして登録できます。 Genie、Apps、または Unity Catalog エンティティ ソースを MCP サービスとして登録することは現在サポートされていません。 Azure Databricksには、一般的な SaaS アプリ用の組み込みの MCP サービスも用意されています。
  • ツールの選択では、プレフィックス (get_*) と完全一致パターンがサポートされます。 除外パターン ( !delete_*など) はサポートされていません。
  • Unity カタロググローバル検索では、MCP サービスは表示されません。

外部 MCP サーバー接続にも、次の制限があります。

  • 外部 MCP サーバーは、AI Playground、Genie Code、Genie のチャットでの使用など、モデル サービスがサポートされているリージョンでのみ使用できます。 モデル提供機能の可用性を参照してください。

次のステップ