Skip to main content
Glama
grafana-log-mcp

grafana-log-mcp

by sunshinerich

grafana-log-mcp

npm version npm downloads license Node.js GitHub

grafana-log-mcp is a generic, reusable log-querying layer for Grafana/Loki, exposed as a read-only stdio MCP server. It talks to Grafana's API and returns raw logs plus aggregated views — slow queries, error fingerprints, and volume trends — filtered by time window, project, keyword, or duration threshold.

It deliberately ships no business-specific logic or heuristics. Once the logs are in hand, correlating them with source code and explaining why something happened is left to your AI IDE and the skills/rules of the business project being debugged — the server just makes the data available.

中文定位:这是一个通用的日志查询层(仅做取数、聚合、返回日志,跨业务复用),不内置任何业务分析与根因归因;具体原因分析由调用方的 AI 结合业务项目源码及项目自身的 skill/经验完成。

安装

# 方式一:npm 全局安装(推荐)
npm install -g grafana-log-mcp

全局安装后提供两个命令:grafana-log-mcp(启动 MCP Server)、grafana-log-mcp-login(交互登录)。

也可不安装、用 npx 一次性运行:npx -y grafana-log-mcp / npx -y grafana-log-mcp-login。

Related MCP server: quickwit-mcp

快速开始

npm 已安装(消费方)

# 1. 登录(交互输入 Grafana 地址与用户名密码,写入 ~/.grafana-log-mcp/credentials.json,0600)
grafana-log-mcp-login

# 2. 校验凭证(排查"MCP 突然查不了")
grafana-log-mcp-login --check

# 3. 启动 MCP Server(stdio)
grafana-log-mcp

源码开发(clone 仓库后)

# 1. 安装依赖(node >= 18)
npm install

# 2. 登录
node bin/login.js

# 3. 校验凭证
node bin/login.js --check

# 4. 启动 MCP Server(stdio)
npm start          # 即 node src/index.js

接入 AI IDE(Trae/Claude 等)

在 MCP 配置中添加(按各 IDE 的配置格式):

{
  "mcpServers": {
    "grafana-log": {
      "command": "npx",
      "args": ["-y", "grafana-log-mcp"],
      "env": { "GRAFANA_URL": "https://your-grafana.example.com" }
    }
  }
}

推荐全局启用:排障时打开的是业务项目源码仓库,把 MCP 配置加为全局,即可在任意仓库直接"提问 → 查日志 → 读代码 → 给原因"。

工具(15 个)

层

工具

用途

发现

list_datasources / list_projects

多数据源枚举、项目发现(含未登记的 app/group)

元数据

list_labels / list_label_values

标签与取值

查询

query_logs

原始日志(优先 requestId + 窄时间窗控制数据量)

查询

get_full_line

取回单条日志完整原文(单行 500 截断时,按该行 time 作 timestamp 查询)

查询

query_slow_logs

按耗时阈值抓慢日志(如 >30s 的慢 SQL),自动配对回捞 SQL 语句原文;命中超 30 条(循环任务)时自动按操作聚合

有报错

summarize_errors / logs_volume / trace_context

错误归并分级、量级突增、单请求链路

无报错

compare_baseline / inspect_fields / trace_flow

消失的日志模板、空值字段、流程断点

编排

diagnose_issue

排障首选:一次调用出诊断报告 + codeHints

辅助

build_explore_url

生成 Grafana Explore 深链供人工核对

数据量三道硬上限:limit ≤ 1000、单行 500 字符、响应 25k 字符(超出保头尾省中段并标注)。单行被截断时可用 get_full_line 按该行 time 取回完整内容。

项目登记(projects.json)

登记文件按以下优先级定位(list_projects 返回的 summary.configFile 会显示当前实际生效位置):

  1. GRAFANA_CONFIG_PATH 环境变量指定的文件

  2. 包内 config/projects.json(源码仓库内)

  3. ~/.grafana-log-mcp/projects.json(与凭证同目录,npm 安装后的默认位置)

参考格式见 config/projects.example.json,每项含 key / datasourceUid / labels{app,group} / aliases(中文别名) / repoPath。repoPath 仅供 AI IDE 定位代码用,MCP 自身不读源码。故障知识库在 config/failure-patterns.json,遇到新故障类型追加条目即可。

环境变量(可选)

GRAFANA_URL=                  # Grafana 地址:作为 grafana-log-mcp-login 的默认地址,并覆盖凭证文件中的地址
GRAFANA_ORG_ID=1              # 可选:仅影响 build_explore_url 生成的 Explore 深链的 orgId 参数(默认 1);不参与实际日志查询
GRAFANA_CREDENTIALS_PATH=     # 自定义凭证文件位置
GRAFANA_CONFIG_PATH=          # 自定义项目登记文件(projects.json)位置
GRAFANA_MOCK=1                # 本地 mock 模式:不连真实 Grafana、无需登录(2500 条合成日志,验证翻页/截断/慢日志)

说明:MCP 不内置任何 Grafana 默认地址与项目配置(通用化),地址来自登录时输入(凭证文件)或 GRAFANA_URL 环境变量;实例相关配置(项目登记、数据源 uid)在 projects.json 维护(见上节定位规则)。

测试

node test/unit.mjs         # 纯逻辑单测(合成日志,无网络依赖):59 通过
node test/integration.mjs  # 编排器端到端(mock client + 独立 fixture 配置):20 通过

Available Tools

15 tools
build_explore_urlC

生成 Grafana Explore 深链:AI 给出结论后,人可一键跳到 Grafana 亲自核对原始日志。

Inputs: end, level, range, start, +5 more.

compare_baselineA

与基线窗对比("日志都正常但结果不对"时的首选):找出消失的日志模板(静默跳过信号)、新出现的模板、数值偏离(逻辑 bug 信号)、字段取值分布突变。默认对比前一天同时段。

Inputs: end, range, start, labels, +4 more.

diagnose_issueA

【排障首选】一次调用完成完整根因分析:量级趋势→异常定位→双路径探测(错误突增归并分类 + 无报错基线对比/空值探测/流程断点)→候选原因打分。返回带证据链的诊断报告 + codeHints(供在当前代码仓库中检索定位)。不传 project 则跨全部数据源扫描找疑似源头。

Inputs: end, range, start, project, +2 more.

get_full_lineA

取回日志完整原始行(不做单行截断):query_logs/trace_context 返回的行带"(截断 N 字符)"标记时,把该行的 time 作为 timestamp(配合 keyword)调本工具取回完整内容。

Inputs: end, start, labels, keyword, +5 more.

inspect_fieldsA

字段取值与空值探测("变量没设置"时的首选):统计字段空值率、命中"使用默认值/未配置/fallback"的日志样本。

Inputs: end, range, start, fields, +4 more.

list_datasourcesA

列出该 Grafana 实例上全部 Loki 日志数据源(uid/名称/是否默认),以及各数据源已登记的项目数。多数据源环境下先用它确认要查哪个数据源。

Inputs: no named parameters.

list_labelsB

列出某数据源(或某项目)在时间窗内可用的日志标签名(如 app/group/host/level)。

Inputs: range, labels, project, datasourceUid.

list_label_valuesC

列出指定标签在时间窗内的全部取值(如 labelName=app 列出所有服务名)。

Inputs: labelName (required), range, labels, project, +1 more.

list_projectsA

列出全部可查项目:已登记项目(含中文别名)+ 遍历各 Loki 数据源实时发现的 app/group 组合(默认查最近 24h,标注归属数据源与登记状态)。不知道项目叫什么时先调这个。

Inputs: no named parameters.

logs_volumeC

日志量级趋势与突增检测:分桶计数 + 相对基线的突增倍数 + 异常起始时刻。回答"什么时候开始出问题"。

Inputs: end, range, start, labels, +4 more.

query_logsA

查询原始日志。数据量控制:优先用 requestId 精确到单次请求;配合窄时间窗(默认 15m);行数/单行长度/总响应均有硬上限,超出会标注省略。排查线上问题建议优先用 diagnose_issue(自动聚合分析),本工具适合按线索精确取证。

Inputs: end, level, limit, range, +9 more.

query_slow_logsA

按耗时阈值抓取慢日志(如执行超过 30s 的慢 SQL)。支持三个维度:sql(每条 SQL 的 queryRows/updateRows Nms)、request(请求级 utime)、connection(连接级 release)。慢 SQL 自动按连接号-序号配对回捞语句原文;命中超 30 条(如循环任务)时自动按操作聚合统计(count/totalMs/maxMs/avgMs),明细仅保留最慢样本。

Inputs: end, kind, level, limit, +10 more.

summarize_errorsA

错误聚合归并:把窗口内错误按模板指纹压缩成少量模式,区分首发错误(可能的原因)与级联噪声(后果),并给出故障类型分类、堆栈业务帧、高频 requestId。比直接翻错误日志高效得多。

Inputs: end, topN, range, start, +4 more.

trace_contextA

按 requestId/traceId 还原单次请求的完整日志链路(时间正序)。定位具体一次失败请求时用它,返回量小且完整。

Inputs: end, range, start, labels, +4 more.

trace_flowA

流程完整性检查("流程走一半没了但不报错"时的首选):取一条链路的日志模板序列,与成功样本序列对比,定位流程在哪一步中断。

Inputs: range, labels, project, traceId, +3 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 15 tools

    Disambiguation4/5

    工具职责整体清晰,但 query_logs 与 trace_context 都涉及查询日志,且 summarize_errors 与 diagnose_issue 有功能重叠;不过描述中给出明确适用场景(如 query_logs 用于按线索取证,trace_context 用于请求链路还原),可有效区分。

    Naming Consistency5/5

    所有工具名均为 snake_case 的动词+名词形式,如 list_datasources、query_slow_logs、diagnose_issue,模式统一,无混合风格,易于预测。

    Tool Count5/5

    15 个工具覆盖日志查询、聚合、诊断、对比、链路追踪等核心场景,每个工具都有明确用途,无明显冗余,规模适中。

    Completeness5/5

    工具集覆盖日志排障的完整生命周期:发现数据源、探索项目与标签、查询原始日志、聚合错误、趋势检测、链路追踪、基线对比、字段检查、流程断点、综合诊断,并生成 Explore 深链,无关键缺口。

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      F
      maintenance
      A read-only MCP server that exposes Quickwit log search and aggregations to LLM clients, enabling natural language log investigation.
      Apache 2.0
    • A
      license
      A
      quality
      D
      maintenance
      A read-only MCP server for querying Sumo Logic logs, enabling AI assistants to search and investigate application logs with opinionated tools and secure credential handling.
      5
      25 npm
      1
      MIT
    • F
      license
      A
      quality
      C
      maintenance
      Read-only MCP server for searching migrated Papertrail logs via SolarWinds Observability API. Provides tools to list environments and perform bearer-authenticated log queries through stdio.
      2
      15 npm
      -