MCP Grafana自托管服务器
自托管 模型上下文协议 Grafana的(MCP)服务器,通过环境变量配置,专为Docker部署而设计。
可用工具
| 类别 |
工具 |
描述 |
| 搜索 |
search_dashboards |
按查询字符串搜索仪表板 |
|
search_folders |
按查询字符串搜索文件夹 |
| 数据来源 |
list_datasources |
列出可用数据源,可选择按类型筛选 |
|
get_datasource_by_uid |
按UID获取数据源详细信息 |
|
get_datasource_by_name |
按名称获取数据源详细信息 |
| 仪表盘 |
get_dashboard_by_uid |
按UID获取完整的仪表板JSON |
|
get_dashboard_summary |
获取紧凑型仪表板概览(推荐) |
|
get_dashboard_property |
通过JSONPath提取特定数据 |
|
get_dashboard_panel_queries |
从仪表板获取所有面板查询 |
| 普罗米修斯 |
query_prometheus |
执行PromQL查询(即时或范围) |
|
list_prometheus_metric_names |
使用正则表达式过滤列出度量名称 |
|
list_prometheus_metric_metadata |
获取度量元数据 |
|
list_prometheus_label_names |
列出标签名称 |
|
list_prometheus_label_values |
获取特定标签的值 |
| 洛基 |
query_loki_logs |
执行LogQL查询 |
|
query_loki_stats |
获取选择器的流统计信息 |
|
list_loki_label_names |
列出可用标签名称 |
|
list_loki_label_values |
获取特定标签的值 |
| 节奏 |
search_tempo_traces |
按服务、跨度、标签、持续时间搜索跟踪 |
|
get_tempo_trace |
通过跟踪ID获取完整跟踪 |
|
query_tempo_traceql |
执行TraceQL查询 |
|
list_tempo_tag_names |
列出可用标签名称 |
|
list_tempo_tag_values |
获取特定标记的值 |
| 告警 |
list_alert_rules |
列出带有状态和标签的警报规则 |
|
get_alert_rule_by_uid |
获取完整的警报规则配置 |
|
list_contact_points |
列出通知联系人 |
|
list_alert_groups |
列出IRM警报组 |
|
get_alert_group |
获取警报组详细信息 |
| 事件 |
list_incidents |
列出事件(活动、已解决、演习) |
|
get_incident |
按ID获取事件详细信息 |
| 随时待命 |
list_oncall_schedules |
列出OnCall计划 |
|
get_oncall_shift |
获取班次详细信息 |
|
get_current_oncall_users |
获取当前处于通话状态的用户 |
|
list_oncall_teams |
列出OnCall团队 |
|
list_oncall_users |
列出OnCall用户 |
| 筛选 |
list_sift_investigations |
列出筛选调查 |
|
get_sift_investigation |
通过UUID获取调查 |
|
get_sift_analysis |
从调查中获得具体分析 |
| 管理员 |
list_teams |
搜索团队 |
|
list_users_by_org |
列出当前组织中的用户 |
| 导航 |
generate_deeplink |
为仪表板、面板、浏览生成URL |
| 注释 |
get_annotations |
使用过滤器获取注释 |
|
get_annotation_tags |
获取注释标签 |
需求
- Grafana 9.0或更高版本 实现完整功能
- Docker(推荐)或Go 1.24+
- 具有适当权限的Grafana服务帐户令牌
配置
所需的环境变量
| 变量 |
描述 |
GRAFANA_URL |
Grafana实例的URL |
GRAFANA_SERVICE_ACCOUNT_TOKEN |
用于身份验证的Grafana服务帐户令牌 |
MCP_AUTH_TOKEN |
MCP客户端身份验证的承载令牌 |
可选环境变量
| 变量 |
默认值 |
描述 |
MCP_SERVER_PORT |
8443 |
MCP服务器的端口 |
MCP_LOG_LEVEL |
info |
日志级别:调试、信息、警告、错误 |
TLS客户端配置(用于连接Grafana)
| 变量 |
描述 |
MCP_TLS_CERT_FILE |
客户端身份验证的TLS证书文件路径 |
MCP_TLS_KEY_FILE |
客户端身份验证的TLS私钥文件路径 |
MCP_TLS_CA_FILE |
用于服务器验证的TLS CA证书文件的路径 |
TLS服务器配置(适用于HTTPS服务器)
| 变量 |
描述 |
MCP_SERVER_TLS_CERT_FILE |
HTTPS服务器的TLS证书文件路径 |
MCP_SERVER_TLS_KEY_FILE |
HTTPS服务器的TLS私钥文件路径 |
认证
MCP客户端必须包括 MCP_AUTH_TOKEN 在 Authorization 头球
Authorization: Bearer <your-mcp-auth-token>
注: 这 /healthz 端点是公共的,不需要身份验证。
健康检查
curl http://localhost:8443/healthz
# Response: ok (200 OK)
发展
启动服务器
docker-compose up -d --build grafana-mcp-server
停止服务器
重新启动服务器
docker-compose restart grafana-mcp-server
查看日志
docker-compose logs -f grafana-mcp-server
许可证
该项目根据 Apache许可证,版本2.0.