🚀 Databricks Genie API MCP 服务器
本项目实现了一个模型上下文协议(MCP)服务器,它将 Databricks Genie API 封装为一组工具。这些工具可集成到 IDE 或其他工具中,有效提升用户体验。
✨ 主要特性
- 启动对话:在 Genie 空间中开启全新对话。
- 创建消息:在已有的对话里添加新消息。
- 获取消息:从对话中提取所需消息。
- 获取消息附件查询结果:获取消息附件内 SQL 查询的结果。
- 执行消息附件查询:执行消息附件中的 SQL 查询操作。
- 获取空间信息:获取 Genie 空间的相关信息。
- 生成完整查询结果下载:启动完整查询结果的下载流程。
- 轮询消息直到完成:持续轮询消息,直至其达到终端状态。
📦 安装指南
先决条件
- 安装 Python 3.8 或更高版本。
- 安装 Databricks CLI:
pip install databricks-cli
- 配置 Databricks CLI:
dbfs config set
设置步骤
- 克隆仓库并安装依赖项:
git clone https://github.com/your-repository.git
cd genie_mcp_server
pip install -r requirements.txt
- 配置环境变量或
.env 文件,设置以下内容:DATABRICKS_WORKSPACE_URL=your_workspace_url
DATABRICKS_TOKEN=your_access_token
- 启动服务器:
python server.py
💻 使用示例
与 Claude Desktop 的集成
在 claude_desktop_config.json 中配置 MCP 服务器:
{
"mcpServers": {
"databricks-genie": {
"type": "stdio",
"command": "/path/to/python",
"args": ["server.py"],
"env": {
"DATABRICKS_WORKSPACE_URL": "your_workspace_url",
"DATABRICKS_TOKEN": "your_access_token"
}
}
}
}
工具列表
- start_conversation(启动对话):在 Genie 空间中创建新对话。
- create_message(创建消息):向现有对话添加新内容。
- get_message(获取消息):检索特定消息的详细信息。
- get_message_attachment_query_result(获取消息附件查询结果):从消息附件获取 SQL 查询结果。
- execute_message_attachment_query(执行消息附件查询):在 Genie 空间中执行 SQL 代码片段。
- get_space(获取空间信息):获取指定空间的详细信息。
- generate_download_full_query_result(生成完整查询结果下载):启动完整查询结果的下载流程。
- poll_message_until_complete(轮询消息直到完成):持续检查消息状态,直至其处于完成或失败状态。
📚 详细文档
故障排除
- 身份验证问题:检查
.env 文件中的 Databricks 凭证是否正确,并确保用户具有适当的权限。
- 连接问题(Claude Desktop):
- 确保
claude_desktop_config.json 中的路径完全正确。
- 验证 Python 解释器路径是否存在且可执行。
- 查看日志文件,如
~/Library/Logs/Claude/ 或 %APPDATA%\Claude\logs,特别是 mcp.log 和 mcp-server-databricks-genie.log。
- SQL 执行错误:确认服务主体或用户对 SQL 仓库具有执行权限,并且能够访问相关的 Unity Catalog 数据。
安全注意事项
- 凭据管理:绝不对硬编码凭据。使用环境变量(
.env 文件)或安全的凭证存储。确保 .env 文件不在版本控制系统中提交。
- MCP 安全性:此服务器在本地运行,使用用户的权限和 Databricks 凭证。客户端如 Claude Desktop 必须先获得用户同意才能执行工具(参考 MCP 安全规范)。
- 生产环境部署:不要直接暴露此本地服务器用于更广泛的用途。与安全团队合作,确定适当的主机设置、网络控制以及可能的 MCP 服务器级身份验证机制。
🤝 贡献
欢迎贡献!请通过提交问题或拉取请求参与项目。
📄 许可证
该软件由 Databricks, Inc. 授予特定许可。请查看 LICENSE 文件以获取完整使用条款。