Grafana MCP服务器
一种用于 Grafana 的模型上下文协议(MCP)服务器。 这为您提供了对 Grafana 实例及其周边生态系统的访问。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"grafana": {
"args": [
"-debug"
],
"command": "mcp-grafana",
"env": {
"GRAFANA_API_KEY": "\u003cyour service account token\u003e",
"GRAFANA_URL": "http://localhost:3000"
}
}
}
}
该服务需要配置环境变量:GRAFANA_API_KEY、GRAFANA_URL
服务介绍
Grafana MCP 服务器
一个用于 Grafana 的 Model Context Protocol (MCP) 服务器。
它提供了对您的 Grafana 实例及其周围生态系统的访问。
功能
- 搜索仪表盘
- 通过 UID 获取仪表盘
- 列出并获取数据源信息
- 查询数据源
- Prometheus
- Loki
- 日志查询
- 指标查询
- Tempo
- Pyroscope
- 查询 Prometheus 元数据
- 指标元数据
- 指标名称
- 标签名称
- 标签值
- 查询 Loki 元数据
- 标签名称
- 标签值
- 统计信息
- 搜索、创建、更新和关闭事件
- 启动 Sift 调查并查看结果
- 告警
- 列出并获取告警规则信息
- 获取告警规则状态(触发/正常/错误等)
- 创建和修改告警规则
- 列出联系点
- 创建和修改联系点
- 访问 Grafana OnCall 功能
- 列出和管理排班
- 获取轮班详情
- 获取当前待命用户
- 列出团队和用户
- 列出告警组
工具列表是可配置的,因此您可以选择要向 MCP 客户端提供的工具。
如果您不使用某些功能,或者不想占用太多上下文窗口空间,这将非常有用。
要禁用某一类工具,在启动服务器时使用 --disable-<category> 标志。例如,要禁用
OnCall 工具,请使用 --disable-oncall。
工具
| Tool | Category | Description |
|---|---|---|
search_dashboards |
Search | Search for dashboards |
get_dashboard_by_uid |
Dashboard | Get a dashboard by uid |
list_datasources |
Datasources | List datasources |
get_datasource_by_uid |
Datasources | Get a datasource by uid |
get_datasource_by_name |
Datasources | Get a datasource by name |
query_prometheus |
Prometheus | Execute a query against a Prometheus datasource |
list_prometheus_metric_metadata |
Prometheus | List metric metadata |
list_prometheus_metric_names |
Prometheus | List available metric names |
list_prometheus_label_names |
Prometheus | List label names matching a selector |
list_prometheus_label_values |
Prometheus | List values for a specific label |
list_incidents |
Incident | List incidents in Grafana Incident |
create_incident |
Incident | Create an incident in Grafana Incident |
add_activity_to_incident |
Incident | Add an activity item to an incident in Grafana Incident |
resolve_incident |
Incident | Resolve an incident in Grafana Incident |
query_loki_logs |
Loki | Query and retrieve logs using LogQL (either log or metric queries) |
list_loki_label_names |
Loki | List all available label names in logs |
list_loki_label_values |
Loki | List values for a specific log label |
query_loki_stats |
Loki | Get statistics about log streams |
list_alert_rules |
Alerting | List alert rules |
get_alert_rule_by_uid |
Alerting | Get alert rule by UID |
list_oncall_schedules |
OnCall | List schedules from Grafana OnCall |
get_oncall_shift |
OnCall | Get details for a specific OnCall shift |
get_current_oncall_users |
OnCall | Get users currently on-call for a specific schedule |
list_oncall_teams |
OnCall | List teams from Grafana OnCall |
list_oncall_users |
OnCall | List users from Grafana OnCall |
使用方法
-
在 Grafana 中创建一个具有足够权限的服务账号,以便使用你想要使用的工具,生成服务账号令牌,并将其复制到剪贴板以供配置文件使用。详细步骤请参阅 [Grafana 文档][service-account]。
-
从 发布页面 下载最新版本的
mcp-grafana并将其放置在你的$PATH中。如果你已安装了 Go 工具链,也可以通过源码构建并安装它,使用
GOBIN环境变量指定二进制文件应安装的目录。该目录也应包含在你的PATH中。GOBIN="$HOME/go/bin" go install github.com/grafana/mcp-grafana/cmd/mcp-grafana@latest -
将服务器配置添加到客户端配置文件中。例如,对于 Claude Desktop:
{ "mcpServers": { "grafana": { "command": "mcp-grafana", "args": [], "env": { "GRAFANA_URL": "http://localhost:3000", "GRAFANA_API_KEY": "<your service account token>" } } } }
注意:如果在 Claude Desktop 中看到
Error: spawn mcp-grafana ENOENT错误,你需要指定mcp-grafana的完整路径。
调试模式
你可以通过向命令中添加 -debug 标志来启用 Grafana 传输的调试模式。这将提供 MCP 服务器与 Grafana API 之间 HTTP 请求和响应的详细日志记录,有助于故障排除。
要在 Claude Desktop 配置中使用调试模式,请按如下方式更新你的配置:
{
"mcpServers": {
"grafana": {
"command": "mcp-grafana",
"args": ["-debug"],
"env": {
"GRAFANA_URL": "http://localhost:3000",
"GRAFANA_API_KEY": "<your service account token>"
}
}
}
}
开发
欢迎贡献!如果你有任何建议或改进,请打开一个问题或提交一个拉取请求。
此项目是用 Go 编写的。请按照适用于你平台的说明安装 Go。
要运行服务器,请使用:
make run
你也可以使用 Docker 内的 SSE 传输运行服务器。要构建镜像,请使用
make build-image
要运行镜像,请使用:
docker run -it --rm -p 8000:8000 mcp-grafana:latest
测试
有三种类型的测试可用:
- 单元测试(无需外部依赖):
make test-unit
你也可以运行单元测试:
make test
- 集成测试(需要 docker 容器正在运行):
make test-integration
- 云测试(需要云 Grafana 实例和凭据):
make test-cloud
注意:云测试在 CI 中自动配置。对于本地开发,你需要设置自己的 Grafana Cloud 实例和凭据。
更全面的集成测试需要在本地端口 3000 上运行一个 Grafana 实例;你可以使用 Docker Compose 启动一个:
docker-compose up -d
集成测试可以这样运行:
make test-all
如果你添加了更多工具,请为它们添加集成测试。现有的测试应该是一个很好的起点。
代码检查
要进行代码检查,请运行:
make lint
这包括一个自定义的 linter,用于检查 jsonschema 结构标签中未转义的逗号。description 字段中的逗号必须用 \\, 转义,以防止无声截断。你可以单独运行这个 linter:
make lint-jsonschema
有关更多详细信息,请参阅 JSONSchema Linter 文档。
许可证
本项目采用 Apache License, Version 2.0 许可。