Grafana MCP
概览
作者提供的说明(英文原文)
Read-only project-level Grafana MCP: Loki logs, metrics, traces, alerts, test/prod switching
PopNx MCP 的三大支柱
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
- 用户评价i暂无评价评价功能将在后续阶段与账户功能一起开放
- 我们的基础检查i2 项中通过 2 项依据公开信息检查;尚未扫描代码
- 使用情况i非常新↓ 79/周 · ★ 0
它能帮你做什么
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
- 连接方式: 在你的电脑上运行
- 传输方式: stdio
- 分类: 开发者工具
- 你需要填写:GRAFANA_TEST_PASSWORD, GRAFANA_PROD_PASSWORD
安装
选择你使用的 AI 应用,然后复制设置。
安装之前
- 基础检查:2 项中通过 2 项
- 在你的电脑上运行,拥有你的用户账户的权限(文件、网络、应用)。
- 需要你自己填写:
GRAFANA_TEST_URL,GRAFANA_TEST_USER,GRAFANA_TEST_PASSWORD,GRAFANA_PROD_URL,GRAFANA_PROD_USER,GRAFANA_PROD_PASSWORD,GRAFANA_ENV,GRAFANA_APP
标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"grafana": {
"command": "npx",
"args": [
"-y",
"grafana-mcp"
],
"env": {
"GRAFANA_TEST_URL": "your-value",
"GRAFANA_TEST_USER": "your-value",
"GRAFANA_TEST_PASSWORD": "your-value",
"GRAFANA_PROD_URL": "your-value",
"GRAFANA_PROD_USER": "your-value",
"GRAFANA_PROD_PASSWORD": "your-value",
"GRAFANA_ENV": "your-value",
"GRAFANA_APP": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add grafana --env GRAFANA_TEST_URL=your-value --env GRAFANA_TEST_USER=your-value --env GRAFANA_TEST_PASSWORD=your-value --env GRAFANA_PROD_URL=your-value --env GRAFANA_PROD_USER=your-value --env GRAFANA_PROD_PASSWORD=your-value --env GRAFANA_ENV=your-value --env GRAFANA_APP=your-value -- npx -y grafana-mcp运行前请先填写空着的值。
或者自己复制设置
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"grafana": {
"command": "npx",
"args": [
"-y",
"grafana-mcp"
],
"env": {
"GRAFANA_TEST_URL": "your-value",
"GRAFANA_TEST_USER": "your-value",
"GRAFANA_TEST_PASSWORD": "your-value",
"GRAFANA_PROD_URL": "your-value",
"GRAFANA_PROD_USER": "your-value",
"GRAFANA_PROD_PASSWORD": "your-value",
"GRAFANA_ENV": "your-value",
"GRAFANA_APP": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
或者自己复制设置
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"grafana": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"grafana-mcp"
],
"env": {
"GRAFANA_TEST_URL": "your-value",
"GRAFANA_TEST_USER": "your-value",
"GRAFANA_TEST_PASSWORD": "your-value",
"GRAFANA_PROD_URL": "your-value",
"GRAFANA_PROD_USER": "your-value",
"GRAFANA_PROD_PASSWORD": "your-value",
"GRAFANA_ENV": "your-value",
"GRAFANA_APP": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
需要你填写的值
GRAFANA_TEST_URLenvGrafana base URL of the test environment, e.g. https://grafana.example.comGRAFANA_TEST_USERenvGrafana username for the test environment (prefer a dedicated Viewer-role account)- Grafana password for the test environment
GRAFANA_PROD_URLenvGrafana base URL of the production environmentGRAFANA_PROD_USERenvGrafana username for the production environment- Grafana password for the production environment
GRAFANA_ENVenvDefault environment for this project (test by default)GRAFANA_APPenvApp label value used to scope Loki queries for this project
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
哪些应用可以使用它
依据这个服务器的连接方式和各应用自己的文档,检查于 2026年11月10日。
在你的电脑上运行,适用于
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
它能做什么
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
基础检查i
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月11日
- ✓ 通过
作者与仓库一致
注册名称已通过 GitHub 账户 itzhouq 验证,该账户拥有此仓库
- ✓ 通过
仍在维护
代码最后更新于32天前
- … 尚未检查
有许可证
我们还没有从 GitHub 读取这个仓库
- – 不适用
端点有响应
它在你的电脑上运行,没有互联网端点
- – 不适用
使用 OAuth 登录
在你的电脑上运行,改用本地设置
- … 尚未检查
工具描述中没有隐藏指令
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与“开发者工具”中的其他服务器比较i
- 星标数多于此分类中其他 5731 个服务器的 0%
- 发布到注册中心的时间比此分类中其他 5731 个服务器的 48% 更新
- 基础检查结果等于或优于此分类中其他 5731 个服务器的 100%
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
常见问题
Grafana MCP 安全吗?
它在 2 项适用的基础检查中通过了 2 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
它需要哪些密钥或代码?
你需要填写:GRAFANA_TEST_PASSWORD, GRAFANA_PROD_PASSWORD
它在我的电脑上运行还是在云端?
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
它还在维护吗?
GitHub 仓库最后更新于32天前,最新版本(0.1.3)于34天前进入注册中心。
哪些应用可以使用它?
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
有什么可以替代它?
同一分类中有:REA, Netdata, Front-End Checklist
替代选择
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Netdata
Real-time infrastructure monitoring with metrics, logs, alerts, and ML-based anomaly detection.
Front-End Checklist
Review frontend code and live pages against 386 quality-gated web development rules.
作者的 README
打开 README
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
grafana-mcp
Project-level Grafana MCP server — give your AI coding agent read-only access to Loki logs, Prometheus metrics, Tempo traces and alerts, with per-project context and test/prod environment switching. 零依赖单文件 TypeScript,bun 直接运行。
AI 编码 Agent(Claude Code / Cursor / …)
│ MCP (stdio) ▼ grafana-mcp ──读──▶ .mcp.json env / .grafana.json / ~/.zshrc(凭据与项目上下文) │ HTTP(只读查询 API) ▼ Grafana ──▶ Loki(日志)/ Prometheus(指标)/ Tempo(链路)/ Alerts(告警)
它解决什么问题
日常迭代业务系统时,测试阶段要快速定位 QA 反馈的问题,线上要快速排查功能 bug 与性能瓶颈——这些证据都在 Grafana 体系里(Loki 日志、Prometheus 指标、Tempo 链路)。让 agent 在写代码、修 bug 的同时能直接查到这些上下文,问题定位的效率和准确性会明显提升。但直接用通用 MCP 封装 Grafana API 会遇到三个实际障碍:
| 痛点 | 本实现的解法 |
|---|---|
| 每个项目会话都要口头告诉 agent "我们的应用在 Grafana 里叫什么",容易跑偏 | 项目根放一个 .grafana.json 或在 .mcp.json env 中配置(app、namespace、默认环境),agent 调 project_context 一次对齐方向 |
| test / prod 双环境凭据区分,而 MCP server 由客户端 spawn,是非交互 shell,不会 source `.zshrc`,环境变量读不到 | 三选一:① .mcp.json env 直接传 GRAFANA_{ENV}_*(零全局依赖)② server 启动时解析 ~/.zshrc / ~/.zshenv 文件文本 ③ 全局配置文件 |
| 多数据源实例上"按类型取第一个"容易选错 | 优先使用显式配置的数据源 UID,支持按环境指定 |
声明
- 非官方项目:本仓库与 Grafana Labs 无隶属关系;Grafana、Loki、Prometheus、Tempo 是各自所有方的商标。
- 免责:软件按"现状"提供。使用者需自行确保对目标 Grafana 实例的访问已获授权,并遵守所在组织的数据安全与审计规定;日志与指标输出可能包含业务敏感信息,分享查询结果前请自行判断合规边界。作者不对违规使用及其后果负责。
- 只读边界:全部 10 个工具均为查询类,不含任何写操作。建议为 agent 配置 Viewer 角色的专用账号(最小权限),不要复用管理员凭据。
快速开始
前提:本机已安装 bun(curl -fsSL https://bun.sh/install | bash)。项目零 npm 依赖,无需 npm install。
方式一:完全项目级配置(推荐 — 零全局依赖)
所有信息(test/prod 双环境地址、凭据、数据源 UID、项目 app 名称)全部写在项目 .mcp.json 中,不依赖 ~/.zshrc,换台机器只需复制 .mcp.json:
{
"mcpServers": { "grafana": { "command": "bunx", "args": ["grafana-mcp"], "env": { "GRAFANA_ENV": "test", "GRAFANA_APP": "my-app", "GRAFANA_NAMESPACE": "my-namespace",
"GRAFANA_TEST_URL": "https://grafana.test.example.com", "GRAFANA_TEST_USER": "viewer", "GRAFANA_TEST_PASSWORD": "********", "GRAFANA_TEST_LOKI_DATASOURCE": "loki-uid-here", "GRAFANA_TEST_PROMETHEUS_DATASOURCE": "prom-uid-here",
"GRAFANA_PROD_URL": "https://grafana.prod.example.com", "GRAFANA_PROD_USER": "viewer", "GRAFANA_PROD_PASSWORD": "********", "GRAFANA_PROD_LOKI_DATASOURCE": "loki-uid-prod", "GRAFANA_PROD_PROMETHEUS_DATASOURCE": "prom-uid-prod" } } } }
配置好后:
project_context会自动显示当前环境、可用环境列表、项目 app 等信息switch_environment可在 test/prod 之间切换(仅影响当前会话)loki_query会自动注入app="my-app"标签(传injectApp=false关闭)
⚠️
.mcp.json含明文凭据,务必加入.gitignore。
方式二:zshrc 全局凭据 + 项目级上下文
适合多项目共享同一套 Grafana 凭据的场景。凭据配在 ~/.zshrc 中(一次性),每个项目只配项目上下文:
项目 `.mcp.json`(只配项目上下文,不含凭据):
{
"mcpServers": { "grafana": { "command": "bunx", "args": ["grafana-mcp"], "env": { "GRAFANA_ENV": "test", "GRAFANA_APP": "my-app" } } } }
或项目 `.grafana.json`(承载更多信息,对 agent 可见可解释):
{
"defaultEnv": "test", "app": "my-app", "appLabel": "app", "namespace": "my-namespace", "notes": "本项目日志标签 app=my-app;查指标时 pod 前缀为 my-app-" }
| 字段 | 说明 |
|---|---|
defaultEnv | 默认环境(test / prod / 自定义) |
app | 应用在 Loki 中的 app 标签值,loki_query 会自动注入到查询 selector |
appLabel | app 标签名,默认 app |
namespace | 默认 namespace,供 agent 参考 |
notes | 自由文本备注,project_context 会原样带给 agent |
environments.{env}.url | 该环境的 Grafana 地址(覆盖 zshrc 中的同名变量) |
environments.{env}.user | 该环境的用户名 |
environments.{env}.password | 该环境的密码 |
environments.{env}.app | 该环境的 app 标签值(同一项目 test/prod 命名不同时用,优先于顶层 app) |
environments.{env}.appLabel | 该环境的 app 标签名,默认 app |
environments.{env}.datasources | 按环境指定数据源 UID(loki/prometheus/tempo) |
⚠️
.grafana.json的notes和environments可能包含敏感信息——建议加入.gitignore。
凭据从哪来(三种来源,按优先级合并)
进程环境变量(.mcp.json env:GRAFANA_{ENV}_URL 等按环境,或 GRAFANA_URL 直连)
→ 项目 .grafana.json 的 environments.{env} 字段 → 全局配置 ~/.config/grafana-mcp/config.json(可选,适合无 .zshrc 的机器) → ~/.zshrc + ~/.zshenv 文本解析(适合全机统一配置)
不依赖 shell 环境:MCP server 由客户端 spawn,是非交互、非登录 shell,不会 source rc 文件。本实现直接解析 rc 文件文本或从进程环境变量读取,这是特性而非 workaround。
克隆使用
偏好克隆使用的话:
git clone https://github.com/itzhouq/grafana-mcp.git && cd grafana-mcp
bun run index.ts # stdio JSON-RPC,接入任意 MCP 客户端
.mcp.json 中对应写 "command": "bun", "args": ["run", "/path/to/grafana-mcp/index.ts"]。
工具列表
| 工具 | 说明 |
|---|---|
project_context | 调查前必调:激活环境、可用环境、项目 App/namespace、数据源 UID、配置来源(密码脱敏输出) |
switch_environment | 切换 test/prod(仅影响当前会话),返回新环境上下文 |
loki_query | LogQL 日志查询;项目配置了 app 时自动注入 selector(injectApp=false 可关) |
loki_labels | 列 Loki 标签名,或查某标签全部取值(如确认 app 名称在当前环境是否存在) |
prom_query | PromQL 区间查询 |
prom_instant | PromQL 即时查询 |
tempo_search | TraceQL 链路搜索 |
tempo_trace | 按 traceID 查看完整链路 |
alerts | 当前正在告警的规则 |
datasources | 列出全部数据源 |
时间参数(loki/prom/tempo 通用):range(默认 1h,如 30m/6h/24h)、start/end(ISO 8601 绝对时间)、limit。
与官方 mcp-grafana 的差异
Grafana 官方也提供 MCP server(Go 实现,面向全局单实例的完整工具集)。两者定位不同,可并存:
| grafana-mcp(本仓库) | 官方 mcp-grafana | |
|---|---|---|
| 使用粒度 | 项目级:项目根 .grafana.json 声明上下文,project_context 一次对齐 | 全局实例,项目信息需每次口头提供 |
| 多环境 | test/prod 双环境一等公民,switch_environment 一键切换 | 面向单一实例配置 |
| 凭据来源 | .mcp.json env(零全局依赖)/ ~/.zshrc 文本解析 / 全局配置文件(三选一,可混用) | 环境变量 |
| 形态 | 零依赖单文件 TypeScript,bun 直接运行 | Go 二进制 / Docker |
选型建议:要全量 Grafana 管理能力用官方;要"每个业务项目开箱即用的日志/指标排查上下文 + 双环境",用本仓库。
安全提示
- Grafana 账号建议使用 Viewer 角色的专用账号,不要复用管理员凭据。
- 凭据明文存于
~/.zshrc(或进程环境),MCP server 仅在本机内存中使用,不落盘、不回显(project_context输出对密码脱敏)。 - 如需集中管理,可把连接信息放到
~/.config/grafana-mcp/config.json并chmod 600,~/.zshrc中的同名变量会被其覆盖。 - 支持 1Password 回退(可选):设置
GRAFANA_OP_VAULT/GRAFANA_OP_ITEM后,无账密时通过opCLI 取凭据。
FAQ
为什么 agent 读不到 `.zshrc` 里的环境变量? MCP server 由客户端 spawn,是非交互、非登录 shell,不会 source rc 文件。本实现提供三种解法:① 在 .mcp.json env 中直接配 GRAFANA_{ENV}_*(推荐)② server 解析 rc 文件文本 ③ 用全局配置文件。
不想装 bun? 当前运行时依赖 bun(单文件 TS 直跑是刻意的设计取舍)。Node 兼容的编译产物在 Roadmap 中,欢迎 issue 催更。
查询结果太长被截断? 超过 6 万字符自动截断并提示缩小范围;命中 limit 上限时也会明确提示可能还有更多。建议总是带 range 与 limit。
数据源选错了? 在 GRAFANA_{ENV}_LOKI_DATASOURCE 等变量或 .grafana.json 的 environments.{env}.datasources 中显式指定 UID。
本地开发
bun run smoke # MCP 协议握手 + 工具清单 + project_context;本机配好凭据后自动追加真实查询
bun run test # 冒烟 + 集成测试(项目上下文发现、app 注入、prod 切换;需要真实凭据,CI 跳过)
CI 只运行无凭据的协议级冒烟测试与敏感信息扫描;集成测试需要真实 Grafana 环境,请在本机运行。
Roadmap
- Node 兼容编译产物(降低 bun 前提)
- 仪表盘面板数据读取
- 更多环境变量发现来源(direnv 等)
关于作者
itzhouq — 个人网站 itzhouq.cn,在那里持续 build in public。其他开源工具:
- archery-mcp — 让 AI 只读接入 Archery SQL 审计平台的 MCP server(生产表结构查询 + 上线 SQL 预检)
欢迎 issue / PR;安全漏洞请走 SECURITY.md 的私密渠道,不要开 public issue。
mcp-name: io.github.itzhouq/grafana-mcp