项目简介

本项目是一个基于 Model Context Protocol (MCP) 的服务器实现,旨在为大型语言模型 (LLM) 提供访问和操作 Databricks 工作区中数据和作业的能力。通过此服务器,LLM 可以安全地执行 SQL 查询、检索作业状态和详细信息,从而实现更智能的数据分析和自动化工作流程。

主要功能点

  • 执行 SQL 查询: 允许 LLM 在 Databricks SQL 仓库上运行 SQL 查询,并返回结构化结果。
  • 列出 Databricks 作业: 提供 LLM 获取 Databricks 工作区中所有作业列表的功能。
  • 获取作业状态: 允许 LLM 查询特定 Databricks 作业的运行状态。
  • 获取作业详情: 提供 LLM 获取 Databricks 作业详细配置信息的功能。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/JordiNeil/mcp-databricks-server.git
    cd mcp-databricks-server
  2. 创建并激活虚拟环境 (推荐):

    python -m venv .venv
    source .venv/bin/activate  # 或 Windows 下: .venv\Scripts\activate
  3. 安装依赖:

    pip install -r requirements.txt
  4. 配置环境变量:

    • 在项目根目录下创建 '.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 路径。
  5. (可选) 测试连接:

    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' 的绝对路径。

基本使用方法

  1. 启动服务器: 在项目根目录下运行以下命令启动 MCP 服务器:

    python main.py

    或者使用 inspector 工具进行测试:

    npx @modelcontextprotocol/inspector python3 main.py
  2. 在 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 服务器。

信息

分类

数据库与文件