Grafana数据查询服务

Grafana MCP Server是一个提供多种Grafana数据查询功能的服务,包括PromQL查询、Loki日志查询、仪表板配置获取等,适用于监控数据分析和可视化场景。

  • by DrDroidLab
  • Python
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 DrDroidLab/grafana-mcp-server

使用说明

Grafana MCP服务器

可用工具

以下工具可通过MCP服务器获得:

  • test_连接:验证与Grafana实例和配置的连接。
  • grafana_promql_query:对Grafana的Prometheus数据源执行PromQL查询。使用PromQL表达式获取指标数据,优化时间序列响应以减少令牌大小。
  • grafanaloki_query:向Grafana Loki查询日志数据。获取指定持续时间(例如“5m”、“1h”、“2d”)的日志,将相对时间转换为绝对时间戳。
  • grafana_get-dashboard_config:从数据库中检索仪表板配置详细信息。查询connectors_connectors元数据模型存储表以获取仪表板元数据。
  • grafana_query_dashboard_panels:执行特定仪表板面板的查询。一次最多可以查询4个面板,支持模板变量,优化指标数据。
  • grafana_fetch_label_values:从Prometheus数据源获取仪表板变量的标签值。检索特定标签的可用值(例如,“实例”、“作业”)。支持可选的度量过滤。
  • grafana_fetch_dashboard_变量:从Grafana仪表板获取所有变量及其值。检索仪表板模板变量及其当前值。
  • grafana_etch_all_dashboards:从Grafana获取所有仪表板,包括标题、UID、文件夹、标签等基本信息。
  • grafana_fetch_数据来源:从Grafana获取所有数据源及其配置详细信息。
  • grafana_fetch_folders:从Grafana获取所有文件夹及其元数据和权限。

🚀 使用和要求

1.获取您的Grafana API端点和服务帐户令牌

  1. 确保您有一个正在运行的Grafana实例(自托管或云)。
  2. 从Grafana UI生成服务帐户令牌:
    • 创建服务帐户:在Grafana仪表板中,导航到管理>>用户和访问>>服务帐户>>创建具有查看器权限的服务帐户
    • 生成服务帐户密钥:在服务帐户中,创建一个新的服务帐户令牌。
    • 复制服务帐户令牌(以开头 glsa_)

2.安装和运行选项

2A。安装并运行uv(建议用于本地开发)

2A.1。使用uv安装依赖项

uv venv .venv
source .venv/bin/activate
uv sync

2A.2。使用uv运行服务器

uv run -m src.grafana_mcp_server.mcp_server
  • 您还可以使用 uv 根据需要运行任何其他入口点脚本。
  • 确保你的 config.yaml 与位于同一目录中 mcp_server.py 或设置所需的环境变量(请参阅配置部分)。

2B。使用Docker Compose运行(推荐用于生产/容器化环境)

  1. 编辑 grafana-mcp-server/src/grafana_mcp_server/config.yaml 使用您的Grafana详细信息(主机,API密钥)。
  2. 启动服务器:
    docker compose up -d
    
    • 默认情况下,服务器将在端口8000上以HTTP(SSE)模式运行。
    • 您可以使用环境变量覆盖配置(见下文)。

3.配置

服务器按照以下优先级顺序加载配置:

  1. 环境变量 (推荐用于Docker/CI):
    • GRAFANA_HOST:Grafana实例URL(例如。 https://your-grafana-instance.com)
    • GRAFANA_API_KEY:Grafana服务帐户令牌(必填)
    • GRAFANA_SSL_VERIFY: true 或 false (默认值: true)
    • MCP_SERVER_PORT:运行服务器的端口(默认值: 8000)
    • MCP_SERVER_DEBUG: true 或 false (默认值: true)
  2. YAML文件回退 (config.yaml):
    grafana:
      host: "https://your-grafana-instance.com"
      api_key: "your-grafana-api-key-here"
      ssl_verify: "true"
    server:
      port: 8000
      debug: true
    

4.与人工智能助手(如Claude Desktop、Cursor)集成

您可以将此MCP服务器与支持MCP协议的任何工具集成。以下是主要选项:

4A。使用Docker(带环境变量)

{
  "mcpServers": {
    "grafana": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "GRAFANA_HOST",
        "-e",
        "GRAFANA_API_KEY",
        "-e",
        "GRAFANA_SSL_VERIFY",
        "drdroidlab/grafana-mcp-server",
        "-t",
        "stdio"
      ],
      "env": {
        "GRAFANA_HOST": "https://your-grafana-instance.com",
        "GRAFANA_API_KEY": "your-grafana-api-key-here",
        "GRAFANA_SSL_VERIFY": "true"
      }
    }
  }
}
  • 这 -t stdio 为了与Docker MCP客户端兼容,支持该参数(强制stdio握手模式)。
  • 根据部署需要调整卷路径或环境变量。

4B。连接到已运行的MCP服务器(HTTP/SSE)

如果你已经有一个MCP服务器在运行(例如,在远程主机、云VM或Kubernetes上),你可以将你的AI助手或工具直接连接到它的HTTP端点。

{
  "mcpServers": {
    "grafana": {
      "url": "http://your-server-host:8000/mcp"
    }
  }
}
  • 替换 your-server-host 使用您的MCP服务器运行的实际主机。
  • 对于本地设置,请使用 localhost 作为服务器主机(即。, http://localhost:8000/mcp).
  • 使用 http 用于本地或不安全的部署,以及 https 用于生产或安全部署。
  • 确保服务器可以从您的客户端计算机访问(检查防火墙、安全组等)。

健康检查

curl http://localhost:8000/health

默认情况下,服务器在端口8000上运行。


5.项目结构

grafana-mcp-server/
│   └── src/
│       └── grafana_mcp_server/
│           ├── __init__.py
│           ├── config.yaml              # Configuration file
│           ├── mcp_server.py            # Main MCP server implementation
│           ├── stdio_server.py          # STDIO server for MCP
│           └── processor/
│               ├── __init__.py
│               ├── grafana_processor.py # Grafana API processor
│               └── processor.py         # Base processor interface
├── tests/
├── Dockerfile
├── docker-compose.yml
├── pyproject.toml
└── README.md


6.故障排除

常见问题

  1. 连接失败:

    • 验证您的Grafana实例是否正在运行且可访问
    • 检查您的API密钥是否具有正确的权限
    • 确保SSL验证设置与您的设置匹配
  2. 身份验证错误:

    • 验证您的API密钥是否正确且未过期
    • 检查您的Grafana实例是否需要额外的身份验证
  3. 查询失败:

    • 确保数据源UID正确
    • 验证PromQL/Loki查询语法
    • 检查数据源是否可以使用API密钥访问

调试模式

启用调试模式以获取更详细的日志:

export MCP_SERVER_DEBUG=true

7.贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

8.许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。


9.支持

  1. 需要帮忙吗?加入我们 不和谐频道 以及#mcp频道上的消息。
  2. 想要一键式MCP服务器吗?加入同一个社区,让我们知道。
  3. 对于问题和疑问,请在GitHub上打开问题或联系维护人员。