Loki日志查询工具

一个Python MCP服务器,将Grafana Loki的日志查询功能作为工具暴露给Claude Code或任何MCP客户端使用,适用于日志分析和监控场景。

  • by jmazzahacks
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 jmazzahacks/loki-reader-mcp

使用说明

loki阅读器mcp

Python MCP服务器,公开Grafana Loki日志查询功能作为工具 克劳德代码 (或任何MCP客户端)。用途 loki阅读器核心 所有洛基通信。

工具

工具 说明
loki_query 在单个时间点进行即时查询
loki_query_range 跨时间窗口的范围查询
loki_get_labels 列出所有可用的标签名称
loki_get_label_values 获取特定标签的所有值
loki_get_series 获取与流选择器匹配的唯一标签集

所有工具都返回格式化的markdown,并包括对身份验证、连接和查询失败的错误处理。

设置

1.创建虚拟环境

python -m venv .
source bin/activate

2.安装依赖项

pip install mcp[cli] loki-reader-core python-dotenv pydantic

针对loki阅读器核心的本地开发:

pip install -e ../loki-reader-core

3.配置环境

cp example.env .env

编辑 .env 使用您的Loki连接详细信息:

变量 必填 描述
LOKI_URL 是 Loki服务器的基本URL
LOKI_USER 否 基本身份验证的用户名
LOKI_PASS 否 基本身份验证密码
LOKI_CA_CERT 否 CA证书PEM文件的路径
LOKI_ORG_ID 对于多租户设置,没有 X-Scope-ArgID

4.运行测试

pip install pytest pytest-asyncio
pytest tests/ -v

使用Claude代码

添加到您的项目 .mcp.json:

{
  "mcpServers": {
    "loki": {
      "command": "/path/to/loki-reader-mcp/bin/python",
      "args": ["/path/to/loki-reader-mcp/loki_mcp_server.py"]
    }
  }
}

配置后,Claude Code可以使用自然语言直接查询您的Loki日志。所有时间戳都使用Unix纳秒(Loki的原生格式)。

项目结构

loki_mcp_server.py       # FastMCP entry point with lifespan and tool registration
formatting.py            # Markdown response formatters
models/
  query_input.py         # QueryInput, QueryRangeInput (Pydantic)
  label_input.py         # GetLabelsInput, GetLabelValuesInput, GetSeriesInput
tools/
  query_tools.py         # loki_query, loki_query_range
  label_tools.py         # loki_get_labels, loki_get_label_values, loki_get_series
tests/
  test_models.py         # Input validation tests
  test_tools.py          # Tool tests with mocked LokiClient

许可证

麻省理工学院