用于游标的copula MCP服务器
30个强大的工具,在人工智能的帮助下,直接从Cursor IDE管理ViewModel。
🚀 快速设置
先决条件
- Node.js v14+(
node --version)--如果丢失,就跑brew install node - copula命令行界面(
databricks --version)--如果丢失,就跑brew install databricks - 具有OAuth访问权限的ViewModel帐户
安装
# 1. Clone or download this directory
git clone https://github.com/nayantarasundarraj-hue/Databricks-cursor-mcp.git ~/databricks-mcp-server
cd ~/databricks-mcp-server
# 2. Install dependencies
npm install
# 3. Verify installation
npm test
# 4. Authenticate with Databricks
databricks auth login --profile dev --host https://YOUR-WORKSPACE.cloud.databricks.com
# 5. Verify your paths (note these down for the config below)
which node
which databricks
# 6. Configure Cursor编辑 ~/.cursor/mcp.json:
{
"mcpServers": {
"databricks": {
"command": "node",
"args": [
"/Users/YOUR_USERNAME/databricks-mcp-server/server.js"
],
"env": {
"PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin",
"DATABRICKS_PROFILE": "dev",
"DATABRICKS_WORKSPACE_HOST": "YOUR-WORKSPACE.cloud.databricks.com"
}
}
}
}重要提示:
- 更换
YOUR_USERNAME使用您的macOS用户名和YOUR-WORKSPACE使用您的copula工作区主机名。 DATABRICKS_PROFILE必须与您在期间使用的配置文件名称匹配databricks auth login常见的价值观是dev,affirm-prod,或DEFAULT.检查~/.databrickscfg查看您的个人资料。- 如果你得到
node: command not found,跑which node并替换"node"完整路径(例如。/opt/homebrew/bin/node).
6.重新启动游标
完全退出 (命令+Q/Alt+F4)并重新打开。等待10-15秒。
✅ 验证它是否有效
在Cursor中,询问:
- “列出我的ViewModel集群”
- “在/Users/中列出笔记本”
- “显示可用的copula工具”
🛠️ 你得到了什么-30个工具
📖 浏览与阅读(5)
list_notebooks-浏览文件夹get_notebook-阅读内容list_clusters-显示集群list_jobs-显示职位get_job_details-职位信息
⚡ 执行与监控(5)
run_notebook-使用参数执行get_run-检查状态get_run_output-获取结果cancel_run-停止执行list_runs-查看历史记录
✏️ 编辑笔记本(3)-使用自动备份!
export_notebook-下载中心import_notebook-上传并备份get_notebook_revisions-查看历史记录
🖥️ 管理集群(4)
start_cluster-醒醒stop_cluster-节省成本get_cluster_status-检查状态restart_cluster-重新启动
📋 作业操作(2)
run_job-触发作业get_job_runs-查看跑步记录
📁 DBFS操作(4)
list_dbfs-浏览文件系统read_dbfs_file-读取文件upload_to_dbfs-上传download_from_dbfs-下载中心
🔍 SQL查询(2)
execute_sql-运行查询list_sql_warehouses-列出仓库
📝 工作空间管理(3)
create_notebook-新建delete_notebook-删除move_notebook-组织
📦 图书馆管理(二)
list_cluster_libraries-显示已安装install_library-添加包
💡 使用示例
安全地编辑代码:
"Add import pandas as pd to /Users/me/notebook"省钱:
"Stop all idle clusters"查询数据:
"Run this SQL on warehouse abc123: SELECT * FROM users LIMIT 10"自动化工作流程:
"Run /Users/me/ETL on cluster X with params date=2024-01-20"🔒 安全功能
- ✅ 路径验证 --所有本地文件操作仅限于您的主目录和/tmp;敏感路径(.ssh、.aws、.env、.kube等)被阻止
- ✅ 壳体防喷 --用途
execFileSync(不是execSync),无外壳解释 - ✅ 人在环(HIL) --8个操作需要用户明确确认:
run_notebook,run_job,delete_notebook,move_notebook,stop_cluster,restart_cluster,upload_to_dbfs,install_library - ✅ SQL阻止列表 --DDL/DML/copula特定语句(DROP、DELETE、INSERT、COPY INTO、CALL、VACUUM等)需要确认;只读SQL立即运行
- ✅ 错误清理 --OAuth令牌、URL和内部路径将从错误消息中删除
- ✅ 语言验证 --仅PYTHON、SQL、SCALA、R可用于笔记本创建
- ✅ 固定依赖关系 --SDK版本已锁定,以防止供应链攻击
- ✅ 笔记本编辑时的自动本地备份(带时间戳)
- ✅ 导入时新的copula修订版(UI回滚)
⚠️ 代理部署警告
此MCP在单个服务器中公开了读写工具。在人工智能处理不可信内容(网页、Slack消息、RAG文档、电子邮件)的代理环境中,提示注入可以链接读取操作(例如。, get_notebook, read_dbfs_file)通过写/执行操作(例如。, execute_sql, upload_to_dbfs).
建议:
- 在不了解此风险的情况下,不要在具有读取不受信任的外部内容的工具(网络获取、Slack搜索、外部文档上的RAG、邮箱阅读器)的代理中共同安装此MCP。
- 始终仔细查看HIL确认提示——它们显示了完整的操作细节,包括文件路径和SQL查询。
- 对于高安全性环境,考虑通过以下方式禁用写入工具
disabledTools在Cursor MCP配置中,只启用只读子集。
🐛 故障排除
“node:找不到命令”
游标未加载shell配置(.zshrc),因此可能找不到 node.快跑 which node 在您的终端中,使用该完整路径作为 command 价值在你 mcp.json.
工具调用中“找不到数据块”
同样的问题——Cursor找不到copula CLI。确保 PATH 在您的配置中 env 包含来自的目录 which databricks (通常 /opt/homebrew/bin 或 /usr/local/bin).
“npm:找不到命令”
你需要安装Node.js:
brew install node然后重试 npm install.
“找不到模块@modelcontextprotocol/sdk”
cd ~/databricks-mcp-server
npm install“身份验证失败”或“令牌过期”
databricks auth login --profile YOUR_PROFILE --host https://YOUR-WORKSPACE.cloud.databricks.com
# Then restart Cursor (Cmd+Q, reopen)“未找到配置文件”
确保 DATABRICKS_PROFILE 在你的 mcp.json 匹配中的配置文件 ~/.databrickscfg.快跑 cat ~/.databrickscfg 检查。
工具未显示在光标中
- 检查中的绝对路径
mcp.json是正确的 - 完全退出光标(Cmd+Q)并重新打开
- 等待10-15秒
- 检查设置→ MCP用于连接状态
- 检查日志:查看→ 输出→ “模型上下文协议”
📁 项目结构
databricks-mcp-server/
├── server.js # Main MCP server (1,380 lines)
├── package.json # Dependencies
├── node_modules/ # Installed packages (auto-created)
└── README.md # This file🤝 贡献
要添加新工具,请执行以下操作:
- 添加方法
server.js:
async myNewTool(args) {
const result = await this.executeCLI(['my-command', 'subcommand', args.param, '--output', 'json']);
return JSON.parse(result);
}- 注册于
setupHandlers():
case 'my_new_tool':
const result = await this.myNewTool(args);
return { content: [{ type: 'text', text: JSON.stringify(result) }] };- 在中添加工具定义
ListToolsRequestSchema处理器
- 测试并提交!
📝 许可证
麻省理工学院-随时修改和分享
💬 支持
问题?检查上述故障排除或咨询团队!
