Loki日志查询服务

一个基于Model Context Protocol (MCP)的接口,用于通过logcli查询Grafana Loki日志,支持多种输出格式和自动回退到HTTP API。

  • by ghrud92
  • TypeScript
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 ghrud92/simple-loki-mcp

使用说明

简单的Loki MCP服务器

洛基MCP服务器是 模型上下文协议(MCP) 使用以下命令查询Grafana Loki日志的界面 logcli该服务器使AI助手能够直接访问和分析来自Loki的日志数据。

特性

  • 使用完整的LogQL支持查询Loki日志
  • 获取标签值和元数据
  • 通过环境变量或配置文件提供身份验证和配置支持
  • 以不同的输出格式(默认、原始、JSON行)提供格式化结果
  • 当出现以下情况时,自动回退到HTTP API logcli 在环境中不可用

先决条件

  • Node.js v16或更高版本
  • TypeScript
  • (可选) 格拉法娜·洛基logcli 已安装并可在PATH中访问。如果 logcli 不可用,服务器将自动使用Loki HTTP API
  • 访问Loki服务器实例

安装

通过Smithery安装

通过以下方式自动安装克劳德桌面的Simple Loki MCP服务器 史密瑟里:

npx -y @smithery/cli install @ghrud92/simple-loki-mcp --client claude

对于MCP

{
  "mcpServers": {
    "simple-loki": {
      "command": "npx",
      "args": ["-y", "simple-loki-mcp"],
      "env": {
        "LOKI_ADDR": "https://loki.sup.band"
      }
    }
  }
}

npm

  1. 克隆存储库:
git clone https://github.com/ghrud92/loki-mcp.git
cd loki-mcp
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build

可用的MCP工具

查询loki

使用过滤选项从Loki查询日志。

参数:

  • query (必填):Loki查询字符串(LogQL)
  • from:开始时间戳(例如“2023-01-01T12:00:00Z”)
  • to:结束时间戳(例如“2023-01-01T13:00:00Z”)
  • limit:要返回的最大日志数
  • batch:查询结果的批量大小
  • output:输出格式(“默认”、“原始”或“jsonl”)
  • quiet:抑制查询元数据
  • forward:按时间顺序显示结果

获取标签值

检索特定标签的所有值。

参数:

  • label (必需):标签名称以获取值

获取标签

检索所有可用标签。

无需参数。

配置

您可以使用以下方式配置Loki访问:

环境变量

  • LOKI_ADDR:洛基服务器地址(URL)
  • LOKI_USERNAME:基本身份验证的用户名
  • LOKI_PASSWORD:基本身份验证密码
  • LOKI_TENANT_ID:多租户洛基的租户ID
  • LOKI_BEARER_TOKEN:用于身份验证的承载令牌
  • LOKI_BEARER_TOKEN_FILE:包含承载令牌的文件
  • LOKI_CA_FILE:TLS的自定义CA文件
  • LOKI_CERT_FILE:TLS的客户端证书文件
  • LOKI_KEY_FILE:TLS的客户端密钥文件
  • LOKI_ORG_ID:多组织设置的组织ID
  • LOKI_TLS_SKIP_VERIFY:跳过TLS验证(“true”或“false”)
  • LOKI_CONFIG_PATH:配置文件的自定义路径
  • DEBUG:启用调试日志记录

备注:当客户端使用HTTP API模式时(当 logcli 不可用),相同的配置参数用于身份验证和连接到Loki服务器。

配置文件

或者,创建一个 logcli-config.yaml 文件位于以下位置之一:

  • 由指定的自定义路径 LOKI_CONFIG_PATH
  • 当前工作目录
  • 您的主目录(~/.logcli-config.yaml)

示例配置文件:

addr: https://loki.example.com
username: user
password: pass
tenant_id: mytenant

用法

启动服务器:

npm start

发展:

npm run dev

实现细节

自动回退到HTTP API

服务器将自动检查 logcli 已安装并在环境中可用:

  1. 如果 logcli 如果可用,它将用于所有查询,提供CLI工具的全部功能
  2. 如果 logcli 不可用,服务器将自动恢复使用Loki HTTP API:
    • 无需额外配置
    • 相同的身份验证参数用于HTTP API
    • 响应格式与CLI输出一致
    • 在这两种模式下都应用了每个查询1000个日志的默认限制

这种自动检测可确保服务器在不同环境中无缝工作,无需手动配置。

发展

# Run linter
npm run lint

# Fix linting issues
npm run lint:fix

# Run tests
npm run test

许可证

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