Databricks MCP 服务器
这是一个模型上下文协议 (MCP) 服务器,用于使用语句执行 API 针对 Databricks 执行 SQL 查询。它可以通过使用 Databricks API 执行 SQL 请求来检索数据。在代理模式下使用时,它可以成功迭代多个请求以执行复杂任务。与 Unity Catalog Metadata 结合使用效果更佳。
特征
在 Databricks 上执行 SQL 查询
列出目录中可用的架构
列出架构中的表
描述表模式
Related MCP server: MCP MySQL App
设置
系统要求
Python 3.10+
如果您计划通过
uv安装,请确保它已安装
安装
安装所需的依赖项:
或者如果使用uv :
设置环境变量:
选项 1:使用 .env 文件(推荐)
使用您的 Databricks 凭据创建一个 .env 文件:
DATABRICKS_HOST=your-databricks-instance.cloud.databricks.com DATABRICKS_TOKEN=your-databricks-access-token DATABRICKS_SQL_WAREHOUSE_ID=your-sql-warehouse-id选项 2:直接设置环境变量
export DATABRICKS_HOST="your-databricks-instance.cloud.databricks.com" export DATABRICKS_TOKEN="your-databricks-access-token" export DATABRICKS_SQL_WAREHOUSE_ID="your-sql-warehouse-id"
您可以在 Databricks UI 的 SQL Warehouses 下找到您的 SQL 仓库 ID。
权限要求
在使用此 MCP 服务器之前,请确保:
SQL 仓库权限:与所提供令牌关联的用户必须具有适当的权限才能访问指定的 SQL 仓库。您可以在 Databricks UI 的“SQL 仓库”>“[您的仓库]”>“权限”下配置仓库权限。
令牌权限:所使用的个人访问令牌应具有执行所需操作所需的最低权限。强烈建议:
专门为该应用程序创建专用令牌
尽可能授予只读权限以限制安全风险
避免使用具有工作区范围管理员权限的令牌
数据访问权限:与令牌关联的用户必须具有适当的权限才能访问将要查询的目录、模式和表。
要通过 Databricks REST API 设置 SQL 仓库权限,您可以使用:
GET /api/2.0/sql/permissions/warehouses/{warehouse_id}检查当前权限PATCH /api/2.0/sql/permissions/warehouses/{warehouse_id}更新权限
为了实现最佳安全实践,请考虑定期轮换您的访问令牌并审核查询历史记录以监控使用情况。
运行服务器
独立模式
要在独立模式下运行服务器:
这将使用 stdio 传输启动 MCP 服务器,可与 Agent Composer 或其他 MCP 客户端一起使用。
与游标一起使用
要将此 MCP 服务器与Cursor一起使用,您需要在 Cursor 设置中对其进行配置:
如果
.cursor目录尚不存在,请在主目录中创建它在该目录中创建或编辑
mcp.json文件:
将以下配置添加到
mcp.json文件,将目录路径替换为安装此服务器的实际路径:
如果您不使用uv ,则可以使用python代替:
重新启动 Cursor 以应用更改
现在您可以在 Cursor 的 AI 助手中直接使用 Databricks MCP 服务器。
可用工具
该服务器提供以下工具:
execute_sql_query:执行 SQL 查询并返回结果execute_sql_query(sql: str) -> strlist_schemas:列出特定目录中所有可用的模式list_schemas(catalog: str) -> strlist_tables:列出特定模式中的所有表list_tables(schema: str) -> strdescribe_table:描述表的架构describe_table(table_name: str) -> str
示例用法
在 Agent Composer 或其他 MCP 客户端中,您可以使用以下工具:
处理长时间运行的查询
该服务器旨在通过轮询 Databricks API 来处理长时间运行的查询,直到查询完成或超时。默认超时时间为 10 分钟(重试 60 次,间隔 10 秒),如有需要,可以在dbapi.py文件中进行调整。
依赖项
httpx:用于向 Databricks API 发出 HTTP 请求
python-dotenv:用于从 .env 文件加载环境变量
mcp:模型上下文协议库
asyncio:用于异步操作