项目简介
本项目是一个基于 Model Context Protocol (MCP) 的服务器实现,旨在为大型语言模型 (LLM) 提供访问和操作 Databricks 工作区中数据和作业的能力。通过此服务器,LLM 可以安全地执行 SQL 查询、检索作业状态和详细信息,从而实现更智能的数据分析和自动化工作流程。
主要功能点
- 执行 SQL 查询: 允许 LLM 在 Databricks SQL 仓库上运行 SQL 查询,并返回结构化结果。
- 列出 Databricks 作业: 提供 LLM 获取 Databricks 工作区中所有作业列表的功能。
- 获取作业状态: 允许 LLM 查询特定 Databricks 作业的运行状态。
- 获取作业详情: 提供 LLM 获取 Databricks 作业详细配置信息的功能。
安装步骤
-
克隆仓库:
git clone https://github.com/JordiNeil/mcp-databricks-server.git cd mcp-databricks-server -
创建并激活虚拟环境 (推荐):
python -m venv .venv source .venv/bin/activate # 或 Windows 下: .venv\Scripts\activate -
安装依赖:
pip install -r requirements.txt -
配置环境变量:
- 在项目根目录下创建 '.env' 文件,并填入您的 Databricks 凭据。
DATABRICKS_HOST=your-databricks-instance.cloud.databricks.com # 您的 Databricks 实例 URL,例如 your-instance.cloud.databricks.com DATABRICKS_TOKEN=your-personal-access-token # 您的 Databricks 个人访问令牌 DATABRICKS_HTTP_PATH=/sql/1.0/warehouses/your-warehouse-id # 您的 SQL 仓库 HTTP 路径 - 获取 Databricks 凭据:
- DATABRICKS_HOST: 您的 Databricks 实例 URL (不包含 'https://' 前缀)。
- DATABRICKS_TOKEN: 在 Databricks 用户设置中创建个人访问令牌。
- DATABRICKS_HTTP_PATH: 在 Databricks SQL 仓库的连接详细信息中找到 HTTP 路径。
- 在项目根目录下创建 '.env' 文件,并填入您的 Databricks 凭据。
-
(可选) 测试连接:
python test_connection.py确保所有测试通过,以验证 Databricks 连接配置正确。
服务器配置
为了让 MCP 客户端连接到此服务器,您需要提供以下配置信息。以下是一个 JSON 格式的配置示例,您可以将其添加到 MCP 客户端的服务器列表中。
{ "serverName": "databricks-mcp-server", // 服务器名称,客户端用于标识 "command": "python", // 启动服务器的命令 "args": ["main.py"] // 启动命令的参数,这里指向 main.py 脚本 }
配置参数说明:
- 'serverName': 服务器的名称,您可以自定义,客户端会用这个名称来标识和连接服务器。
- 'command': 运行服务器端代码的命令,这里使用 'python' 解释器。
- 'args': 传递给 'command' 的参数列表,这里指定运行 'main.py' 文件。
注意: 请确保您的 MCP 客户端能够找到 'python' 命令,并且当前工作目录是 'mcp-databricks-server' 仓库的根目录,或者在 'args' 中使用 'main.py' 的绝对路径。
基本使用方法
-
启动服务器: 在项目根目录下运行以下命令启动 MCP 服务器:
python main.py或者使用 inspector 工具进行测试:
npx @modelcontextprotocol/inspector python3 main.py -
在 MCP 客户端中使用:
- 将上述服务器配置 JSON 添加到您的 MCP 客户端配置中。
- 客户端连接到服务器后,即可通过自然语言指令调用以下工具 (tools):
- 'run_sql_query(sql: str)': 执行 SQL 查询。
- 'list_jobs()': 列出所有 Databricks 作业。
- 'get_job_status(job_id: int)': 获取作业状态 (需要提供作业 ID)。
- 'get_job_details(job_id: int)': 获取作业详情 (需要提供作业 ID)。
- 客户端还可以访问 'schema://tables' 资源,以获取 Databricks SQL 仓库中的表结构信息。
示例对话 (在支持 MCP 协议的 LLM 客户端中):
用户: "列出所有数据库表" LLM 客户端 (调用资源): 'mcp://databricks-mcp-server/resource/schema://tables' MCP 服务器 (返回): 数据库表结构信息 (例如: "Database: dev, Schema: default, Table: customers\nDatabase: dev, Schema: default, Table: orders")
用户: "运行 SQL 查询 'SELECT * FROM customers LIMIT 10'" LLM 客户端 (调用工具): 'mcp://databricks-mcp-server/tool/run_sql_query?sql=SELECT * FROM customers LIMIT 10' MCP 服务器 (返回): SQL 查询结果 (Markdown 表格或其他格式化的结果)。
用户: "我的 Databricks 作业有哪些?" LLM 客户端 (调用工具): 'mcp://databricks-mcp-server/tool/list_jobs' MCP 服务器 (返回): Databricks 作业列表 (Markdown 表格或其他格式化的结果)。
用户: "作业 ID 为 123 的状态是什么?" LLM 客户端 (调用工具): 'mcp://databricks-mcp-server/tool/get_job_status?job_id=123' MCP 服务器 (返回): 作业 123 的状态信息 (Markdown 表格或其他格式化的结果)。
安全注意事项
- 请妥善保管 '.env' 文件,避免泄露 Databricks 访问令牌。
- 建议使用具有最小必要权限的 Databricks 访问令牌。
- 请在安全可信的环境中运行此 MCP 服务器。
信息
分类
数据库与文件