Autopilot MCP
简介
MCP(Model Context Protocol)是由 Anthropic 于 2024 年 11 月提出的开放协议标准,旨在解决大型语言模型与外部系统(如数据库、API)交互的碎片化问题。通过标准化接口,让 LLM 动态理解工具功能并执行操作,降低集成成本。
DWS Autopilot MCP Server 是 DWS AI 诊断体系中的关键组件,为 Skill 提供集群监控指标查询的工具接口。Skill 通过 MCP Server 获取集群的 CPU、内存、I/O 等实时监控数据,作为诊断的事实依据。
用户 → AI 对话窗口 → Skill(诊断逻辑)→ MCP Server(指标查询)→ DWS Autopilot API → 集群监控数据
单击github地址获取。
功能介绍
工具
DWS Autopilot MCP Server 提供以下工具:
- dws_autopilot_get_clusters 查询 DWS 集群列表,无需参数。
- dws_autopilot_get_hosts 查询 DWS 集群节点信息,支持过滤、分页、排序。
- 必填:cluster_id(字符串)— 集群 ID
- 可选过滤:filter(host_name / work_ip)、value、sub_filter、sub_value
- 可选分页:page_size(默认 10,最大 2000)、page_num(默认 1)、offset(默认 0)、limit(默认 512)
- 可选排序:order_by(cpu_usage、mem_usage、disk_usage_avg、disk_io、tcp_resend_rate、net_io)、sort_by(ASC / DESC,默认 DESC)
- dws_autopilot_get_metric 查询 DWS 集群指标时序数据。
- 必填:cluster_id(字符串)、metric_name(字符串)、from_ts(13 位 Unix 时间戳,毫秒)、to_ts(13 位 Unix 时间戳,毫秒)
- 支持的指标:cpu_usage、mem_usage、disk_usage_avg、tcp_resend_rate、disk_io、net_io、cpu_io_diagnose_detail(返回包含 query_id 和 query 字段的逐查询详情)
- 可选:offset(默认 0)、limit(最大 1000,默认 50)、order_by、sort_by(ASC / DESC)
认证方式
采用 AK/SK 签名认证:
- AK/SK 签名模式:使用华为云 Access Key(AK)和 Secret Key(SK)对每个 API 请求进行签名,签名后自动添加 Authorization 和 X-Sdk-Date 请求头完成认证。
- 如果配置了 project_id,会自动添加 X-Project-Id 请求头,用于多项目场景。
配置加密
敏感字段(AK、SK)支持 AES-256-GCM 加密存储:
- 启动 MCP Server 时自动检测明文并加密
- 基于机器指纹的密钥保护,绑定当前机器环境
- 主密钥双重保护:crypter(存储在 yaml)+ cryptComponent(存储在 crypt.json)
安装与配置
环境准备
- Python 3.10 及以上
- pip 包管理器
安装
# 克隆源码 git clone <repo_url> cd dws_autopilot_mcp # 安装依赖 pip install .
配置说明
配置文件位于 conf/dws_config.yaml,首次使用需填写配置:
region_id: "cn-north-7" ak: "your_access_key" sk: "your_secret_key" project_id: "your_project_id" http_proxy: "http://proxy.example.com:8080" https_proxy: "http://proxy.example.com:8080" proxy_username: "your_proxy_user" proxy_password: "your_proxy_password"
| 参数 | 说明 | 示例 |
|---|---|---|
| region_id | 华为云区域 ID,用于自动生成 API 端点 | cn-north-7 |
| ak | 华为云 Access Key(明文输入,启动后自动加密) | — |
| sk | 华为云 Secret Key(明文输入,启动后自动加密) | — |
| project_id | 项目 ID,用于多项目场景的 X-Project-Id 请求头 | — |
| http_proxy | HTTP 代理地址(可直接包含认证信息,也可通过 proxy_username/proxy_password 单独配置) | http://proxy.example.com:8080 |
| https_proxy | HTTPS 代理地址 | http://proxy.example.com:8080 |
| proxy_username | 代理认证用户名(自动注入代理 URL,密码自动 percent-encoding) | — |
| proxy_password | 代理认证密码(自动 percent-encoding 并注入代理 URL) | — |
region_id 会自动生成 DMS_MONITORING_BASE_URL(https://dws.{region_id}.myhuaweicloud.com),无需手动配置。
配置管理 CLI
安装后提供 dws-mcp-config 命令行工具,需在项目根目录(dws_autopilot_mcp/)下执行:
init - 初始化/更新配置
init 命令用于设置配置参数:
python -m dws_autopilot_mcp.config_cli init --region_id cn-north-7 --ak your_ak --sk your_sk --project_id your_project_id
init 命令支持部分更新,仅更新指定的参数,未指定的参数保持不变。例如只更新 AK:python -m dws_autopilot_mcp.config_cli init --ak new_ak。
更新配置后,重启 MCP Server 即可自动加密敏感字段(AK、SK)。
其他命令
# 手动触发加密(将明文敏感字段加密,启动 MCP Server 时也会自动执行) python -m dws_autopilot_mcp.config_cli encrypt # 查看配置状态(敏感信息以 ****** 显示,不会泄露) python -m dws_autopilot_mcp.config_cli show # 重置配置为空模板(清空所有参数,删除 crypt.json) python -m dws_autopilot_mcp.config_cli reset
encrypt、show、reset 命令无需额外参数。
客户端配置
以 OpenCode 为例,在 MCP Servers 配置中添加:
{
"dws_autopilot_mcp": {
"type": "local",
"command": [
"/path/to/python.exe",
"-m",
"dws_autopilot_mcp.server"
],
"environment": {
"PYTHONPATH": "/path/to/dws_autopilot_mcp/src"
}
}
} 将 /path/to/python.exe 替换为本机 Python 可执行文件路径,/path/to/dws_autopilot_mcp/src 替换为本项目 src 目录的绝对路径。Windows 下 PYTHONPATH 使用 ; 分隔,Linux/macOS 使用 : 分隔。
也可通过环境变量 DWS_MCP_CONFIG 指定配置文件路径。
开始体验
完成配置后,即可在客户端中通过自然语言与 DWS 集群交互,例如:
- "查询 XXXX 集群节点信息"
- "查看 XXXX 集群最近 1 小时的 CPU 使用率"
- "我的 DWS 集群 CPU 使用率很高,帮忙诊断一下"
- "检查这条 SQL 的语法:SELECT * FROM t1"
MCP Server 在 AI 诊断中的角色
在 DWS AI 诊断体系中,MCP Server 承担以下角色:
| 角色 | 说明 |
|---|---|
| 数据通道 | 作为 Skill 获取集群监控指标的通道 |
| 参数补全 | I/O 诊断中,当用户未提供 project_id/region_id 时,自动从 MCP Server 配置文件中读取 |
| 指标查询 | 提供 dws_autopilot_get_metric 工具,支持 CpuStat、MemStat、IOStat、InstanceMemory、cpu_io_diagnose_detail、memory_diagnose_detail 等指标查询 |