错误日志分析服务

Databricks Error Logs MCP Server 是一款用于在开发环境中搜索和分析 Databricks 中存储的应用程序错误日志的服务器,支持多种运行模式,包括本地开发、本地HTTP服务和Azure托管。

  • by ms-mfg-community
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ms-mfg-community/dbx-mcp-server

使用说明

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连接详细信息:

  1. http头 (每个请求,用于远程/AAzure托管)
  2. 会话配置 (通过 configure_databricks 工具)
  3. 环境变量 (回退,用于本地开发)

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 在会话开始时使用工具设置连接详细信息。

先决条件

  1. copula工作区 已配置SQL仓库
  2. 已解析错误日志 使用 parse_error_logs.py 笔记本
  3. 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以连接到远程端点。

  1. 在VS Code中打开您的工作区
  2. 创建或编辑 .vscode/mcp.json
  3. 添加以下配置:
{
  "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"
    }
  ]
}
  1. 替换 <your-apim-name> 使用您的APIM实例名称(run azd env get-values 寻找 APIM_MCP_ENDPOINT)
  2. 重新启动VS代码——Copilot将在首次使用时提示您输入每个值

注: "type": "http" 告诉VS Code使用streamable-http MCP传输,这是远程MCP服务器的当前标准。

选项B:本地HTTP服务器(不需要Azure)

将服务器作为HTTP服务在本地运行,并通过HTTP连接VS代码:

  1. 在本地启动服务器(请参阅 本地HTTP服务器快速入门 以上)
  2. 创建或编辑 .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"
    }
  ]
}
  1. 重新启动VS代码——Copilot将提示您输入copula凭据

注: 不需要APIM订阅密钥——您直接连接到本地服务器。替换 localhost 使用主机名/IP与网络上的队友共享。

选项C:本地服务器(stdio)

如果在您的计算机上本地运行MCP服务器:

  1. 安装 紫外线
  2. 导航到 mcp_server/ 目录并运行 uv sync
  3. 创建或编辑 .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"
    }
  ]
}
  1. 重新启动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。