エージェントを外部サービスに接続する
プレビュー
この機能は パブリック プレビュー段階です。
AIエージェントをSlack、Googleカレンダー、またはAPIを備えたあらゆるサービスなどの外部アプリケーションに接続します。Databricks 、外部サービスにMCPサーバーがあるかどうか、ユーザーごとの認証が必要かどうか、またはエージェントコードから直接APIsを呼び出すことを希望するかどうかに応じて、いくつかの方法を提供しています。 すべてのアプローチはUnity Catalog HTTP接続を利用して、認証情報を安全に管理し、外部サービスへのアクセスを制御します。
アプローチ | 推奨される使用例 |
|---|---|
MCPサーバーを公開するサービスには、この方法を使用してください。自動ツール検出機能を提供し、標準的なSDKと連携します。 | |
GoogleドライブやSharePointとの連携には、この方法を使用してください。DatabricksがOAuth認証情報を管理するため、アプリの登録は不要です。 | |
この方法を使用すると、外部サービスのクライアントSDKを使用して、エージェントコードから直接REST API呼び出しを行うことができます。 | |
|
必要条件
- 外部アプリケーションへのUnity Catalog HTTP接続。 Unity Catalog接続は、安全で統制された認証情報管理を提供し、 OAuth 2.0によるユーザー対マシン認証やマシン対マシン認証など、複数の認証方法を可能にします。
外部MCPサーバー
外部サービスにMCPサーバーが利用可能な場合、Databricksは外部MCPサーバー経由での接続を推奨します。MCPサーバーは、ツールの自動検出、統合の簡素化、およびユーザーごとの認証機能を提供します。インストール方法、プログラムによる使用方法、認証の詳細については、「外部MCPサーバーの使用」を参照してください。
エージェントに外部MCPサーバーを追加する
Unity Catalog接続として外部MCPサーバーを登録した後、管理対象MCP URLを使用してエージェントを接続します: https://<workspace-hostname>/api/2.0/mcp/external/{connection_name} 。 <connection-name> 、 Unity Catalog接続の名前に置き換えてください。
- OpenAI Agents SDK (Apps)
- LangGraph (Apps)
- Model Serving
from agents import Agent, Runner
from databricks.sdk import WorkspaceClient
from databricks_openai.agents import McpServer
workspace_client = WorkspaceClient()
host = workspace_client.config.host
async with McpServer(
url=f"{host}/api/2.0/mcp/external/<connection-name>",
name="external-service",
workspace_client=workspace_client,
) as external_server:
agent = Agent(
name="Connected agent",
instructions="You are a helpful assistant with access to external services.",
model="databricks-claude-sonnet-4-5",
mcp_servers=[external_server],
)
result = await Runner.run(agent, "Send a Slack message to the team about the deployment")
print(result.final_output)
アプリにdatabricks.ymlのUnity Catalog接続へのアクセス権限を付与します。
resources:
apps:
my_agent_app:
resources:
- name: 'my_connection'
uc_securable:
securable_full_name: '<connection-name>'
securable_type: 'CONNECTION'
permission: 'USE_CONNECTION'
from databricks.sdk import WorkspaceClient
from databricks_langchain import ChatDatabricks, DatabricksMCPServer, DatabricksMultiServerMCPClient
from langgraph.prebuilt import create_react_agent
workspace_client = WorkspaceClient()
host = workspace_client.config.host
mcp_client = DatabricksMultiServerMCPClient([
DatabricksMCPServer(
name="external-service",
url=f"{host}/api/2.0/mcp/external/<connection-name>",
workspace_client=workspace_client,
),
])
async with mcp_client:
tools = await mcp_client.get_tools()
agent = create_react_agent(
ChatDatabricks(endpoint="databricks-claude-sonnet-4-5"),
tools=tools,
)
result = await agent.ainvoke(
{"messages": [{"role": "user", "content": "Send a Slack message to the team about the deployment"}]}
)
print(result["messages"][-1].content)
アプリにdatabricks.ymlのUnity Catalog接続へのアクセス権限を付与します。
resources:
apps:
my_agent_app:
resources:
- name: 'my_connection'
uc_securable:
securable_full_name: '<connection-name>'
securable_type: 'CONNECTION'
permission: 'USE_CONNECTION'
from databricks.sdk import WorkspaceClient
from databricks_mcp import DatabricksMCPClient
import mlflow
workspace_client = WorkspaceClient()
host = workspace_client.config.host
mcp_client = DatabricksMCPClient(
server_url=f"{host}/api/2.0/mcp/external/<connection-name>",
workspace_client=workspace_client,
)
tools = mcp_client.list_tools()
mlflow.pyfunc.log_model(
"agent",
python_model=my_agent,
resources=mcp_client.get_databricks_resources(),
)
エージェントをデプロイするには、 「生成AIアプリケーション用のエージェントのデプロイ (モデルサービング)」を参照してください。 MCP を使用したエージェントのログ記録の詳細については、 Databricks管理の MCP サーバーの使用を参照してください。
マネージドOAuth
Databricksは、一部のAPIツールプロバイダー向けにマネージドOAuthフローを提供しています。独自のOAuthアプリを登録したり、資格情報を管理したりする必要はありません。 Databricksは、開発およびテストにはマネージドOAuthを推奨しています。本番運用のユースケースでカスタムOAuth認証情報の生成が必要な場合、詳細についてはプロバイダーのドキュメントを参照してください。
以下の連携機能は、バックエンドに安全に保存されているDatabricksが管理するOAuth認証情報を使用します。
プロバイダー | 構成に関する注意事項 | サポートされているスコープ | 説明 |
|---|---|---|---|
Google Drive API | なし |
| Googleドライブファイルへの読み取り専用アクセス。 |
SharePoint API | なし |
| SharePointサイトへの読み取り専用アクセス。 |
マネージドOAuthを設定するには、 OAuthユーザーからマシンへのユーザー 単位の認証タイプでHTTP接続を作成し、 OAuthプロバイダーの ドロップダウンメニューからプロバイダーを選択します。詳細なステップについては、 「外部 MCP サーバーのインストール」を参照してください。
各ユーザーは、初回利用時にプロバイダーへの認証を求められます。
必要に応じて、マネージドOAuthで使用される以下のリダイレクトURIを許可リストに追加してください。
クラウド | リダイレクトURI |
|---|---|
AWS |
|
Azure |
|
GCP |
|
UC接続プロキシエンドポイント
Unity Catalog接続プロキシエンドポイントを外部サービスのクライアントSDKと組み合わせて使用することで、エージェントコードからREST APIs直接呼び出すことができます。 SDKのベース URL をプロキシ エンドポイントに指定し、 DatabricksをAPIキーとして使用します。 Databricksリクエストを認証し、 Unity Catalog接続から外部サービスの認証情報を自動的に挿入します。 あなたのコードは、外部サービスのトークンを直接処理していません。
必要な権限: 接続オブジェクトに対する USE CONNECTION 。
- OpenAI
- Slack
- Generic HTTP
DatabricksOpenAI使用すると、Unity Catalog の接続プロキシ経由で外部 OpenAI への呼び出しをルーティングできます。まず、 Databricksシークレットとして保存されているOpenAI APIキーを使用して、 Unity Catalog HTTP接続を作成します。
CREATE CONNECTION openai_connection TYPE HTTP
OPTIONS (
host 'https://api.openai.com',
base_path '/v1',
bearer_token secret ('<secret-scope>', '<secret-key>')
);
次に、 databricks-openaiパッケージをインストールし、エージェントコード内でプロキシ URL とワークスペース クライアントを使用します。
pip install databricks-openai
from databricks_openai import DatabricksOpenAI
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
client = DatabricksOpenAI(
workspace_client=w,
base_url=f"{w.config.host}/api/2.0/unity-catalog/connections/openai_connection/proxy/",
)
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)
Slack SDKを設定してUnity Catalog接続プロキシ経由でルーティングするようにします。 ホストhttps://slack.comとベースパス/apiを使用してUnity Catalog HTTP接続を作成し、プロキシURLをSDKベースURLとして使用します。
from slack_sdk import WebClient
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
client = WebClient(
token=w.config.authenticate()["Authorization"].split(" ")[1],
base_url=f"{w.config.host}/api/2.0/unity-catalog/connections/slack_connection/proxy/",
)
result = client.chat_postMessage(channel="C123456", text="Hello from Databricks!")
print(result["message"]["text"])
専用SDKのないサービスの場合は、プロキシURLを直接指定してrequestsライブラリを使用してください。
import requests
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
response = requests.post(
f"{w.config.host}/api/2.0/unity-catalog/connections/my_connection/proxy/api/v1/resource",
headers={
**w.config.authenticate(),
"Content-Type": "application/json",
},
json={"key": "value"},
)
HTTP接続を備えたUC機能ツール
Databricksは、新規統合にはMCPサーバーまたはUC接続プロキシの使用を推奨しています。http_requestを含む UC 機能ツールは引き続きサポートされますが、推奨される方法ではなくなりました。
Unity Catalog関数を作成してhttp_request()をラップし、外部サービスを呼び出すことができます。この方法は、SQLベースのツール定義に役立ちます。UC関数ツールの作成方法の詳細については、 Unity Catalog関数を使用したAIエージェントツールの作成」を参照してください。
次の例では、Slackにメッセージを投稿するUnity Catalog関数ツールを作成します。
CREATE OR REPLACE FUNCTION main.default.slack_post_message(
text STRING COMMENT 'message content'
)
RETURNS STRING
COMMENT 'Sends a Slack message by passing in the message and returns the response received from the external service.'
RETURN (http_request(
conn => 'test_sql_slack',
method => 'POST',
path => '/api/chat.postMessage',
json => to_json(named_struct(
'channel', "C032G2DAH3",
'text', text
))
)).text
CREATE FUNCTION (SQL と Python)を参照してください。
http_requestを使用した SQL アクセスは、ユーザーからマシンごとの接続タイプではブロックされます。代わりに Python Databricks SDK を使用してください。
ノートブックの例
エージェントを Slack に接続する
「 AI エージェントを Slack に接続する」を参照してください。
外部接続ツール
次のノートブックは、Slack、OpenAI、Azure AI 検索に接続する AI エージェント ツールの作成を示しています。