使用 Databricks 应用托管自定义 MCP 服务器

将自己的自定义或第三方 MCP 服务器作为 Databricks 应用托管。 如果已有要部署的 MCP 服务器,或者想要将第三方 MCP 服务器作为工具源运行,则自定义 MCP 服务器非常有用。

Requirements

  • 作为 Databricks 应用托管的 MCP 服务器必须实现与 HTTP 兼容的传输,例如 可流式传输

将 MCP 服务器作为 Databricks 应用托管

有关编写自己的 MCP 服务器并将其部署为 Databricks 应用的示例,请参阅 GitHub - 自定义 MCP 服务器模板

若要将现有 Python MCP 服务器托管为 Databricks 应用,请执行以下步骤:

配置你的环境

在部署 MCP 服务器之前,请使用 OAuth 向工作区进行身份验证。

  1. 在本地终端中运行以下命令:

    databricks auth login --host https://<your-workspace-hostname>
    

设置 MCP 服务器

部署 MCP 服务器时,使用 uv 进行依赖项管理和统一工具。

  1. 将 a requirements.txt 添加到 MCP 服务器的根目录,并将其作为依赖项包含在 uv 内。

    uv添加到requirements.txt时,它会负责安装在项目配置中定义的其他依赖项。

    uv
    
    
  2. 创建一个 pyproject.toml 文件,该文件定义服务器的脚本入口点。

    示例 pyproject.toml

    [project.scripts]
    custom-server = "server.main:main"
    

    在本示例中:

    • custom-server 是与 uv run 一起使用的脚本名称
    • server.main:main 指定要执行的模块路径 (server/main.py) 和函数 (main
  3. 添加一个 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 应用

  1. 创建 Databricks 应用以托管 MCP 服务器:

    databricks apps create custom-mcp-server
    
  2. 通过从包含 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 存储库