______________________________________________________________________
post_title:POC-Databricks MCP 作者1:GitHub复制品 post_slug:poc数据块mcp 微卫星:na featured_image:na 类别: -未分类 标签: -数据块 -mcp -配置 ai_note:人工智能辅助生成 summary:AppDMCP服务器的概述和配置指南。 发布日期:2026年1月23日
POC-copula MCP
快速开始
- 安装:
pip install -e . - 复制
config.example.yml到config.yml填写仓库+明细表;通过env注入secrets(文件中没有secrets)。 - 运行:
DATABRICKS_MCP_CONFIG=config.yml python -m databricks_mcp.server - 工具在分配的目录/模式集上公开元数据发现、采样和受控查询执行。
远程使用Claude Desktop或其他MCP客户端
无需克隆存储库,即可远程使用此MCP服务器。使用 uvx (部分 uv 包管理器)直接从Git存储库运行服务器。
先决条件
- 安装
uv(包括uvx): https://docs.astral.sh/uv/getting-started/installation/
curl -LsSf https://astral.sh/uv/install.sh | sh- 创建配置文件
config.yml在系统上的已知位置
- 将您的copula凭据设置为环境变量
与Claude Desktop一起使用(推荐)
步骤1:创建配置文件
创建一个 config.yml 在您的系统上的任何位置文件(例如。, ~/.config/databricks-mcp/config.yml 在macOS/Linux或 %USERPROFILE%\.config\databricks-mcp\config.yml 在Windows上):
warehouse:
host: ${DATABRICKS_HOST}
http_path: ${DATABRICKS_HTTP_PATH}
warehouse_id: ${DATABRICKS_WAREHOUSE_ID}
auth:
oauth:
client_id: ${DATABRICKS_CLIENT_ID}
client_secret: ${DATABRICKS_CLIENT_SECRET}
token_url: ${DATABRICKS_TOKEN_URL}
scopes:
catalogs:
main:
schemas:
- default
# Add more catalogs as needed
# my_catalog:
# schemas:
# - schema1
# - schema2
limits:
max_rows: 10000
sample_max_rows: 1000
query_timeout_seconds: 60
max_concurrent_queries: 5
allow_statement_types:
- SELECT
observability:
log_level: info
propagate_request_ids: true步骤2:配置Claude桌面
编辑您的Claude Desktop配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
添加此配置以从Git存储库运行:
{
"mcpServers": {
"databricks-mcp": {
"command": "uvx",
"args": [
"--python",
"3.11",
"--from",
"git+https://github.com/ramzpat/poc-databricks-mcp.git",
"databricks-mcp"
],
"env": {
"DATABRICKS_MCP_CONFIG": "/absolute/path/to/your/config.yml",
"DATABRICKS_HOST": "https://your-workspace.cloud.databricks.com",
"DATABRICKS_HTTP_PATH": "/sql/1.0/warehouses/your-warehouse-id",
"DATABRICKS_WAREHOUSE_ID": "your-warehouse-id",
"DATABRICKS_CLIENT_ID": "your-client-id",
"DATABRICKS_CLIENT_SECRET": "your-client-secret",
"DATABRICKS_TOKEN_URL": "https://your-workspace.cloud.databricks.com/oidc/v1/token"
}
}
}
}重要提示:
- 替换
/absolute/path/to/your/config.yml带有配置文件的实际绝对路径 - 全部替换
your-*带有您的实际copula凭据的占位符 - 在Windows上,在路径中使用正斜杠或双反斜杠:
C:/Users/YourName/.config/databricks-mcp/config.yml或C:\\Users\\YourName\\.config\\databricks-mcp\\config.yml
步骤3:重新启动克劳德桌面
保存配置后,重新启动Claude Desktop。Rancher MCP服务器将自动可用。
替代方案:使用PyPI(发布时)
如果此包发布到PyPI,则可以简化配置:
{
"mcpServers": {
"databricks-mcp": {
"command": "uvx",
"args": [
"--python",
"3.11",
"databricks-mcp"
],
"env": {
"DATABRICKS_MCP_CONFIG": "/absolute/path/to/your/config.yml",
"DATABRICKS_HOST": "https://your-workspace.cloud.databricks.com",
"DATABRICKS_HTTP_PATH": "/sql/1.0/warehouses/your-warehouse-id",
"DATABRICKS_WAREHOUSE_ID": "your-warehouse-id",
"DATABRICKS_CLIENT_ID": "your-client-id",
"DATABRICKS_CLIENT_SECRET": "your-client-secret",
"DATABRICKS_TOKEN_URL": "https://your-workspace.cloud.databricks.com/oidc/v1/token"
}
}
}
}替代方案:当前工作目录中的配置文件
如果你喜欢把你的 config.yml 在特定目录中,您可以将其设置为工作目录或使用绝对路径:
{
"mcpServers": {
"databricks-mcp": {
"command": "uvx",
"args": [
"--python",
"3.11",
"--from",
"git+https://github.com/ramzpat/poc-databricks-mcp.git",
"databricks-mcp"
],
"env": {
"DATABRICKS_MCP_CONFIG": "config.yml",
"DATABRICKS_HOST": "https://your-workspace.cloud.databricks.com",
"DATABRICKS_HTTP_PATH": "/sql/1.0/warehouses/your-warehouse-id",
"DATABRICKS_WAREHOUSE_ID": "your-warehouse-id",
"DATABRICKS_CLIENT_ID": "your-client-id",
"DATABRICKS_CLIENT_SECRET": "your-client-secret",
"DATABRICKS_TOKEN_URL": "https://your-workspace.cloud.databricks.com/oidc/v1/token"
}
}
}
}备注:如果 DATABRICKS_MCP_CONFIG 未设置,服务器将查找 config.example.yml 默认情况下,位于当前工作目录中。对于生产使用,始终指定一个绝对路径到您的 config.yml 文件清晰可靠。
环境变量引用
所有配置值都支持使用环境变量替换 ${VAR_NAME} 语法在 config.yml 文件。您可以选择:
- 仅在环境变量中存储机密 (推荐):
- 仅在MCP客户端配置中保留敏感值(client_secret、token) env 部分 - 参考它们 config.yml 和 ${VARIABLE_NAME}
- 混合配置文件和环境变量:
- 将非敏感配置存储在 config.yml - 将机密存储为环境变量
具有最小环境变量的示例:
{
"mcpServers": {
"databricks-mcp": {
"command": "uvx",
"args": [
"--python",
"3.11",
"--from",
"git+https://github.com/ramzpat/poc-databricks-mcp.git",
"databricks-mcp"
],
"env": {
"DATABRICKS_MCP_CONFIG": "/path/to/config.yml",
"DATABRICKS_CLIENT_SECRET": "your-secret-here"
}
}
}
}在 config.yml,硬编码非敏感值:
warehouse:
host: "https://your-workspace.cloud.databricks.com"
http_path: "/sql/1.0/warehouses/warehouse-id"
warehouse_id: "warehouse-id"
auth:
oauth:
client_id: "your-client-id"
client_secret: ${DATABRICKS_CLIENT_SECRET} # From environment
token_url: "https://your-workspace.cloud.databricks.com/oidc/v1/token"测试您的配置
要验证您的配置是否有效,您可以从命令行手动测试它:
# Set environment variables
export DATABRICKS_MCP_CONFIG="/path/to/your/config.yml"
export DATABRICKS_HOST="https://your-workspace.cloud.databricks.com"
export DATABRICKS_HTTP_PATH="/sql/1.0/warehouses/your-warehouse-id"
export DATABRICKS_WAREHOUSE_ID="your-warehouse-id"
export DATABRICKS_CLIENT_ID="your-client-id"
export DATABRICKS_CLIENT_SECRET="your-client-secret"
export DATABRICKS_TOKEN_URL="https://your-workspace.cloud.databricks.com/oidc/v1/token"
# Run with uvx from Git (if uv is installed)
uvx --python 3.11 --from git+https://github.com/ramzpat/poc-databricks-mcp.git databricks-mcp
# Or run directly with Python (if you cloned the repo)
python -m databricks_mcp.server快速设置(开发)
- 创建venv并安装:
python -m venv .venv && source .venv/bin/activate && pip install -e .[test] - 导出所需的环境变量(示例):
- export DATABRICKS_HOST="https://" - export DATABRICKS_HTTP_PATH="/sql/1.0/warehouses/" - export DATABRICKS_WAREHOUSE_ID="" - export DATABRICKS_CLIENT_ID="" - export DATABRICKS_CLIENT_SECRET="" - export DATABRICKS_TOKEN_URL="https:///oidc/v1/token"
- 复制
config.example.yml到config.yml并调整配额制度/限制;留下秘密${...}env引用。 - 运行服务器:
DATABRICKS_MCP_CONFIG=config.yml python -m databricks_mcp.server - 运行测试:
pytest
获取OAuth令牌(服务主体)
- Prereq:服务负责人
client_id/client_secret,以及令牌端点(工作区OIDC)。通常不需要范围;如果你的IdP强制执行,请通过scope. - 请求示例:
curl -X POST "$DATABRICKS_TOKEN_URL" \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d "grant_type=client_credentials" \
-d "client_id=$DATABRICKS_CLIENT_ID" \
-d "client_secret=$DATABRICKS_CLIENT_SECRET"- 预期JSON:
{ "access_token": "...", "token_type": "Bearer", "expires_in": 3600 } - 服务器通过以下方式自动获取和刷新令牌
DATABRICKS_CLIENT_ID/SECRET和DATABRICKS_TOKEN_URL;curl仅用于验证/调试。
配置
- 必填字段(YAML):仓库主机,
http_path,warehouse_id,
满配 scopes.catalogs..schemas、限制(行/时间/并发性), 以及可选的可观察性设置。
- 必需的环境变量:OAuth客户端密钥(
${DATABRICKS_CLIENT_SECRET}在YAML中)
加上引用的任何主机/令牌设置 ${...} (例如。, DATABRICKS_HOST, DATABRICKS_HTTP_PATH, DATABRICKS_WAREHOUSE_ID, DATABRICKS_TOKEN_URL).
- 限制:
max_rows,sample_max_rows,query_timeout_seconds,
max_concurrent_queries (不能是无限的), allow_statement_types (默认值 SELECT). -1 仅表示行/时间“无限制”。
- 秘密:始终使用
${ENV_VAR}YAML中的引用;永远不要硬编码令牌。
工具
list_catalogs,list_schemas(catalog):仅返回已分配的作用域。list_tables(catalog, schema):允许范围内的信息架构中的表/视图。table_metadata(catalog, schema, table):列、主键、分区列和行数(如果可用)。partition_info(catalog, schema, table):分区列加上轻量级统计数据(行数、大小)。sample_data(catalog, schema, table, limit?, predicate?):capped示例在服务器端强制执行。preview_query(sql, limit?, timeout_seconds?):仅选择具有严格行/时间限制的快速检查。run_query(sql, limit?, timeout_seconds?):当配置显式使用时,受控制的SELECT具有行/时间上限和可选的无限行-1.health_check():liveness,无需联系copula。
护栏
- 对每个工具上的目录和模式执行允许列表;其他任何东西都被拒绝了。
- 默认情况下仅选择;其他语句类型需要显式
allow_statement_types在配置中。 - 服务器端的行上限、超时和并发限制始终适用(客户端请求不能覆盖)。
- 当限制减少输出时,结果中会显示截断。
可观测性
- 结构化日志包括请求ID/查询ID;通过配置日志级别
observability.log_level. - 错误简洁明了,避免使用原始SQL或机密;copula故障映射到用户安全消息。
测试
- 安装dev-deps:
pip install -e .[test] - 运行单元测试:
pytest
