Grafana OSS MCP 用 uvx mcp-grafana,token 走 env_vars 不要写进 env
CLI:codex mcp add grafana -- uvx mcp-grafana。GRAFANA_URL 可以写进 env 表;GRAFANA_SERVICE_ACCOUNT_TOKEN 用 env_vars 转发。厂商 Codex 页的 startup_timeout_ms 和把 token 写进 env 不要抄。
开源 mcp-grafana 是 stdio,本机跑、连你的 Grafana(自托管或 Grafana Cloud 实例 URL 都行)。官方 Codex 页假设二进制已在 PATH;没有的话用 uvx:
codex mcp add grafana -- uvx mcp-grafana
[mcp_servers.grafana]
command = "uvx"
args = ["mcp-grafana"]
env_vars = ["GRAFANA_SERVICE_ACCOUNT_TOKEN"]
startup_timeout_sec = 60
enabled = true
[mcp_servers.grafana.env]
GRAFANA_URL = "http://localhost:3000"
连 Grafana Cloud 实例时,把 GRAFANA_URL 换成 https://myinstance.grafana.net。这仍是本机 stdio + 服务账号,不是托管的 mcp.grafana.com。
env 表是字面量。厂商 Codex 页把 GRAFANA_SERVICE_ACCOUNT_TOKEN 写进 env,等于把密钥提交进 config。codex mcp add --env GRAFANA_SERVICE_ACCOUNT_TOKEN=... 同样会落成字面量。密钥用 env_vars 从启动 Codex 的进程转发。过期的 GRAFANA_API_KEY 不要再用。
只读会话加 --disable-write(会拿掉写入工具,也默认拿掉会改数据的原始 SQL 查询工具):
[mcp_servers.grafana]
command = "uvx"
args = ["mcp-grafana", "--disable-write"]
env_vars = ["GRAFANA_SERVICE_ACCOUNT_TOKEN"]
enabled = true
[mcp_servers.grafana.env]
GRAFANA_URL = "http://localhost:3000"
不要做这些:
- 不要抄
startup_timeout_ms/tool_timeout_ms。现行键是startup_timeout_sec和tool_timeout_sec。 - 不要把 token 写进
args,也不要抄mcpServersJSON。 - 不要给它
required = true挂全局。冷uvx超时会让 Codex 起不来。 - 不要把用户名密码当成推荐路径。服务账号 token 才是现行鉴权。
- 不要和托管 Cloud MCP 写成同一张表:有
command就不能再写url。
网页 Cloud 不读这份 config.toml。改完新开会话。用 codex mcp get grafana 核对 command 是 uvx。