Databricks MCP服务器

一个生产就绪的MCP服务器,通过MCP为Cursor、Claude Desktop等AI代理提供50多种Databricks工作区操作。

  • by yang0733
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 yang0733/databricks-mcp-server

使用说明

Databricks MCP 服务器

一个已准备好投入生产的MCP(机器学习平台)服务器,通过该服务器为Cursor、Claude Desktop等AI代理提供了50多个Databricks工作区操作接口。

⚠️ 免责声明这是 不是 这是Databricks的官方产品,并且是 不是 由Databricks支持。这是一个社区项目,使用Databricks SDK来提供MCP(可能是指某种特定的云平台或服务,如Microsoft Cloud Platform等,具体需根据上下文确定)集成。使用前请自行承担风险。如需官方的Databricks支持,请直接联系Databricks。

🚀 快速入门(5分钟)

1. 设置您的凭据

export DATABRICKS_HOST="https://your-workspace.cloud.databricks.com"
export DATABRICKS_TOKEN="dapi..."  # Your Personal Access Token

2. 启动服务器

cd databricks_cli_mcp
./start_local_mcp.sh

服务器运行于: http://localhost:8080/mcp

3. 配置光标

添加到光标MCP设置(~/.cursor/mcp.json):

{
  "mcpServers": {
    "databricks": {
      "url": "http://localhost:8080/mcp"
    }
  }
}

4. 开始使用!

在Cursor中,尝试:

"List my Databricks clusters"
"Show me my SQL warehouses"
"Execute query: SELECT * FROM samples.nyctaxi.trips LIMIT 10"

📦 您将获得

50个Databricks工具

  • 集群 (7): 创建、启动、停止、列出、管理
  • 工作 (6): 创建、运行、取消、监控
  • SQL(Structured Query Language,结构化查询语言) (8): 执行查询,管理仓库
  • Unity Catalog(统一目录) (11): 目录、模式、表、卷
  • 工作区 (6): 文件、笔记本、目录
  • 笔记本电脑(或简称为“笔记本”) (5): 导入、导出、运行
  • 回购协议 (5): Git 集成
  • 秘密 (4): 机密管理
  • 任务 (2): 异步操作

🏗️ 项目结构

databricks_cli_mcp/
├── README.md              # This file
├── server.py              # Main MCP server (FastMCP)
├── local_mcp_server.py    # Local server with PAT auth
├── start_local_mcp.sh     # Quick start script
│
├── auth.py                # Authentication logic
├── databricks_client.py   # Databricks SDK wrapper
├── task_manager.py        # Async task management
├── tool_registry.py       # Tool schema converter
│
├── tools/                 # 50 Databricks tools
│   ├── clusters.py
│   ├── jobs.py
│   ├── sql.py
│   ├── unity_catalog.py
│   ├── workspace.py
│   ├── notebooks.py
│   ├── repos.py
│   └── secrets.py
│
├── app.yaml               # Databricks Apps deployment config
├── requirements.txt       # Python dependencies
└── pyproject.toml         # Package configuration

🔐 认证

选项1:PAT(个人访问令牌)- 推荐使用

最适合于开发,个人使用

# Get your PAT from Databricks UI
# Settings → Developer → Access tokens → Generate new token

export DATABRICKS_HOST="https://your-workspace.cloud.databricks.com"
export DATABRICKS_TOKEN="dapi..."

./start_local_mcp.sh

优点✅ 简单,✅ 快速,✅ 立即见效
缺点⚠️ 90天到期,⚠️ 手动续订

选项2:M2M OAuth(高级)

最适合用于生产、团队、持续集成/持续交付(CI/CD)

  1. 在Databricks中创建服务主体
  2. 生成OAuth密钥
  3. 设置环境变量:
export DATABRICKS_APP_URL="https://your-app.databricksapps.com"
export DATABRICKS_HOST="https://your-workspace.cloud.databricks.com"
export DATABRICKS_CLIENT_ID="<service-principal-id>"
export DATABRICKS_CLIENT_SECRET="<oauth-secret>"

./start_oauth_proxy.sh

优点✅ 自动刷新,✅ 更佳安全性,✅ 团队共享
缺点⚠️ 需要设置服务主体


☁️ 部署到Databricks应用程序

1. 验证身份

databricks auth login

2. 部署

./deploy_correct.sh

3. 获取您的应用URL

databricks apps get databricks-mcp-server | jq -r .url

🧪 测试

本地测试

python test_local.py

来自笔记本的测试

上传 notebooks/simple_test.py 在Databricks上运行它。


💡 示例用法

在光标处

"Create a cluster named 'test' with 2 workers"
"Start cluster 0730-172948-runts698"
"Execute SQL: SELECT current_database()"
"List tables in catalog main"
"Export notebook /Users/me/analysis"
"Show me my job runs"

通过编程方式

from databricks.sdk import WorkspaceClient

client = WorkspaceClient()

# List clusters
clusters = list(client.clusters.list())
print(f"Found {len(clusters)} clusters")

# Execute SQL
result = client.sql.execute_query(
    warehouse_id="abc123",
    query="SELECT * FROM samples.nyctaxi.trips LIMIT 10"
)

🔧 配置

环境变量

变量 描述 必填
DATABRICKS_HOST 工作区URL ✅ 是
DATABRICKS_TOKEN 个人访问令牌 ✅ 是(PAT 模式)
DATABRICKS_CLIENT_ID 主服务ID 用于OAuth
DATABRICKS_CLIENT_SECRET OAuth 密钥 用于 OAuth
DATABRICKS_APP_URL 部署的应用程序URL 用于OAuth

服务器配置

服务器运行在端口 8080 默认情况下。更改至 start_local_mcp.sh:

python3 local_mcp_server.py --port 8080

🐛 故障排除

服务器无法启动

# Check if port is in use
lsof -i :8080

# Kill existing process
kill -9 <PID>

# Restart
./start_local_mcp.sh

认证失败

# Verify credentials
echo $DATABRICKS_HOST
echo $DATABRICKS_TOKEN

# Test manually
curl -H "Authorization: Bearer $DATABRICKS_TOKEN" \
  $DATABRICKS_HOST/api/2.0/clusters/list

光标无法连接

  1. 检查服务器是否正在运行: curl http://localhost:8080/health
  2. 验证光标配置: cat ~/.cursor/mcp.json
  3. 重启光标
  4. 检查日志: tail -f mcp_server.log

权限错误

  • 无法创建集群? 向您的管理员申请权限
  • 无法访问目录? 检查 Unity Catalog 权限
  • 无法运行查询? 验证SQL数据仓库访问权限

📚 关键概念

MCP(模型上下文协议)

一个开放协议,让人工智能助手能够连接到外部数据源和工具。可以将其视为“人工智能的API”。

FastMCP

一个用于构建MCP服务器的Python框架。它使得将Python函数作为AI代理的工具轻松暴露出来。

Databricks SDK(软件开发工具包)

用于与Databricks API交互的官方Python库。为服务器上的所有工具提供支持。


🔗 资源

  • Databricks API 文档https://docs.databricks.com/api/ 的中文翻译为:https://docs.databricks.com/api/(注:网址本身在中文语境下通常保持原样,不进行翻译,但这里为了符合问题要求,说明了其含义,即“Databricks 的 API 文档”)。不过,更自然的表达可能是直接指出这是“Databricks 的官方 API 文档网址”
  • MCP协议https://modelcontextprotocol.io/(该网址可直接翻译为“模型上下文协议.io”,但通常网址保持原样不翻译,此处仅为说明其含义)
  • FastMCPhttps://github.com/jlowin/fastmcp 的中文翻译可以是:“https://github.com/jlowin/fastmcp(GitHub上的fastmcp项目)”。不过,通常在中文语境下,我们可能会直接使用网址本身作为描述,或者简单地指出这是一个GitHub上的项目链接,具体翻译取决于上下文和使用场景。如果需要更简洁的表达,也可以直接说“GitHub上的fastmcp项目链接”
  • **Databricks SDK(软件开发工具包)**https://github.com/databricks/databricks-sdk-py 的中文翻译为:“https://github.com 上的 databricks/databricks-sdk-py 项目” 或者简化为 “Databricks SDK for Python(GitHub 链接)”

📝 要求

  • Python 3.11+
  • Databricks工作区,提供API访问
  • 个人访问令牌或服务主体
  • Cursor IDE(或任何MCP兼容的客户端)

🎯 常见任务

启动一个集群

# In Cursor
"Start cluster <cluster-id>"

# Or directly
from databricks.sdk import WorkspaceClient
client = WorkspaceClient()
client.clusters.start(cluster_id="...")

执行SQL查询

# In Cursor
"Execute query: SELECT * FROM my_table LIMIT 10"

# Or directly
result = client.sql.execute_query(
    warehouse_id="...",
    query="SELECT * FROM my_table"
)

创建一个工作(岗位)

# In Cursor
"Create a job that runs notebook /path/to/notebook daily"

# Or use the Databricks UI - easier for complex jobs!

⚙️ 高级配置

自定义工具

添加您自己的工具到 tools/ 目录:

# tools/custom.py
from fastmcp import Context

@mcp.tool()
async def my_custom_tool(param: str, context: Context):
    """My custom Databricks operation."""
    client = get_databricks_client(context)
    # Your logic here
    return {"result": "success"}

然后在(某处)注册 server.py:

from tools import custom

生产部署

用于生产环境:

  1. 使用M2M OAuth(而非PAT)
  2. 部署到Databricks应用程序
  3. 启用监控(/metrics 终端(或端点)
  4. 设置适当的日志记录
  5. 配置自动扩展

🎉 成功了!

现在,您已经拥有了一个功能齐全的Databricks MCP服务器!

下一步:

  1. ✅ 启动服务器
  2. ✅ 配置光标
  3. ✅ 尝试列出你的集群
  4. ✅ 执行你的第一个SQL查询
  5. 🚀 自动化一切!

📄 许可证

麻省理工学院(MIT)

🤝 贡献

欢迎提出问题和提交拉取请求!此项目遵循标准的GitHub工作流程。

💬 支持

  • 检查日志: tail -f mcp_server.log
  • 在Cursor中查看错误信息
  • 验证Databricks的权限
  • 直接使用以下方式测试API访问: curl

为Databricks自动化而精心打造