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
注: 这 /healthz 端点是公共的,不需要身份验证。
健康检查
curl http://localhost:8443/healthz
# Response: ok (200 OK)
发展
启动服务器
docker-compose up -d --build grafana-mcp-server
停止服务器
docker-compose down
重新启动服务器
docker-compose restart grafana-mcp-server
查看日志
docker-compose logs -f grafana-mcp-server
许可证
该项目根据 Apache许可证,版本2.0.