将自己的自定义或第三方 MCP 服务器作为 Databricks 应用托管。 如果已有要部署的 MCP 服务器,或者想要将第三方 MCP 服务器作为工具源运行,则自定义 MCP 服务器非常有用。
Requirements
- 作为 Databricks 应用托管的 MCP 服务器必须实现与 HTTP 兼容的传输,例如 可流式传输。
将 MCP 服务器作为 Databricks 应用托管
有关编写自己的 MCP 服务器并将其部署为 Databricks 应用的示例,请参阅 GitHub - 自定义 MCP 服务器模板 。
若要将现有 Python MCP 服务器托管为 Databricks 应用,请执行以下步骤:
配置你的环境
在部署 MCP 服务器之前,请使用 OAuth 向工作区进行身份验证。
在本地终端中运行以下命令:
databricks auth login --host https://<your-workspace-hostname>
设置 MCP 服务器
部署 MCP 服务器时,使用 uv 进行依赖项管理和统一工具。
将 a
requirements.txt添加到 MCP 服务器的根目录,并将其作为依赖项包含在uv内。将
uv添加到requirements.txt时,它会负责安装在项目配置中定义的其他依赖项。uv创建一个
pyproject.toml文件,该文件定义服务器的脚本入口点。示例
pyproject.toml:[project.scripts] custom-server = "server.main:main"在本示例中:
-
custom-server是与uv run一起使用的脚本名称 -
server.main:main指定要执行的模块路径 (server/main.py) 和函数 (main)
-
添加一个
app.yaml文件,指定用于运行 MCP 服务器的uv runCLI 命令。默认情况下,Databricks 应用程序在端口 8000 上侦听。 如果服务器侦听其他端口,请使用文件中的
app.yaml设置它。示例
app.yaml:command: [ 'uv', 'run', 'custom-server', # This must match a script defined in pyproject.toml ]
运行 uv run custom-server时,uv 会查找脚本定义,找到模块路径,并调用 main() 函数。
将 MCP 服务器部署为 Databricks 应用
创建 Databricks 应用以托管 MCP 服务器:
databricks apps create custom-mcp-server通过从包含
app.yaml文件的目录运行以下命令,将源代码上传到 Databricks 并部署应用:DATABRICKS_USERNAME=$(databricks current-user me | jq -r .userName) databricks sync . "/Users/$DATABRICKS_USERNAME/custom-mcp-server" databricks apps deploy custom-mcp-server --source-code-path "/Workspace/Users/$DATABRICKS_USERNAME/custom-mcp-server"
查找已部署的应用 URL
部署后,可以在 Databricks UI 中找到应用 URL。 MCP 服务器终结点在 https://<app-url>/mcp.
连接到自定义 MCP 服务器
单击选项卡以查看如何从各种环境连接到 MCP 服务器。
本地环境
使用 OAuth 向工作区进行身份验证,如 “设置环境”中所述。
以下示例演示如何连接到自定义 MCP 服务器并列出可用工具:
from databricks_mcp import DatabricksMCPClient
from databricks.sdk import WorkspaceClient
# Replace with your deployed app URL
# Example: https://custom-mcp-server-6051921418418893.staging.aws.databricksapps.com/mcp
mcp_server_url = "https://<app-url>/mcp"
databricks_cli_profile = "DEFAULT"
workspace_client = WorkspaceClient(profile=databricks_cli_profile)
mcp_client = DatabricksMCPClient(server_url=mcp_server_url, workspace_client=workspace_client)
# List available tools
tools = mcp_client.list_tools()
print(f"Available tools: {tools}")
笔记本(服务主体)
使用服务主体访问 Databricks 笔记本中的托管 Databricks 应用。
from databricks_mcp import DatabricksMCPClient
from databricks.sdk import WorkspaceClient
# Replace with your deployed app URL
mcp_server_url = "https://<app-url>/mcp"
workspace_client = WorkspaceClient(
host="<workspace-url>",
client_id="<client-id>",
client_secret="<client-secret>"
)
mcp_client = DatabricksMCPClient(server_url=mcp_server_url, workspace_client=workspace_client)
# List available tools
tools = mcp_client.list_tools()
print(f"Available tools: {tools}")
代理代码(代表用户)
设置代用户授权机制。 请参阅 代表用户身份验证。
以下示例演示如何通过代理使用ModelServingUserCredentials来访问托管的Databricks应用以启用代表用户访问:
from databricks_mcp import DatabricksMCPClient
from databricks.sdk import WorkspaceClient
from databricks.sdk.credentials_provider import ModelServingUserCredentials
# Replace with your deployed app URL
mcp_server_url = "https://app-url>/mcp"
workspace_client = WorkspaceClient(credentials_strategy=ModelServingUserCredentials())
mcp_client = DatabricksMCPClient(server_url=mcp_server_url, workspace_client=workspace_client)
# List available tools
tools = mcp_client.list_tools()
print(f"Available tools: {tools}")
使用 apps.apps 范围记录代理模型。 请参阅 代表用户身份验证。
代理代码(服务主体)
使用服务主体启用系统身份验证,以便从代理访问托管的 Databricks 应用:
from databricks_mcp import DatabricksMCPClient
from databricks.sdk import WorkspaceClient
# Replace with your deployed app URL
mcp_server_url = "https://<app-url>/mcp"
workspace_client = WorkspaceClient()
mcp_client = DatabricksMCPClient(server_url=mcp_server_url, workspace_client=workspace_client)
# List available tools
tools = mcp_client.list_tools()
print(f"Available tools: {tools}")
使用 DatabricksApps 资源记录代理模型。 请参阅自动身份验证直通。
示例笔记本:使用 Databricks MCP 服务器生成代理
以下笔记本演示如何创作 LangGraph 和 OpenAI 代理,这些代理使用 Databricks 应用上托管的自定义 MCP 服务器调用 MCP 工具。
LangGraph MCP 工具调用代理
OpenAI MCP 工具调用代理
其他资源
应用指南提供了端到端代码示例,用于将 MCP 服务器与不同的框架集成:
有关完整的源代码和其他示例,请参阅 Databricks Apps Cookbook 存储库。