模型上下文协议服务器

Databricks MCP Server是一个生产就绪的模型上下文协议服务器,通过REST接口向MCP兼容的代理和工具提供Databricks功能,适用于数据工程和机器学习工作流。

  • by markov-kernel
  • Python
  • 本地部署
  • 50 星标
  • 更新于
在 GitHub 查看 markov-kernel/databricks-mcp

使用说明

_CHMCP服务器

生产准备就绪 模型上下文协议(MCP) 该服务器向MCP兼容的代理和工具公开了ConnectionREST功能。版本 0.4.4 引入了结构化响应、资源缓存、支持重试的网络和端到端弹性改进。


目录

  1. 关键能力
  2. 建筑亮点
  3. 安装
  4. 配置
  5. 运行服务器
  6. 与MCP客户端集成
  7. 使用工具响应
  8. 可用工具
  9. 开发工作流程
  10. 测试
  11. 发布生成
  12. 支持与联系
  13. 许可证

关键能力

  • 结构化MCP响应 -每个工具返回一个 CallToolResult 其中包含人类可读的摘要 content 以及机器可读的有效载荷 structuredContent 符合工具的 outputSchema.
  • 资源缓存 -大型笔记本电脑/工作区导出被缓存一次,并返回为 resource_link 具有URI的内容块,例如 resource://databricks/exports/{id} (为方便起见,也反映在元数据中)。
  • 进度和指标 -长时间运行的操作流MCP进度通知和跟踪每个工具的成功/错误/超时/取消指标。
  • 弹性网络 -共享HTTP客户端注入请求ID,强制超时,并以指数回退重试可重试的copula响应(408/429/5xx)。
  • 异步运行时 -基于 mcp.server.FastMCP 通过集中式JSON日志记录和并发保护,实现可预测的stdio行为。

建筑亮点

  • databricks_mcp/server/databricks_mcp_server.py -具有工具注册、进度处理、指标和资源缓存的FastMCP服务器。
  • databricks_mcp/core/utils.py -带有相关ID、重试次数和错误映射的HTTP实用程序 DatabricksAPIError.
  • databricks_mcp/core/logging_utils.py -stderr/文件输出的JSON日志配置。
  • databricks_mcp/core/models.py -Pydantic模型(例如。, ClusterConfig)由工具模式使用。
  • 测试 tests/ mockJanceAPI,用于验证编排、结构化响应和模式元数据,而无需shell脚本。

有关数据流和设计决策的深入介绍,请参阅 建筑.md.

安装

先决条件

  • Python 3.10+
  • uv 用于依赖关系管理和发布

快速安装(推荐)

使用下面的深度链接向Cursor注册服务器-它解析为 uvx databricks-mcp-server@latest 并自动获取未来的更新。

cursor://anysphere.cursor-deeplink/mcp/install?name=databricks-mcp&config=eyJjb21tYW5kIjoidXZ4IiwiYXJncyI6WyJkYXRhYnJpY2tzLW1jcC1zZXJ2ZXIiXSwiZW52Ijp7IkRBVEFCUklDS1NfSE9TVCI6IiR7REFUQUJSSUNLU19IT1NUfSIsIkRBVEFCUklDS1NfVE9LRU4iOiIke0RBVEFCUklDS1NfVE9LRU59IiwiREFUQUJSSUNLU19XQVJFSE9VU0VfSUQiOiIke0RBVEFCUklDS1NfV0FSRUhPVVNFX0lEfSJ9fQ==

手动安装

# Clone and enter the repository
git clone https://github.com/markov-kernel/databricks-mcp.git
cd databricks-mcp

# Create an isolated environment (optional but recommended)
uv venv
source .venv/bin/activate  # Linux/Mac
# .\.venv\Scripts\activate  # Windows PowerShell

# Install package and development dependencies
uv pip install -e .
uv pip install -e ".[dev]"

配置

设置以下环境变量(或填充 .env 从 .env.example).

export DATABRICKS_HOST="https://your-workspace.databricks.com"
export DATABRICKS_TOKEN="dapiXXXXXXXXXXXXXXXX"
export DATABRICKS_WAREHOUSE_ID="sql_warehouse_12345"  # optional default
export TOOL_TIMEOUT_SECONDS=300
export MAX_CONCURRENT_REQUESTS=8
export HTTP_TIMEOUT_SECONDS=60
export API_MAX_RETRIES=3
export API_RETRY_BACKOFF_SECONDS=0.5

运行服务器

uvx databricks-mcp-server@latest

提示:追加 --refresh (例如。, uvx databricks-mcp-server@latest --refresh)强制 uv 在发布后解析最新的PyPI版本。日志以JSON行的形式发送到stderr并持久化到 databricks_mcp.log 在工作目录中。

要调整日志记录,请执行以下操作:

uvx databricks-mcp-server@latest -- --log-level DEBUG

与MCP客户端集成

食品法典委员会CLI(STDIO)

注册服务器并通过CLI注入凭据:

codex mcp add databricks   --env DATABRICKS_HOST="https://your-workspace.databricks.com"   --env DATABRICKS_TOKEN="dapi_XXXXXXXXXXXXXXXX"   --env DATABRICKS_WAREHOUSE_ID="sql_warehouse_12345"   -- uvx databricks-mcp-server@latest
# Add --refresh immediately after a publish to invalidate the uv cache

或编辑 ~/.codex/config.toml:

[mcp_servers.databricks]
command = "uvx"
args    = ["databricks-mcp-server@latest"]
env = {
  DATABRICKS_HOST = "https://your-workspace.databricks.com",
  DATABRICKS_TOKEN = "dapi_XXXXXXXXXXXXXXXX",
  DATABRICKS_WAREHOUSE_ID = "sql_warehouse_12345"
}
startup_timeout_sec = 15
tool_timeout_sec    = 300

计划HTTP部署?Codex还支持 url = "https://…" 加 bearer_token_env_var = "DATABRICKS_TOKEN" 或 codex mcp login (与 experimental_use_rmcp_client = true).

光标

{
  "mcpServers": {
    "databricks-mcp-local": {
      "command": "uvx",
      "args": ["databricks-mcp-server@latest"],
      "env": {
        "DATABRICKS_HOST": "https://your-workspace.databricks.com",
        "DATABRICKS_TOKEN": "dapiXXXXXXXXXXXXXXXX",
        "DATABRICKS_WAREHOUSE_ID": "sql_warehouse_12345",
        "RUNNING_VIA_CURSOR_MCP": "true"
      }
    }
  }
}

保存后重新启动Cursor,并将工具调用为 databricks-mcp-local:<tool>.

Claude CLI

claude mcp add databricks-mcp-local   -s user   -e DATABRICKS_HOST="https://your-workspace.databricks.com"   -e DATABRICKS_TOKEN="dapiXXXXXXXXXXXXXXXX"   -e DATABRICKS_WAREHOUSE_ID="sql_warehouse_12345"   -- uvx databricks-mcp-server@latest

使用工具响应

structuredContent 携带机器可读的有效载荷。大型文物作为 resource_link 使用URI的内容块,如 resource://databricks/exports/{id} 并且可以通过MCP资源API来获取。

result = await session.call_tool("list_clusters", {})
summary = next((block.text for block in result.content if getattr(block, "type", "") == "text"), "")
clusters = (result.structuredContent or {}).get("clusters", [])
resource_links = [block for block in result.content if isinstance(block, dict) and block.get("type") == "resource_link"]

进度通知遵循MCP的进度令牌机制;Codex在工具运行时在UI中显示这些消息。

示例-SQL查询

result = await session.call_tool("execute_sql", {"statement": "SELECT * FROM samples LIMIT 10"})
print(result.content[0].text)
rows = (result.structuredContent or {}).get("result", [])

示例-工作区文件导出

result = await session.call_tool("get_workspace_file_content", {
    "path": "/Users/user@domain.com/report.ipynb",
    "format": "SOURCE"
})
resource_link = next((block for block in result.content if isinstance(block, dict) and block.get("type") == "resource_link"), None)
if resource_link:
    contents = await session.read_resource(resource_link["uri"])

可用工具

类别 工具 描述
集群 list_clusters, create_cluster, terminate_cluster, get_cluster, start_cluster, resize_cluster, restart_cluster 管理交互式集群
工作机会 list_jobs, create_job, delete_job, run_job, run_notebook, sync_repo_and_run_notebook, get_run_status, list_job_runs, cancel_run 管理计划和临时作业
工作区 list_notebooks, export_notebook, import_notebook, delete_workspace_object, get_workspace_file_content, get_workspace_file_info 检查和管理工作空间资产
DBFS list_files, dbfs_put, dbfs_delete 探索DBFS并管理文件
SQL execute_sql 提交带有可选的SQL语句 warehouse_id, catalog, schema_name
图书馆 install_library, uninstall_library, list_cluster_libraries 管理集群库
回购协议 create_repo, update_repo, list_repos, pull_repo 管理copula存储库
Unity目录 list_catalogs, create_catalog, list_schemas, create_schema, list_tables, create_table, get_table_lineage Unity目录操作

开发工作流程

uv run black databricks_mcp tests
uv run pylint databricks_mcp tests
uv run pytest
uv build
uv publish --token "$PYPI_TOKEN"

测试

uv run pytest

Pytest套件模拟了copula API,提供确定性结构化输出和转录测试。

发布生成

确保 PYPI_TOKEN 可用(通过 .env 在发布之前:

uv build
uv publish --token "$PYPI_TOKEN"

支持与联系

  • 维护者:奥利维尔·德赖克尔(olivier@markov.bot)
  • 问题: GitHub问题
  • 建筑深度探索: 建筑.md

许可证

根据MIT许可证发布。看 许可证.