Databricks高级MCP服务器

一个高级的模型上下文协议(MCP)服务器,为AI助手提供对Databricks工作区的深度可见性,涵盖SQL执行、依赖扫描、影响分析、笔记本审查等43种工具。

  • by henrybravo
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 henrybravo/databricks-advanced-mcp-server

使用说明

Rancher高级MCP服务器

先进的 模型上下文协议(MCP) 服务器,使AI助手能够深入了解您的copula工作区——43个工具,涵盖依赖关系扫描、影响分析、笔记本审查、作业/流水线操作、SQL执行、目录管理、计算和仓库控制以及Unity catalog卷。

特性

域名 它做什么
SQL 执行 使用可配置的结果限制对ConnectionSQL仓库运行SQL查询
表信息 检查表元数据、模式、列详细信息、行数和存储信息
依赖关系扫描 扫描笔记本、作业和DLT管道以构建工作区依赖关系图(DAG)
图的运算 构建、查询和刷新工作区依赖关系图
影响分析 预测列删除、模式更改或管道故障导致的下游中断
笔记本评论 检测性能反模式、编码标准违规,并提出优化建议
工作和管道运营 列出作业/管道,通过错误诊断获取运行状态,触发重新运行
目录和架构 列出目录,列出/描述/创建/删除Unity目录模式
计算 列出集群、检查状态、启动/停止/重新启动集群
SQL仓库 列出仓库、检查状态、启动/停止SQL仓库
工作区操作 创建/读取/删除笔记本、上传文件、获取工作区对象元数据
UC卷 列出卷、检查元数据、浏览和读取Unity目录卷中的文件

演示

Click to play full video

https://github.com/user-attachments/assets/579282ca-bb26-4244-b0c6-3ad26050aca3

涵盖SQL执行、依赖关系扫描、影响分析、笔记本审查和作业/管道操作。

快速开始

先决条件

  • Python 3.11+
  • 紫外线 --快速Python包管理器
  • A. copula工作区 使用SQL仓库
  • 一个docker 个人访问令牌

其他身份验证方法: Rancher SDK支持 统一认证 --如果你不设置 DATABRICKS_TOKEN,它将回退到Azure CLI、托管身份或 .databrickscfgThe .env 为了简单起见,下面的设置使用了PAT。

还没有一个copula工作区? 看 infra/INSTALL.md 使用二头肌进行单命令Azure部署。

1.安装

选项A:从PyPI安装(推荐)

uv pip install databricks-advanced-mcp

或者使用pip:

pip install databricks-advanced-mcp

选项B:从源代码安装

git clone https://github.com/henrybravo/databricks-advanced-mcp-server.git
cd databricks-advanced-mcp-server

创建并激活虚拟环境:

Windows(PowerShell)

uv venv .venv
.\.venv\Scripts\Activate.ps1
uv pip install -e .

macOS/Linux

uv venv .venv
source .venv/bin/activate
uv pip install -e .

2.配置

cp .env.example .env

编辑 .env 使用您的copula凭据:

# Azure Databricks:
DATABRICKS_HOST=https://adb-xxxx.azuredatabricks.net
# Databricks on AWS / GCP:
# DATABRICKS_HOST=https://dbc-xxxx.cloud.databricks.com

DATABRICKS_TOKEN=dapi_your_token
DATABRICKS_WAREHOUSE_ID=your_warehouse_id

# Optional (defaults shown)
# Azure workspaces typically use "main"; AWS/GCP workspaces use "workspace"
DATABRICKS_CATALOG=main
DATABRICKS_SCHEMA=default

3.添加到IDE

创建 .vscode/mcp.json 在您的项目中,使用VS Code/GitHub Copilot注册MCP服务器。

选项A:PyPI安装(推荐)

如果你是从PyPI安装的(pip install databricks-advanced-mcp),the databricks-mcp CLI在您的PATH上可用:

{
  "servers": {
    "databricks-mcp": {
      "type": "stdio",
      "command": "databricks-mcp",
      "env": {
        "DATABRICKS_HOST": "https://adb-xxxx.azuredatabricks.net",
        "DATABRICKS_TOKEN": "dapi_your_token",
        "DATABRICKS_WAREHOUSE_ID": "your_warehouse_id"
      }
    }
  }
}

选项B:虚拟环境(源代码安装)

如果你克隆了仓库并安装到本地 .venv,直接指向Python解释器:

视窗

{
  "servers": {
    "databricks-mcp": {
      "type": "stdio",
      "command": "${workspaceFolder}/.venv/Scripts/python.exe",
      "args": ["-m", "databricks_advanced_mcp.server"],
      "envFile": "${workspaceFolder}/.env"
    }
  }
}

macOS/Linux

{
  "servers": {
    "databricks-mcp": {
      "type": "stdio",
      "command": "${workspaceFolder}/.venv/bin/python",
      "args": ["-m", "databricks_advanced_mcp.server"],
      "envFile": "${workspaceFolder}/.env"
    }
  }
}

多个工作区

每个MCP服务器实例只连接到一个copula工作区。要同时使用多个工作区,请为每个工作区注册一个单独的服务器条目——每个条目都有自己的凭据:

{
  "servers": {
    // AWS / GCP workspace
    "databricks-cloud": {
      "type": "stdio",
      "command": "databricks-mcp",
      "env": {
        "DATABRICKS_HOST": "https://dbc-xxxx.cloud.databricks.com",
        "DATABRICKS_TOKEN": "dapi_cloud_token",
        "DATABRICKS_WAREHOUSE_ID": "cloud_warehouse_id",
        "DATABRICKS_CATALOG": "workspace"
      }
    },
    // Azure workspace
    "databricks-azure": {
      "type": "stdio",
      "command": "databricks-mcp",
      "env": {
        "DATABRICKS_HOST": "https://adb-xxxx.azuredatabricks.net",
        "DATABRICKS_TOKEN": "dapi_azure_token",
        "DATABRICKS_WAREHOUSE_ID": "azure_warehouse_id",
        "DATABRICKS_CATALOG": "main"
      }
    }
  }
}

或者,通过源代码安装,您可以使用单独的 .env 每个工作区的文件:

{
  "servers": {
    "databricks-cloud": {
      "type": "stdio",
      "command": "${workspaceFolder}/.venv/bin/python",
      "args": ["-m", "databricks_advanced_mcp.server"],
      "envFile": "${workspaceFolder}/.env"
    },
    "databricks-azure": {
      "type": "stdio",
      "command": "${workspaceFolder}/.venv/bin/python",
      "args": ["-m", "databricks_advanced_mcp.server"],
      "envFile": "${workspaceFolder}/.env_azure"
    }
  }
}

4.开始使用

配置后,您的AI助手可以调用下面43个工具中的任何一个。以下是按域组织的示例提示:

探索您的数据

  • “哪些表存在于 analytics 模式?"
  • “显示的架构和元数据 main.sales.orders"
  • “运行一个查询,按状态对订单进行计数和求和 main.sales.orders"

Unity目录和模式

  • “列出我有权访问的所有目录”
  • “分析目录中存在哪些模式?”
  • “描述 main.default 架构“
  • “创建一个名为 staging 在分析目录中”

了解依赖关系

  • “构建完整的工作区依赖关系图”
  • “上游和下游依赖关系是什么 main.default.customers?"
  • “扫描 /Shared/mandated_broker_v2_etl_pipeline 用于表格参考的笔记本”
  • “扫描所有作业并显示其表依赖关系”

在做出更改之前评估影响

  • “如果我摔了,会有什么破的 customer_id 列从 main.default.customers?"
  • “删除的影响是什么 amount 列和重命名 status 到 order_status 在 main.sales.orders?"

检查笔记本电脑质量

  • “审查 /Shared/mandated_broker_v2_etl_pipeline 性能问题”
  • “审查 /Shared/analysis 对于所有问题——性能、编码标准和优化”

监控作业和管道

  • “列出工作区中的所有作业”
  • “作业12345的当前状态如何?”
  • “显示DLT管道的管道状态”
  • “使用参数env=prod触发作业67890的新运行”

计算和SQL仓库

  • “显示集群abc-123的状态”
  • “列出所有正在运行的群集”
  • “停止开发SQL仓库”
  • “目前哪些仓库处于活动状态?”

工作空间和体积

  • “将ETL笔记本导出为源”
  • “笔记本在/Workspace/Users/me/analysis上的状态如何?”
  • “原始数据卷中有哪些文件?”
  • “从设置卷读取config.json文件”

MCP工具

SQL和表(3个工具)

工具 说明
execute_query 对一个ConnectionSQL仓库执行SQL
get_table_info 获取表元数据--列、行数、属性、存储
list_tables 列出catalog.schema中的表

依赖性扫描(4个工具)

工具 说明
scan_notebook 扫描笔记本以查找表/列引用
scan_jobs 扫描所有作业以查找表依赖关系
scan_dlt_pipelines 扫描所有DLT管道以查找源/目标表
scan_dlt_pipeline 按ID扫描单个DLT管道以查找源/目标表

图形操作(3个工具)

工具 说明
build_dependency_graph 构建完整的工作空间依赖关系图
get_table_dependencies 获取表的上游/下游依赖关系
refresh_graph 使依赖关系图缓存无效并重新生成

影响分析和审查(2个工具)

工具 说明
analyze_impact 分析列删除/模式更改/管道故障的影响
review_notebook 查看笔记本以了解问题、反模式和优化

作业和管道运营(6个工具)

工具 说明
list_jobs 列出具有状态和计划信息的作业
get_job_status 通过错误诊断获取详细的作业运行状态
list_pipelines 列出DLT管道的状态和更新状态
get_pipeline_status 使用事件日志获取管道更新详细信息
trigger_rerun 触发最新失败作业运行的重新运行(需要确认)
trigger_job_run 使用可选参数触发全新的作业运行(需要确认)

目录和模式(5个工具)

工具 说明
list_catalogs 列出当前主体可访问的所有Unity目录
list_schemas 列出目录中的所有架构
describe_schema 获取架构元数据、所有者、注释和属性
create_schema 在目录中创建新架构(需要确认)
drop_schema 删除架构--必须为空(需要确认)

计算(5个工具)

工具 说明
list_clusters 列出所有具有状态、创建者和节点类型的集群
get_cluster_status 获取详细的集群状态、spark版本和配置
start_cluster 启动已终止的群集(需要确认)
stop_cluster 停止(终止)正在运行的集群(需要确认)
restart_cluster 重新启动正在运行的群集(需要确认)

SQL仓库(4个工具)

工具 说明
list_warehouses 列出所有SQL仓库的状态、大小和类型
get_warehouse_status 获取详细的仓库配置、扩展和自动停止设置
start_warehouse 启动已停止的SQL仓库(需要确认)
stop_warehouse 停止正在运行的SQL仓库(需要确认)

工作空间操作(7个工具)

工具 说明
list_workspace_notebooks 列出工作区路径中的所有笔记本
create_job 创建新的copula作业(需要确认)
create_notebook 在工作区中创建笔记本(需要确认)
workspace_upload 将本地文件上传到工作区(需要确认)
read_notebook 读取/导出笔记本的内容(SOURCE或HTML)
delete_workspace_item 删除笔记本或文件夹(需要确认)
get_workspace_status 获取工作区对象的元数据(类型、语言、已修改)

UC卷(4个工具)

工具 说明
list_volumes 在Catalog.schema中列出Unity目录卷
get_volume_info 获取卷元数据(类型、存储位置、所有者)
list_volume_files 列出卷内的文件和目录
read_volume_file 从卷中读取文件内容

配置参考

变量 必填 默认 描述
DATABRICKS_HOST 是 -- 工作区URL(https://adb-xxx.azuredatabricks.net 对于Azure, https://dbc-xxx.cloud.databricks.com 适用于AWS/GCP)
DATABRICKS_TOKEN 是 -- 个人访问令牌或服务主体令牌
DATABRICKS_WAREHOUSE_ID 是 -- 查询执行的SQL仓库ID
DATABRICKS_CATALOG 没有 main 不合格表名的默认目录--使用 workspace 适用于AWS/GCP
DATABRICKS_SCHEMA 没有 default 非限定表名的默认架构
GRAPH_CACHE_TTL 没有 3600 依赖图缓存TTL(秒)
GRAPH_REFRESH_INTERVAL 没有 0 每N秒在后台自动刷新一次图形。 0 禁用自动刷新

安全说明: 这 execute_query 工具可以运行 任何SQL 针对您的仓库,包括DDL(DROP TABLE, ALTER TABLE)DML(DELETE, UPDATE).使用最小权限服务主体(请参见 安全与治理 下面)而不是生产环境中的个人管理员PAT。

云提供商说明

此服务器经过测试 Azure数据集 和 AWS上的copula (.cloud.databricks.com).主要区别:

特性 Azure AWS/GCP
主机格式 https://adb-xxx.azuredatabricks.net https://dbc-xxx.cloud.databricks.com
默认目录 main workspace
工作区根对象 DIRECTORY DIRECTORY 和 REPO

所有工具都可以在两个平台上运行。集 DATABRICKS_CATALOG 以匹配工作区的默认目录。

安全与治理

推荐:特权最低的服务负责人

避免将个人管理员PAT存储在 .env 或VS代码配置。相反,创建一个仅具有所需权限的专用服务主体:

-- Grant read access on the catalog and schema
GRANT USE CATALOG ON CATALOG main TO `sp-databricks-mcp`;
GRANT USE SCHEMA ON SCHEMA main.default TO `sp-databricks-mcp`;
GRANT SELECT ON SCHEMA main.default TO `sp-databricks-mcp`;

-- For job operations (trigger_rerun, trigger_job_run, get_job_status)
-- Grant CAN_MANAGE_RUN on specific jobs only, via the Databricks UI or API

集 DATABRICKS_TOKEN 服务主体的OAuth令牌或M2M秘密。Rancher SDK支持 OAuth M2M身份验证 本机-不需要PAT。

工具风险等级

风险 工具 注释
只读 execute_query (仅限选择), get_table_info, list_tables, scan_*, list_*, get_*, describe_schema, build_dependency_graph, get_table_dependencies, analyze_impact, review_notebook, read_notebook, read_volume_file 具有只读权限的安全
突变 trigger_rerun, trigger_job_run, create_schema, start_cluster, stop_cluster, restart_cluster, start_warehouse, stop_warehouse, create_job, create_notebook, workspace_upload 需要 confirm=True
破坏性的 drop_schema, delete_workspace_item, execute_query 带DDL/DML 需要 confirm=True;仔细确定权限范围

Unity目录ACL

全部 execute_query 和 get_table_info 调用尊重Unity目录行/列级安全性。如果代币的本金不足 SELECT 在表上,操作失败并出现权限错误——这是预期的正确行为。

查询保护

限制 execute_query 对于只读语句,请限制SQL仓库的通道策略或为此MCP服务器使用专用的只读仓库。

基础设施(可选)

如果您需要配置新的Azure Rancher工作区 infra/ 目录包含:

  • main.bicep --Azure二头肌模板(高级SKU,启用Unity目录)
  • deploy.ps1 --一个命令PowerShell部署脚本
  • INSTALL.md --详细的分步部署指南
cd infra
./deploy.ps1 -ResourceGroupName rg-databricks-mcp -Location eastus2

发展

# Install with dev dependencies
uv pip install -e ".[dev]"

# Run tests (excluding live integration tests)
uv run pytest tests/ --ignore=tests/test_workspace_ops_live.py -v

# Run tests with coverage report
uv run pytest tests/ --cov=src/databricks_advanced_mcp --cov-report=term-missing --ignore=tests/test_workspace_ops_live.py

# Lint
uv run ruff check src/ tests/

# Type check
uv run mypy src/

建筑

src/databricks_advanced_mcp/
├── server.py              # FastMCP server + CLI entry point
├── config.py              # Pydantic settings from env vars
├── client.py              # Databricks SDK client factory
├── tools/                 # MCP tool implementations (43 tools across 13 modules)
│   ├── __init__.py        # Central registration of all tool modules
│   ├── sql_executor.py    # SQL execution (1 tool)
│   ├── table_info.py      # Table metadata (2 tools)
│   ├── dependency_scanner.py # Scan notebooks/jobs/pipelines (4 tools)
│   ├── graph_ops.py       # Build/query/refresh dependency graph (3 tools)
│   ├── impact_analysis.py # Impact analysis (1 tool)
│   ├── notebook_reviewer.py # Notebook review (1 tool)
│   ├── job_pipeline_ops.py  # Job & pipeline operations (6 tools)
│   ├── workspace_listing.py # Workspace listing (1 tool)
│   ├── workspace_ops.py   # Workspace mutations + read/delete (6 tools)
│   ├── catalog_ops.py     # Unity Catalog & schema management (5 tools)
│   ├── compute_ops.py     # Cluster management (5 tools)
│   ├── warehouse_ops.py   # SQL warehouse management (4 tools)
│   └── volume_ops.py      # Unity Catalog volumes (4 tools)
├── parsers/               # Code parsing engines
│   ├── sql_parser.py      # sqlglot-based SQL extraction
│   ├── notebook_parser.py # Databricks notebook cell parsing
│   └── dlt_parser.py      # DLT pipeline definition parsing
├── graph/                 # Dependency graph
│   ├── models.py          # Node, Edge, DependencyGraph data models
│   ├── builder.py         # Graph builder (orchestrates scans)
│   └── cache.py           # In-memory graph cache with TTL
└── reviewers/             # Notebook review rule engines
    ├── performance.py     # Performance anti-patterns
    ├── standards.py       # Coding standards checks
    └── suggestions.py     # Optimization suggestions

许可证

麻省理工学院


欢迎投稿!看 贡献.md 获取设置说明、PR清单和所需功能列表。