使用说明
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)
- 在Databricks中创建服务主体
- 生成OAuth密钥
- 设置环境变量:
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
光标无法连接
- 检查服务器是否正在运行:
curl http://localhost:8080/health - 验证光标配置:
cat ~/.cursor/mcp.json - 重启光标
- 检查日志:
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
生产部署
用于生产环境:
- 使用M2M OAuth(而非PAT)
- 部署到Databricks应用程序
- 启用监控(
/metrics终端(或端点) - 设置适当的日志记录
- 配置自动扩展
🎉 成功了!
现在,您已经拥有了一个功能齐全的Databricks MCP服务器!
下一步:
- ✅ 启动服务器
- ✅ 配置光标
- ✅ 尝试列出你的集群
- ✅ 执行你的第一个SQL查询
- 🚀 自动化一切!
📄 许可证
麻省理工学院(MIT)
🤝 贡献
欢迎提出问题和提交拉取请求!此项目遵循标准的GitHub工作流程。
💬 支持
- 检查日志:
tail -f mcp_server.log - 在Cursor中查看错误信息
- 验证Databricks的权限
- 直接使用以下方式测试API访问:
curl
为Databricks自动化而精心打造
