使用说明

项目简介

Grafana-Loki MCP Server 是一个基于 FastMCP 框架构建的 MCP 服务器,它允许大型语言模型(LLM)客户端通过标准化的 MCP 协议,安全、便捷地查询 Grafana Loki 日志系统。该服务器将 Grafana Loki 的日志查询能力封装成易于 LLM 调用的工具,使得 LLM 应用能够轻松集成日志数据,实现更智能的可观测性和问题诊断功能。

主要功能点

  • Loki 日志查询: 提供 'query_loki' 工具,允许 LLM 客户端使用 LogQL 查询语句从 Grafana Loki 中检索日志数据。支持设置查询范围、日志条数限制、查询方向等参数。
  • Loki 标签管理: 提供 'get_loki_labels' 和 'get_loki_label_values' 工具,允许 LLM 客户端获取 Loki 中可用的标签名称和标签值,方便构建动态的日志查询条件。
  • 结果格式化: 提供 'format_loki_results' 工具,可以将原始的 Loki 查询结果格式化为文本、JSON 或 Markdown 等多种易读的格式,方便 LLM 理解和展示日志信息。
  • 多种数据源管理: 提供 'get_datasources', 'get_datasource_by_id', 'get_datasource_by_name' 工具,虽然主要针对Loki,但也提供了通用的 Grafana 数据源信息查询能力,为未来扩展其他数据源奠定基础。
  • 灵活的传输协议: 支持 Stdio 和 SSE 两种传输协议,可以根据 LLM 客户端的部署环境和需求选择合适的通信方式。

安装步骤

  1. 安装 Python 3.10+: 确保你的环境中安装了 Python 3.10 或更高版本。
  2. 安装 'grafana-loki-mcp' 包: 使用 pip 命令安装:
    pip install grafana-loki-mcp

服务器配置

MCP 客户端需要配置以下 JSON 信息以连接到 Grafana-Loki MCP 服务器。请根据你的实际环境修改以下参数:

{
  "server_name": "grafana-loki-mcp",
  "command": "grafana-loki-mcp",
  "args": [],
  "env": {
    "GRAFANA_URL": "<your_grafana_url>",  // 【必填】你的 Grafana 实例的 URL,例如 "https://your-grafana.example.com"
    "GRAFANA_API_KEY": "<your_grafana_api_key>" // 【必填】用于访问 Grafana API 的 API Key,需要具备适当的权限
  }
}

参数注释:

  • 'server_name': 服务器名称,可以自定义,用于在 MCP 客户端中标识该服务器。
  • 'command': 启动 Grafana-Loki MCP 服务器的命令,这里使用已安装到系统路径的 'grafana-loki-mcp' 命令。
  • 'args': 启动命令的参数,这里为空,表示使用环境变量配置 Grafana URL 和 API Key。你也可以选择将配置信息通过命令行参数传递,例如 '["-u", "https://your-grafana.example.com", "-k", "your-api-key"]'。
  • 'env': 环境变量配置,用于设置 Grafana URL 和 API Key。
    • 'GRAFANA_URL': Grafana 实例的 URL。
    • 'GRAFANA_API_KEY': Grafana API Key。

注意: 请务必替换 '<your_grafana_url>' 和 '<your_grafana_api_key>' 为你实际的 Grafana 实例 URL 和 API Key。 API Key 需要在 Grafana 中创建,并赋予 '查看器' 或更高权限,以便查询数据源信息和日志。

基本使用方法

  1. 启动服务器: 在安装了 'grafana-loki-mcp' 包的环境中,直接运行命令 'grafana-loki-mcp' 即可启动服务器。服务器默认监听端口为 52229,并使用 stdio 协议。
  2. 配置 MCP 客户端: 在你的 MCP 客户端应用中,根据上述 "服务器配置" 部分提供的信息配置连接到 Grafana-Loki MCP 服务器。
  3. 调用工具: 通过 MCP 客户端,你可以调用服务器提供的工具,例如:
    • 调用 'query_loki' 工具查询日志,例如查询应用 'my-app' 包含 "error" 关键词的日志:
      results = await client.call_tool(
          "query_loki",
          {
              "query": '{app="my-app"} |= "error"',
              "limit": 50
          }
      )
    • 调用 'format_loki_results' 工具格式化查询结果,例如将结果格式化为 Markdown:
      formatted_results = await client.call_tool(
          "format_loki_results",
          {
              "results": results,
              "format_type": "markdown"
          }
      )
      print(formatted_results)
    更多工具的使用方法和参数可以参考仓库 README.md 文件中 "Available Tools" 部分的说明。

信息

分类

开发者工具