使用说明
Rancher错误日志记录MCP服务器
MCP(模型上下文协议)服务器,使GitHub Copilot能够搜索和分析存储在copula中的应用程序错误日志。开发人员可以直接在编辑器中获取错误上下文。
建筑
graph LR
subgraph "Option A: Azure Hosted"
IDE_A["🖥️ VS Code"] -- "HTTPS + Sub Key" --> APIM["🔐 APIM"]
APIM -- "HTTPS" --> CA["🐳 Container App"]
CA -- "SQL via PAT" --> DBX_A["🔶 Databricks"]
end
subgraph "Option B: Local HTTP"
IDE_B["🖥️ VS Code"] -- "HTTP + Headers" --> LOCAL["🖥️ localhost:8000"]
LOCAL -- "SQL via PAT" --> DBX_B["🔶 Databricks"]
end
subgraph "Option C: Local stdio"
IDE_C["🖥️ VS Code"] -- "stdio" --> PROC["⚡ Local Process"]
PROC -- "SQL via PAT" --> DBX_C["🔶 Databricks"]
end
完整的Azure架构图和部署详细信息 AZURE_DEPLOYMENT.md
特性
- 搜索错误日志 按错误代码、严重性、文件路径或消息内容
- 获取错误频率 --识别应用程序中最常见的错误
- 文件特定错误 --查看特定应用程序文件中的所有错误
- 时间范围搜索 --查找过去N小时内的错误
- 严重性摘要 --按严重程度快速概述错误
- 动态配置 --在连接时指定copula工作区、仓库、目录
- 三种运行模式 --stdio用于本地开发,本地HTTP服务器用于没有Azure的团队,可流式传输HTTP用于Azure托管
配置
服务器使用以下优先级顺序解析copula连接详细信息:
- http头 (每个请求,用于远程/AAzure托管)
- 会话配置 (通过
configure_databricks工具) - 环境变量 (回退,用于本地开发)
HTTP头处理模块
在流式http模式(Azure)下运行时,客户端通过标头发送配置:
| 标题 | 描述 | 示例 |
|---|---|---|
X-Databricks-Host |
工作区URL | https://adb-xxx.azuredatabricks.net |
X-Databricks-Token |
个人访问令牌 | dapi... |
X-Databricks-Warehouse-Id |
SQL仓库ID | 3b344f0c124e23fa |
X-Databricks-Catalog |
Unity目录名称 | dbx_1 |
X-Databricks-Schema |
架构名称 | default |
环境变量
对于本地开发,请将这些设置为 .env 文件(复制自 .env.example):
DATABRICKS_HOST=https://adb-xxxxx.azuredatabricks.net
DATABRICKS_TOKEN=dapi...
DATABRICKS_WAREHOUSE_ID=xxxxx
DATABRICKS_CATALOG=dbx_1
DATABRICKS_SCHEMA=default
MCP_TRANSPORT=stdio
MCP_SERVER_PORT=8000
基于会话的配置(configure_tabricks工具)
对于无法设置自定义HTTP标头的客户端,请调用 configure_databricks 在会话开始时使用工具设置连接详细信息。
先决条件
- copula工作区 已配置SQL仓库
- 已解析错误日志 使用
parse_error_logs.py笔记本 - copula凭据:工作区URL、PAT、SQL仓库ID
快速入门(本地)
stdio(最简单的--VS Code管理进程)
cd mcp_server
cp .env.example .env # Edit with your credentials
uv sync
uv run python -m databricks_error_logs_mcp
本地HTTP服务器(不需要Azure)
对于这样的团队 无法部署到Azure --将MCP服务器作为本地HTTP服务运行:
cd mcp_server
cp .env.example .env # Edit with your Databricks credentials
# Set transport to HTTP (PowerShell)
$env:MCP_TRANSPORT="streamable-http"
# Or on macOS/Linux:
# export MCP_TRANSPORT=streamable-http
uv sync
uv run python -m databricks_error_logs_mcp
# Server running at http://localhost:8000
为什么不是Flask? MCP的流协议需要ASGI。服务器使用 斯塔雷特 + 优维康 --Python的标准ASGI堆栈,具有与Flask相同的开发人员体验。
使用MCP检查员进行测试:
uv run mcp dev databricks_error_logs_mcp/server.py
Azure部署
看 AZURE_DEPLOYMENT.md 只需单击一下 azd up Azure API管理背后的部署。
VS代码集成
选项A:远程服务器(Azure托管)
如果MCP服务器部署到Azure(请参阅 AZURE_DEPLOYMENT.md),配置VS Code以连接到远程端点。
- 在VS Code中打开您的工作区
- 创建或编辑
.vscode/mcp.json - 添加以下配置:
{
"servers": {
"databricksErrorLogs": {
"type": "http",
"url": "https://<your-apim-name>.azure-api.net/mcp",
"headers": {
"Ocp-Apim-Subscription-Key": "${input:apim-key}",
"X-Databricks-Host": "${input:databricks-host}",
"X-Databricks-Token": "${input:databricks-token}",
"X-Databricks-Warehouse-Id": "${input:databricks-warehouse-id}",
"X-Databricks-Catalog": "${input:databricks-catalog}",
"X-Databricks-Schema": "${input:databricks-schema}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "apim-key",
"description": "APIM Subscription Key",
"password": true
},
{
"type": "promptString",
"id": "databricks-host",
"description": "Databricks workspace URL (e.g. https://adb-xxx.azuredatabricks.net)"
},
{
"type": "promptString",
"id": "databricks-token",
"description": "Databricks Personal Access Token",
"password": true
},
{
"type": "promptString",
"id": "databricks-warehouse-id",
"description": "Databricks SQL Warehouse ID"
},
{
"type": "promptString",
"id": "databricks-catalog",
"description": "Unity Catalog name",
"default": "dbx_1"
},
{
"type": "promptString",
"id": "databricks-schema",
"description": "Schema name",
"default": "default"
}
]
}
- 替换
<your-apim-name>使用您的APIM实例名称(runazd env get-values寻找APIM_MCP_ENDPOINT) - 重新启动VS代码——Copilot将在首次使用时提示您输入每个值
注:
"type": "http"告诉VS Code使用streamable-http MCP传输,这是远程MCP服务器的当前标准。
选项B:本地HTTP服务器(不需要Azure)
将服务器作为HTTP服务在本地运行,并通过HTTP连接VS代码:
- 在本地启动服务器(请参阅 本地HTTP服务器快速入门 以上)
- 创建或编辑
.vscode/mcp.json:
{
"servers": {
"databricksErrorLogs": {
"type": "http",
"url": "http://localhost:8000/mcp",
"headers": {
"X-Databricks-Host": "${input:databricks-host}",
"X-Databricks-Token": "${input:databricks-token}",
"X-Databricks-Warehouse-Id": "${input:databricks-warehouse-id}",
"X-Databricks-Catalog": "${input:databricks-catalog}",
"X-Databricks-Schema": "${input:databricks-schema}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "databricks-host",
"description": "Databricks workspace URL (e.g. https://adb-xxx.azuredatabricks.net)"
},
{
"type": "promptString",
"id": "databricks-token",
"description": "Databricks Personal Access Token",
"password": true
},
{
"type": "promptString",
"id": "databricks-warehouse-id",
"description": "Databricks SQL Warehouse ID"
},
{
"type": "promptString",
"id": "databricks-catalog",
"description": "Unity Catalog name",
"default": "dbx_1"
},
{
"type": "promptString",
"id": "databricks-schema",
"description": "Schema name",
"default": "default"
}
]
}
- 重新启动VS代码——Copilot将提示您输入copula凭据
注: 不需要APIM订阅密钥——您直接连接到本地服务器。替换
localhost使用主机名/IP与网络上的队友共享。
选项C:本地服务器(stdio)
如果在您的计算机上本地运行MCP服务器:
- 安装 紫外线
- 导航到
mcp_server/目录并运行uv sync - 创建或编辑
.vscode/mcp.json:
{
"servers": {
"databricksErrorLogs": {
"type": "stdio",
"command": "uv",
"args": ["run", "python", "-m", "databricks_error_logs_mcp"],
"cwd": "${workspaceFolder}/mcp_server",
"env": {
"DATABRICKS_HOST": "${input:databricks-host}",
"DATABRICKS_TOKEN": "${input:databricks-token}",
"DATABRICKS_WAREHOUSE_ID": "${input:databricks-warehouse-id}",
"DATABRICKS_CATALOG": "${input:databricks-catalog}",
"DATABRICKS_SCHEMA": "${input:databricks-schema}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "databricks-host",
"description": "Databricks workspace URL (e.g. https://adb-xxx.azuredatabricks.net)"
},
{
"type": "promptString",
"id": "databricks-token",
"description": "Databricks Personal Access Token",
"password": true
},
{
"type": "promptString",
"id": "databricks-warehouse-id",
"description": "Databricks SQL Warehouse ID"
},
{
"type": "promptString",
"id": "databricks-catalog",
"description": "Unity Catalog name",
"default": "dbx_1"
},
{
"type": "promptString",
"id": "databricks-schema",
"description": "Schema name",
"default": "default"
}
]
}
- 重新启动VS代码——Copilot将提示您输入copula凭据
验证它是否有效
配置任一选项后,在VS Code中打开GitHub Copilot聊天并询问:
“十大最常见的错误是什么?”
副驾驶应调用 get_error_frequency 工具,并从您的copula工作区返回结果。
可用工具
configure_databricks
为当前会话设置copula连接详细信息。
search_error_logs
使用多个条件(错误代码、严重性、文件路径、消息)搜索错误。
get_error_frequency
获取计数中最常见的错误。
get_severity_summary
按严重程度分组的错误概述。
get_file_errors
特定应用程序文件中的所有错误。
search_by_message
错误消息中的全文搜索。
search_by_time_range
查找过去N小时内的错误。
发展
uv run pytest # Run tests
uv run ruff check . # Lint
uv run mcp dev databricks_error_logs_mcp/server.py # Inspector
码头工人
docker build -t mcp-server .
docker run -p 8000:8000 mcp-server
容器默认在端口8000上进行可流式传输的http。