Databricks MCP 服务器与 AI 驱动的仪表板应用生成器 🚀
版本2.3.0\ 协议模型上下文协议(MCP)2024-11-05\ 状态✅ 准生产就绪 | ✅ 符合MCP标准 | ✅ 集成Cursor IDE
基于AI的Databricks应用程序开发平台 - 使用自然语言和AI辅助生成、部署和管理Databricks应用程序。
______________________________________________________________________
📋 目录
- MCP服务器 - Dash 网页界面 - Cursor IDE 集成
______________________________________________________________________
概述
该项目为基于人工智能的Databricks应用程序开发提供了一个完整的生态系统:
🎯 核心组件
- MCP 服务器 (
mcp_server.py)
- 基于FastAPI的MCP服务器,集成11个Databricks工具 - Unity Catalog 集成 - DLT(分布式账本技术)管道管理 - 湖景仪表板创建 - 新Databricks 应用部署
- Dash 网络界面 (
dash_app.py)
- 所有MCP工具的交互式网页用户界面 - 基于人工智能的代码生成 使用Claude Sonnet 4.5 - 可视化管道和仪表板构建器 - 实时部署监控 - 与MCP工具集成的聊天界面
- Cursor IDE 集成
- 通过Cursor AI直接访问所有11款Databricks工具 - 对Databricks的自然语言查询 - 无缝的工作流程集成
✨ v2.3.0 版本中的新功能
- 🚀 表情符号“🚀”通常表示火箭、快速前进或快速移动。在中文中,它常被用来表达快速、迅速或进步的意思。例如,可以说“他进步飞快,就像🚀一样”。不过,由于表情符号的直观性,其具体含义可能因上下文和使用场景而异。 基于AI的仪表盘应用生成用自然语言描述你的应用,Claude生成代码
- 📦 一个包裹或箱子的符号,常用于表示邮寄、运输或存储的物品。 自动化部署一键部署到Databricks应用程序
- 🔐(锁形符号,常用于表示保密、安全或需要密码的界面) 自动权限自动授予Unity目录权限给应用程序服务主体
- 📊 表格/数据图表 查询日志记录所有SQL查询均记录时间戳以供调试
- 🔄 翻译为中文是:循环/旋转(符号本身无具体含义,常用于表示循环、旋转或刷新的动作) Databricks CLI 集成用途
databricks sync和databricks apps deploy为了可靠地部署
______________________________________________________________________
快速入门
先决条件
- Python 3.11+
- 启用了SQL无服务器功能的Databricks工作区
- Databricks CLI 已配置
databricks configure) - UV包管理器(可选,但建议使用)
安装
# Clone the repository
cd /Users/abhijit.tilak/workspace/setup_env
# Install dependencies
pip install -r requirements.txt
# Configure Databricks (if not already done)
databricks configure启动所有服务
# Start MCP Server + Dash App
./mcp/start_all.sh服务:
- MCP 服务器http://localhost:8080 翻译为中文是:“本地主机上的8080端口”。不过,通常我们不会直接这样翻译网址,而是根据上下文或使用场景来解释或描述它。例如,可以解释为“访问本地开发服务器的8080端口”,或者“这是运行在本地计算机上的Web应用的访问地址(端口8080)”
- Dash 应用http://localhost:8050 翻译为中文是:“本地主机:8050”。不过,通常我们不会直接翻译网址,而是会根据上下文说明其含义,比如“访问本地运行的服务器,端口为8050”。但在这里,直接翻译网址的话,就是“本地主机:8050”
测试设置
# Run MCP client tests
./mcp/run_mcp_client.sh______________________________________________________________________
特点/功能
🔧 修理工具/螺丝刀(或根据上下文可译为“扳手”等具体工具) 11 个 Databricks 工具
| 工具 | 描述 | 使用场景 | |
|---|---|---|---|
| 项目 | 描述 | 类型 | databricks_query |
| 执行SQL查询 | 数据分析,ETL(抽取、转换、加载) | databricks_list_tables | |
| 列出目录/模式中的表 | 数据发现 | databricks_list_catalogs | |
| 列出可用目录 | 目录浏览 | databricks_list_schemas | |
| 列出目录中的架构 | 浏览架构 | databricks_describe_table | |
| 获取表模式 | 元数据检查 | databricks_list_functions | |
| 列出模式中的函数 | 函数发现 | databricks_describe_function | |
| 获取函数详情 | 函数检查 | databricks_explain_query | |
| 获取查询执行计划 | 性能调优 | build_ldp_pipeline | |
| 创建DLT管道 | 数据工程 | build_lakeview_dashboard | |
| 创建AI/BI仪表板 | 数据可视化 | create_dash_app |
🆕 | 部署Databricks应用程序 | 应用程序部署 | 🤖 表示机器人或机器人形象的符号。
AI赋能功能
User: "Create a sales dashboard with charts and filters"
↓
Claude Sonnet 4.5 generates complete Dash app code
↓
Auto-deployed to Databricks Apps1. 自然语言应用生成
- 2\. 智能代码生成
- 适当的错误处理
- 空值/无值检查
- SQL查询日志记录
- 使用Bootstrap的响应式用户界面
实施最佳实践
- 3\. 聊天界面
- 用自然语言提问
- 自动选择适当的MCP工具
- 执行Databricks操作
在聊天中显示结果 🚀 表情符号“🚀”在中文中通常被直接保留为原样,因为它是一个通用的表情符号,表示火箭、快速上升或加速等概念。不过,如果要将其含义融入中文描述中,可以翻译为“🚀(火箭/快速上升)”。但更常见的做法是直接使用该符号本身,因为它已经具有了直观的含义。所以,单独的“🚀”在中文中就是“🚀(火箭/快速上升)”的意思,但通常直接使用符号即可。
- 现代分布式账本技术(DLT)流水线Unity目录集成
- 全面支持UC(统一通信/用户认证等,具体含义根据上下文确定)无服务器计算
- 默认为无服务器模式高级版
- CDC(变更数据捕获)、SCD Type 2(慢变化维度类型2)、数据质量光子引擎
- 加速处理当前运行时
- 最新的Databricks运行时多笔记本支持
- 多个转换笔记本定时任务调度
基于时间的流水线触发器 📊(表格)
- 湖景仪表板
- 分析仪表板
- 成本分析视图
- 性能监控
- 数据血缘可视化
Unity Catalog 元数据查询 📦 表示“包裹”或“箱子”。
- Databricks 应用部署人工智能生成的代码
- 克劳德开发出可投入生产的应用程序自动同步
databricks sync用途 - 上传文件CLI 部署
databricks apps deploy - 利用(杠杆)自动权限
- 授予对 Unity Catalog 表的 SELECT 权限资源配置
- SQL 仓库绑定完整的应用程序结构
app.py:requirements.txt+app.yaml
______________________________________________________________________
+
┌─────────────────────────────────────────────────────┐
│ Cursor IDE │
│ (MCP Tools integrated via settings.json) │
└────────────────┬────────────────────────────────────┘
│
├──► MCP Protocol (JSON-RPC 2.0)
│
┌────────────────▼────────────────────────────────────┐
│ MCP Server (FastAPI) │
│ • 11 Databricks Tools │
│ • Unity Catalog Operations │
│ • DLT Pipeline Management │
│ • Lakeview Dashboard Creation │
│ • Databricks Apps Deployment │
└────────────────┬────────────────────────────────────┘
│
├──► Databricks SDK
│
┌────────────────▼────────────────────────────────────┐
│ Databricks Workspace │
│ • Unity Catalog │
│ • Delta Live Tables │
│ • Lakeview (AI/BI) │
│ • Databricks Apps │
│ • SQL Warehouses │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ Dash Web Interface │
│ • AI-Powered App Generator (Claude Sonnet 4.5) │
│ • Visual Tool Interfaces │
│ • Chat Assistant │
│ • Real-time Monitoring │
└─────────────────────────────────────────────────────┘______________________________________________________________________
建筑
安装
# Install UV (recommended)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Create virtual environment
python3.11 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt第一步:环境设置
# Configure Databricks CLI
databricks configure
# Enter your:
# - Databricks Host: https://your-workspace.cloud.databricks.com
# - Token: Your personal access token
# Test connection
python test_workspace_client.py步骤2:Databricks配置
步骤3:光标IDE集成(可选)
~/.cursor/mcp_config.json~/Library/Application Support/Cursor/User/settings.json
MCP服务器配置已添加至:
______________________________________________________________________
只需启动MCP服务器,Cursor AI就能访问所有工具!
用法
MCP 服务器
./mcp/start_mcp_server.sh启动服务器
服务器运行于:http://localhost:8080
./mcp/run_mcp_client.sh与客户端进行测试
./mcp/stop_mcp_server.sh停止服务器
tail -f mcp/mcp_server.log查看日志
Dash Web 界面
./mcp/start_dash_app.sh启动Dash应用
网页界面:http://localhost:8050
- 特点/功能
- SQL查询执行 - 对Unity目录运行查询 - 以表格形式查看结果
- 导出为CSV文件
- 数据发现 - 浏览目录、模式、表 - 查看表元数据
- 检查表模式
- DLT管道构建器 - 可视化管道创建 - 支持多笔记本 - 无服务器计算 - 高级版特色功能
- Cron 调度
- 湖景仪表板创建器 - 选择仪表板类型 - 配置数据源
- 部署到Databricks AI驱动的应用程序生成器
- 新增/更新 - 用自然语言描述你的应用 - 克劳德生成完整代码 - 自动部署到Databricks应用程序
- 包括查询日志记录和错误处理
- 聊天助手 - 自然语言接口 - MCP工具集成
实时执行
./mcp/stop_dash_app.sh停止Dash应用
Cursor IDE 集成
- 设置
./mcp/start_mcp_server.sh - 启动MCP服务器:
- 开放光标AI聊天
开始使用Databricks工具吧!
"List all catalogs in Databricks"
"Show me tables in the main catalog"
"Create a DLT pipeline for my transformation notebooks"
"Build a sales analytics dashboard"
"Query the customers table and show top 10 results"示例查询
- 配置位置配置文件
~/.cursor/mcp_config.json - :设置
~/Library/Application Support/Cursor/User/settings.json
______________________________________________________________________
:
基于人工智能的应用程序生成
- 其工作原理
"Create a sales dashboard showing revenue by region with
filters for date range. Include bar charts and data table."- 描述您的应用程序
- AI生成代码 - Claude Sonnet 4.5 生成可直接投入生产的代码 - 包括错误处理、日志记录、样式设计 - 使用正确的Databricks SDK API
- 实现响应式用户界面
databricks sync /Workspace/path/to/app
databricks apps create my-app
databricks apps deploy my-app --source-code-path /Workspace/path/to/app- 自动部署
GRANT USAGE ON CATALOG catalog_name TO app_service_principal
GRANT USAGE ON SCHEMA schema_name TO app_service_principal
GRANT SELECT ON SCHEMA schema_name TO app_service_principal- 自动配置权限
- 应用准备就绪! - 通过Databricks应用程序URL访问 - 查询 Unity Catalog 表
在Databricks用户界面中查看日志
生成的应用程序中包含的功能 ✅(对号,表示正确、确认或完成)
try:
result = w.statement_execution.execute_statement(...)
if result and result.result and result.result.data_array:
# process data
else:
return "No data available"
except Exception as e:
return f"Error: {str(e)}"适当的错误处理 ✅
print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] Executing query: {query}")
print(f"Query returned {len(df)} rows, {len(df.columns)} columns")SQL查询日志记录 ✅
if result and result.manifest and result.manifest.schema and result.manifest.schema.columns:
columns = [col.name for col in result.manifest.schema.columns]空值检查 ✅
dbc.Table.from_dataframe(df, striped=True, bordered=True, hover=True, responsive=True)响应式用户界面 ✅
@app.callback(Output("table", "children"), Input("refresh", "n_clicks"))
def update_table(n_clicks):
df = query_data()
if df.empty:
return html.Div("No data available")
return dbc.Table.from_dataframe(df, striped=True, bordered=True, hover=True)正确的DataFrame显示 ✅
distribution = df['category'].value_counts().reset_index()
distribution.columns = ['category', 'count']
fig = px.pie(distribution, names='category', values='count', title='Distribution')图表可视化
Local Temp Directory Databricks Workspace
┌──────────────────┐ ┌────────────────────┐
│ app.py │──databricks──▶│ /Workspace/.../app/│
│ requirements.txt │ sync │ app.py │
│ app.yaml │ │ requirements.txt │
└──────────────────┘ │ app.yaml │
└────────────────────┘
│
databricks apps deploy
│
▼
┌────────────────────┐
│ Databricks Apps │
│ Running on port │
│ URL: https://... │
└────────────────────┘______________________________________________________________________
部署架构
可用工具 databricks_query
1\.
在Databricks Unity Catalog上执行SQL查询。
warehouse_id参数:query(必填):SQL 数据库仓库 IDcatalog(必填):要执行的SQL查询schema(可选):目标目录
(可选):目标架构
{
"warehouse_id": "abc123",
"query": "SELECT * FROM main.default.customers LIMIT 10",
"catalog": "main",
"schema": "default"
}示例: databricks_list_catalogs
2\.
列出所有可用的 Unity Catalog 目录。 参数:
无 返回值:
带描述的目录名称列表 databricks_list_tables
3\.
列出特定目录和架构中的表。
catalog参数:schema(必填):目录名称
(必填):模式名称 返回值:
包含元数据的表名列表 databricks_describe_table
4\.
获取表的详细架构和元数据。
catalog参数:schema(必填):目录名称table(必填):模式名称
(必填):表名 返回值:
列定义、类型、注释、属性 build_ldp_pipeline
5\.
创建一个具有高级功能的Delta Live Tables管道。
pipeline_name参数:notebook_paths(必填):管道名称target_catalog(必需):笔记本路径的数组target_schema(必填):目标 Unity 目录storage_location(必需):目标模式continuous(可选):存储路径
(可选):连续模式(默认:false)
- 特点:
- ✅ Unity Catalog 集成
- ✅ 无服务器计算(默认)
- ✅ 高级版(CDC、SCD、DQ)
- ✅ 光子加速
- ✅ 当前运行时通道
✅ 支持多笔记本
{
"pipeline_name": "sales_etl_pipeline",
"notebook_paths": [
"/Workspace/Users/user@company.com/etl/bronze_layer",
"/Workspace/Users/user@company.com/etl/silver_layer"
],
"target_catalog": "main",
"target_schema": "sales",
"continuous": false
}示例: build_lakeview_dashboard
6\.
创建湖景(AI/BI)仪表板。
dashboard_name参数:dashboard_type(必填):仪表板名称parent_path(必填):类型(分析、成本分析、性能、血缘)warehouse_id(必填):工作区文件夹路径catalog(必填):SQL 仓库 IDschema(可选):目标目录
(可选):目标架构
- 仪表板类型:分析(或分析学)
- 通用分析仪表盘成本分析
- 成本与使用分析演出
- 性能监控血统;世系
数据血缘可视化 trigger_ldp_pipeline
7\.
触发DLT(数据湖处理或类似流程的缩写,具体根据上下文确定)管道,并可选地设置计划。
pipeline_id参数:cron_schedule(必填):管道ID
**(可选):Cron 表达式(例如,“0 2 * * \*”)**
{
"pipeline_id": "abc-123-def",
"cron_schedule": "0 2 * * *" // Daily at 2 AM
}示例: create_dash_app 8.
🆕
部署一个Databricks仪表板应用程序。
app_name参数:source_code_path(必填):应用程序名称description(必填):应用程序目录的工作区路径warehouse_id(可选):应用描述catalog(可选):SQL 数据仓库 IDschema(可选):默认目录
(可选):默认模式
- 要求:
app.py - 源路径必须包含
requirements.txt可选:app.yaml
,
- 过程:
- 创建应用程序计算资源
- 配置SQL仓库权限
- 从工作区路径部署应用程序
- 授予Unity Catalog权限
等待应用程序激活
{
"status": "success",
"app": {
"name": "my-app",
"url": "https://workspace.cloud.databricks.com/apps/my-app",
"service_principal": "databricks-app-my-app",
"permissions_granted": [
"USAGE ON CATALOG main",
"USAGE ON SCHEMA main.sales",
"SELECT on main.sales"
]
}
}______________________________________________________________________
返回值:
配置
# Databricks
export DATABRICKS_HOST="https://your-workspace.cloud.databricks.com"
export DATABRICKS_TOKEN="your-token"
# Optional: Databricks CLI profile
export DATABRICKS_CONFIG_PROFILE="DEFAULT"环境变量
MCP服务器配置 mcp/mcp_config.json
{
"serverInfo": {
"name": "databricks-mcp-server",
"version": "2.3.0"
},
"capabilities": {
"tools": {
"count": 11,
"categories": [
"Data Query & Analysis",
"Data Discovery & Catalog",
"Data Pipeline Engineering",
"Data Visualization & BI",
"App Deployment & Management"
]
}
}
}文件:
Cursor IDE 配置 ~/Library/Application Support/Cursor/User/settings.json
{
"mcp.servers": {
"databricks-mcp-server": {
"command": "curl",
"args": ["-X", "POST", "http://localhost:8080"]
}
},
"mcp.configFile": "/Users/abhijit.tilak/workspace/setup_env/mcp/mcp_config.json"
}______________________________________________________________________
文件:
部署
# Start all services
./mcp/start_all.sh
# Access interfaces
# - MCP Server: http://localhost:8080
# - Dash App: http://localhost:8050本地开发
生产部署
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8080 8050
CMD ["./mcp/start_all.sh"]选项1:Docker(推荐)
# Schedule as Databricks Job
{
"name": "MCP Server",
"tasks": [{
"task_key": "mcp_server",
"python_wheel_task": {
"package_name": "mcp_server",
"entry_point": "main"
}
}]
}选项2:Databricks作业
Databricks 应用部署
# Deployment happens automatically via:
databricks apps create
databricks apps deploy --source-code-path /Workspace/path/to/app
# View your apps
databricks apps list
# Get app URL
databricks apps get ______________________________________________________________________
由AI生成的应用程序会自动部署到Databricks应用程序中:
故障排除
常见问题 1.
# Check if port 8080 is in use
lsof -i :8080
# Kill existing process
kill $(lsof -t -i:8080)
# Restart server
./mcp/start_mcp_server.shMCP服务器无法启动 2.
# Reconfigure Databricks CLI
databricks configure
# Test connection
python test_workspace_client.py
# Check configuration
cat ~/.databrickscfgDatabricks 认证失败 3.
AI应用生成错误 'WorkspaceClient' object has no attribute 'sql'
错误: 修复: w.statement_execution.execute_statement() 使用 w.sql.execute_statement()
不是 'NoneType' object has no attribute 'schema'
错误: 修复:
if result and result.manifest and result.manifest.schema and result.manifest.schema.columns:
columns = [col.name for col in result.manifest.schema.columns]添加空值检查: Error loading app spec from app.yaml
错误: 修复: app.yaml 确保
command:
- "python"
- "app.py"格式正确: 4.
部署失败 - 文件未找到 can't open file '/app/python/source_code/app.py'
错误: 修复: databricks sync 使用
databricks sync /local/path /Workspace/Users/email/app-path正确上传文件: 5.
仪表板创建失败 'NoneType' object has no attribute 'schema'
错误: 修复:
使用最新修复(包括空值检查)重新生成应用程序
调试
# MCP Server logs
tail -f mcp/mcp_server.log
# Dash App logs
tail -f mcp/dash_app.log
# Databricks App logs (in Databricks UI)
# Go to Apps → Your App → Logs tab查看日志
# In dash_app.py
if __name__ == "__main__":
app.run(debug=True) # Debug mode enabled启用调试模式
# Run client tests
./mcp/run_mcp_client.sh
# Test specific tool
curl -X POST http://localhost:8080 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "test-1",
"method": "tools/list"
}'测试MCP工具
- 寻求帮助检查文件/文档
- 查看此README文件及链接的文档查看日志
mcp_server.log检查dash_app.log - 和测试连接
test_workspace_client.py - 跑验证配置
mcp_config.json检查
______________________________________________________________________
以及Databricks配置
更新日志
版本2.3.0(2025年10月21日)
- 🚀 新功能
- 基于AI的仪表盘应用生成器 - 自然语言应用描述 → 完整生产代码 - 克劳德·莎士比亚十四行诗4.5版本集成 - 自动部署到Databricks应用程序
- 包含查询日志记录和错误处理
- create_dash_app Databricks 应用程序部署 - 应用程序部署工具 databricks sync 用途 databricks apps deploy 并且 - CLI(Command Line Interface) - 自动Unity目录权限
- SQL 仓库资源绑定
- 增强的代码生成 - 适当的空值/None检查 - 带有时间戳的SQL查询日志记录 - 正确的Databricks SDK API - DataFrame 转换为 Dash 表格
饼状图聚合模式
- 🔧 改进
- 自动授予应用程序服务主体 SELECT 权限
- 增强的错误信息,包含调试提示
- 在Dash表格中改进DataFrame的显示
- 更佳的图表可视化模式
全面的查询日志记录
- 🐛 错误修复
'WorkspaceClient' object has no attribute 'sql' - 已修复:
'NoneType' object has no attribute 'schema' - 已修复:
- 修复:DataFrame到Dash表格显示的问题
- 修复:分布情况的饼图生成功能
- 修复:已部署应用中的身份验证冲突
- 已修复:Databricks 应用程序的端口配置
databricks sync
修复:保留文件扩展名功能
- 版本 2.2.1
- 修复了Lakeview仪表板API的兼容性
- 优化后的聊天意图解析
回调中的错误处理更完善
- 版本2.2.0
- 新增了AI聊天助手
- 集成了聊天界面的MCP工具
自然语言查询解析
- 版本2.1.0
- 将更新的DLT管道迁移到Unity Catalog
- 增加了对无服务器计算的支持
多笔记本流水线支持
- 版本 2.0.0
- MCP协议合规性
capabilities移除了非标准内容 - 终端节点
tools/list添加
标准方法
- 版本 1.0.0
- 初次发布
- 10个核心Databricks工具
- 基于FastAPI的MCP服务器
______________________________________________________________________
Dash 网页界面
做出贡献
我们欢迎投稿!投稿方式如下:
- 报告问题
- 检查现有问题
- 提供详细描述
- 包含错误日志
分享复现步骤
- 提交更改
- 为仓库创建分支(或“克隆仓库”)
- 创建一个特性分支
- 做出你的更改
- 彻底测试
提交拉取请求
# Clone repository
git clone
cd setup_env
# Install dev dependencies
pip install -r requirements.txt
# Run tests
python -m pytest
# Start dev servers
./mcp/start_all.sh______________________________________________________________________
开发环境设置
许可证
______________________________________________________________________
这个项目是专有软件。版权所有。
- 致谢Databricks SDK(软件开发工具包)
- 为了全面访问Databricks APIFastAPI(快速API框架)
- 针对稳健的MCP服务器框架Plotly Dash
- 对于交互式网页界面Anthropic Claude(注:此处为直接音译加保留原名的形式,实际翻译时可能根据上下文调整,但“Anthropic Claude”本身是一个专有名词,通常不进行意译)
- 用于AI驱动的代码生成模型上下文协议
______________________________________________________________________
用于标准化工具集成
- 联系与支持文档
- 这个README文件+内联代码注释日志
mcp/mcp_server.log:mcp/dash_app.log - 并且测试工具
test_workspace_client.py:mcp_client.py
______________________________________________________________________
并且版本\ 2.3.0最后更新时间\ 2025年10月21日状态
______________________________________________________________________
✅ 准备就绪,可投入生产
