1. 为什么你的 Prometheus 需要一个 AI 大脑
Prometheus 采集的指标数据本身不会说话,真正让运维团队头疼的是「从一堆曲线里定位到根因」这件事。我见过太多团队把 Prometheus 部署得很规范,Grafana 大盘也做得漂亮,但一旦告警触发,值班同学还是要手动敲十几条 PromQL,在多个面板之间来回切换,才能拼凑出一个模糊的结论。这个过程既依赖个人经验,又难以沉淀成团队资产。
Prometheus MCP Server 想解决的就是这个断层。MCP(Model Context Protocol)是 Anthropic 提出的开放协议,你可以把它理解成「AI 应用和外部数据源之间的标准插座」——AI 客户端通过 MCP Client 连接 MCP Server,Server 再把 Prometheus 的查询、告警、规则等能力暴露成一个个工具(Tool),AI 就能像调用函数一样去查指标、读告警、做关联分析。整个过程里,AI 不需要直接持有 Prometheus 的账号密码,权限边界清晰。
但这里有个容易被忽略的环节:MCP Server 本身只是「手」,真正做推理和决策的「大脑」是背后的大模型。如果你用的是官方直连或者零散拼凑的 API,很容易遇到限流、计费混乱、模型切换成本高的问题。这篇内容聚焦的就是用 TaoToken 作为统一的 Key/API 通道,给 Prometheus MCP Server 接上稳定的 AI 能力,面向的是已经有 Prometheus 在跑的运维场景。读完之后,你应该能拿到一份可复制的 config.toml 和 settings.json 骨架,在 CC Switch 或 Cline 里完成配置,并跑通一次「告警查询 + 指标解读」的验证动作。
适合谁看:手上有 Prometheus 实例、想让 AI 承担监控问答和排障辅助的 SRE/运维开发;已经在用 Cline、Claude Code 这类支持 MCP 的客户端,想统一模型接入方式的同学。
2. TaoToken 在链路里的位置与前置准备
先把架构讲清楚,不然后面配置容易懵。整条链路是这样的:
AI 客户端(Cline / Claude Code / CC Switch) │ 通过 MCP 协议调用工具 ▼ Prometheus MCP Server(本地进程,stdio 通信) │ 调用 Prometheus HTTP API ▼ Prometheus Server(你的监控实例)而 TaoToken 的位置在「AI 客户端」这一侧——它是模型能力的统一入口。MCP Server 负责把 Prometheus 的数据取出来,TaoToken 负责让模型理解这些数据并生成结论。两者职责不重叠,所以配置也是分开的:MCP Server 的配置管的是「怎么连 Prometheus」,TaoToken 的配置管的是「模型从哪来」。
为什么建议用统一通道而不是每个客户端各配一套?我自己的体会是三点。第一,Key 管理集中,换模型或者调额度只改一处;第二,计费和用量可观测,不会出现某个客户端偷偷跑飞的情况;第三,兼容性好,TaoToken 提供的是 OpenAI 兼容和 Anthropic 兼容的接口,Cline、Claude Code、CC Switch 这些工具基本都能直接对接。
前置准备清单:
- 一个可访问的 Prometheus 实例,记下它的地址,比如
http://prometheus.internal:9090。如果开了基础认证,准备好用户名密码;如果是 Bearer Token 方式,准备好 Token。 - Node.js 18+ 环境,因为 Prometheus MCP Server 通常以 npm 包或本地构建的方式运行。
- 一个支持 MCP 的 AI 客户端。Cline(VS Code 插件)、Claude Code、CC Switch 都可以。
- TaoToken 的 API Key。到控制台的 API Keys 页面创建一个,建议按用途命名,比如
prometheus-mcp,方便后续排查。
注意:Prometheus 的地址和凭据属于敏感信息,不要写进会提交到 Git 的配置文件里。后面我会给出用环境变量注入的写法。
TaoToken 的接入文档在 https://taotoken.net/api ,里面有各语言的调用示例和兼容性说明,配置前扫一眼能省不少事。如果你还没创建 Key,先去 https://taotoken.net/api-keys 建一个。
3. 可复制配置:config.toml 与 settings.json 骨架
这一节是全文的核心,给出两份可以直接抄的配置。先说明一下,不同 MCP Server 实现读取的配置文件名可能不同,常见的是config.toml或mcp.json,而 AI 客户端侧(Cline/CC Switch)用的是settings.json或类似的 JSON 配置。下面给的是通用骨架,你按自己用的实现微调字段名即可。
3.1 Prometheus MCP Server 的 config.toml
这份配置管的是 MCP Server 怎么连 Prometheus,以及暴露哪些工具。
# config.toml - Prometheus MCP Server 配置骨架 [server] name = "prometheus-mcp" version = "1.0.0" # 使用 stdio 传输,AI 客户端会以子进程方式拉起本 Server transport = "stdio" [prometheus] # Prometheus 实例地址,建议通过环境变量注入 url = "${PROMETHEUS_URL}" # 基础认证(二选一,按你的实例配置) username = "${PROMETHEUS_USERNAME}" password = "${PROMETHEUS_PASSWORD}" # 或者 Bearer Token 方式 # bearer_token = "${PROMETHEUS_TOKEN}" # 查询超时,单位秒 timeout = 30 # 是否跳过 TLS 校验(仅内网自签证书场景临时使用) insecure_skip_verify = false [tools] # 开启哪些工具能力 enable_query = true # 即时查询 / 范围查询 enable_alert = true # 告警规则与当前告警 enable_metric_list = true # 指标名称枚举 enable_analyze = true # 关联分析辅助 [limits] # 单次返回的最大时间序列数,防止 AI 上下文被撑爆 max_series = 50 # 范围查询最大跨度,单位小时 max_range_hours = 24 # 单条 PromQL 最大长度 max_query_length = 2000 [logging] level = "info" # 日志输出到 stderr,避免污染 stdio 通道 output = "stderr"几个字段值得展开说。max_series这个限制很关键,Prometheus 一条查询返回上千条序列是常事,如果全塞给模型,上下文直接爆掉,而且费用也会飙升。设成 50 是个比较稳的起点,配合后面会讲的聚合查询习惯,效果更好。max_range_hours限制范围查询跨度,避免 AI 一次性拉一周的数据做分析——那种场景应该走 recording rule 或者降采样,而不是让模型硬啃原始点。
3.2 AI 客户端侧的 settings.json
这份配置管的是 AI 客户端怎么找到 MCP Server,以及模型走哪个通道。以 Cline 的 MCP 配置为例:
{ "mcpServers": { "prometheus": { "command": "npx", "args": [ "-y", "@your-scope/prometheus-mcp-server@latest", "--config", "/absolute/path/to/config.toml" ], "env": { "PROMETHEUS_URL": "http://prometheus.internal:9090", "PROMETHEUS_USERNAME": "mcp_reader", "PROMETHEUS_PASSWORD": "your-password-here" }, "disabled": false, "autoApprove": [ "prometheus_query", "prometheus_metric_list" ] } } }autoApprove里放的是只读类工具,查询和指标枚举自动放行,减少每次都要点确认的打断感。但告警相关的工具建议保留人工确认,因为有些实现里告警工具可能带静默(silence)操作,误触会影响真实告警。
3.3 CC Switch 的模型通道配置
CC Switch 用来在多个模型供应商之间切换,把 TaoToken 配成一个 provider 即可。下面是配置片段:
{ "providers": [ { "name": "taotoken", "type": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKey": "${TAOTOKEN_API_KEY}", "models": [ "claude-sonnet-4-5", "gpt-4o" ], "defaultModel": "claude-sonnet-4-5" } ], "activeProvider": "taotoken" }如果你用的是 Claude Code,它走的是 Anthropic 兼容协议,配置方式略有不同,把 baseUrl 指向 TaoToken 的 Anthropic 兼容端点即可,具体字段参考接入文档。Cline 则是在设置里选 OpenAI Compatible,Base URL 填https://taotoken.net/api,API Key 填你的 TaoToken Key,模型名按控制台里可用的填。
提示:模型名不要凭记忆写,去控制台或模型对话页面确认当前可用的标识符,写错了会直接报 404。
4. 验证请求:跑通一次告警查询与指标解读
配置写完不算完,得跑一次真实请求确认链路通了。这一节演示一个完整的验证动作:让 AI 查当前告警,并对其中一条做指标解读。
4.1 第一步:确认 MCP Server 被拉起
在 Cline 的 MCP 面板里,应该能看到prometheus这个 Server 状态是绿色的。如果没起来,先看客户端日志里有没有子进程启动失败的报错。常见原因是npx找不到包,或者 config.toml 路径写错。
你也可以手动验证 MCP Server 本身能不能连上 Prometheus:
# 直接调 Prometheus API 确认连通性 curl -s "http://prometheus.internal:9090/api/v1/query?query=up" \ -u "mcp_reader:your-password-here" | head -c 500返回里能看到"status":"success"和up指标的值,说明 Prometheus 侧没问题。
4.2 第二步:让 AI 查当前告警
在对话框里输入:
帮我查一下当前所有 firing 状态的告警,按严重程度分组AI 会调用 MCP Server 的告警工具,底层打的是 Prometheus 的/api/v1/alerts接口。返回结果类似:
当前有 3 条 firing 告警: [critical] HighRequestLatency 实例: order-service 摘要: P95 延迟超过 1s,当前值 2.3s 持续时间: 12m [warning] HighMemoryUsage 实例: payment-service 摘要: 内存使用率超过 85%,当前值 91% 持续时间: 5m [warning] DiskSpaceLow 实例: log-collector 摘要: 磁盘剩余空间低于 10% 持续时间: 30m这一步验证的是「告警读取」链路。如果 AI 说它没有工具可用,说明 MCP Server 没连上或者工具没注册成功,回到 4.1 排查。
4.3 第三步:指标解读
接着追问:
针对 order-service 的 HighRequestLatency,帮我查一下过去 30 分钟的 P95 延迟和 QPS 趋势,分析可能原因AI 会调用范围查询工具,执行类似这样的 PromQL:
# P95 延迟 histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket{service="order-service"}[5m])) by (le) ) # QPS sum(rate(http_requests_total{service="order-service"}[5m]))返回的解读大致是:
过去 30 分钟 order-service 指标分析: P95 延迟: 基线约 180ms,从 14:12 开始爬升,14:25 达到峰值 2.3s,之后维持高位 QPS: 稳定在 1200 左右,没有明显突增 关联观察: 延迟上升但 QPS 平稳,说明不是流量突增导致。 建议排查下游依赖(数据库慢查询、缓存命中率下降) 以及该时段是否有发布或配置变更。到这里,一次完整的「告警查询 → 指标解读」就验证完了。整个过程 AI 没有直接接触 Prometheus 凭据,所有查询都经过 MCP Server 的权限和限额约束。
4.4 验证模型通道确实走了 TaoToken
想确认模型请求确实经过 TaoToken,去控制台的用量页面看请求记录,应该能看到刚才这几次对话的调用。如果用量没变化,说明客户端还在走别的通道,检查 CC Switch 的 activeProvider 或者 Cline 的模型设置。
5. 本篇常见错排查
配置过程中踩坑是常态,这一节把高频问题集中列一下。
5.1 MCP Server 启动失败,客户端显示红色
先看错误信息。如果是Cannot find module,多半是包名写错或者 npx 缓存问题,试试先手动跑一次npx -y @your-scope/prometheus-mcp-server@latest --help。如果是ENOENT config.toml,检查 args 里的路径是不是绝对路径——相对路径在不同工作目录下会失效。
5.2 工具列表为空
MCP Server 起来了,但 AI 说没有可用工具。这通常是 config.toml 里[tools]段没配对,或者 Server 版本和配置字段不匹配。把日志级别调到 debug,看启动时注册了哪些工具。
5.3 查询返回 401/403
Prometheus 侧认证失败。检查环境变量有没有正确注入——很多客户端不会自动加载.env文件,需要在 settings.json 的env段显式写。另外注意用户名密码里如果有特殊字符,JSON 里要转义。
5.4 模型报 404 或 model not found
模型名写错了。去 TaoToken 控制台确认可用模型标识符,别用记忆里的名字。不同兼容协议下模型名可能不同,OpenAI 兼容和 Anthropic 兼容的写法要区分。
5.5 上下文超限,AI 回复被截断
查询返回的序列太多。回到 config.toml 把max_series调小,同时在提示词里引导 AI 用聚合查询,比如加sum by (instance)而不是拉原始序列。范围查询也尽量控制在小时级。
5.6 告警工具误操作
如果发现 AI 自动静默了告警,检查autoApprove列表里是不是把告警写操作也放进去了。只读工具才适合自动放行,写操作必须人工确认。
5.7 延迟高、响应慢
两个方向排查。一是 Prometheus 查询本身慢,用curl直接打 API 测一下耗时;二是模型侧慢,去 TaoToken 用量页面看响应时间分布。如果是范围查询跨度过大,调小max_range_hours。
6. 让 AI 稳定承担监控问答的下一步
配置跑通只是起点,真正让 AI 在运维场景里稳定发挥作用,还需要在提示词和工具设计上做点功课。我自己的做法是给 MCP Server 配一份「系统提示」,把团队的排查习惯写进去,比如「查延迟先看 QPS 再看下游依赖」「告警分组优先按 service 维度」,这样 AI 的输出会更贴近实际工作流,而不是泛泛而谈。
另一个建议是把常用的排查路径固化成工具。比如「服务健康度分析」这种组合查询,与其每次让 AI 现拼 PromQL,不如在 MCP Server 里封装成一个工具,输入服务名和时长,内部跑一组标准查询再返回结构化结果。这样既稳定又省 token。
如果你打算长期在编码和 Agent 场景里用这套组合,可以看看 Coding Plan,它在长会话和工具调用密集的场景下额度更划算。日常验证模型能力、调试提示词,用模型对话页面就够了。接入过程中遇到报错,优先翻接入文档,大部分兼容性问题那里都有说明。
最后提醒一句:MCP Server 给 AI 开的是 Prometheus 的读权限,别图省事把管理员凭据塞进去。创建一个只读账号,配合 config.toml 里的限额,才是能长期跑下去的姿势。