mcpField
J
Jarroba Tools · Logs

Jarroba Tools · Logs

本地服务
github.com/Invarato开发工具03 天前更新

关于 Jarroba Tools · Logs

Jarroba Tools · Logs 是供 AI 排查超出上下文容量的日志的本地 MCP 服务。它按文件路径读取日志,并返回趋势、模式、堆栈跟踪和精简片段等分析结果。

主要功能

  1. 01直接按文件路径分析日志
  2. 02发现趋势、新模式和消失的事件
  3. 03归并重复消息并识别罕见项
  4. 04追踪堆栈错误的根因
  5. 05按字符预算精简日志
  6. 06检查日志质量并转换格式

适用场景

  1. 01排查大型 CI 故障日志
  2. 02查明错误模式何时出现或停止
  3. 03将异常追踪到应用代码
  4. 04为 AI 准备精简日志片段

MCP 相关

通过本地 stdio 向 MCP 客户端提供 12 种只读日志工具。服务读取其宿主进程可访问的文件,并返回筛选后的结果,无需粘贴日志文本。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"invarato-jarroba-tools-logs": {
"command": "npx",
"args": [
"-y",
"@jarroba/mcp-logs"
],
"env": {
"JARROBA_MCP_DOMAINS": "<JARROBA_MCP_DOMAINS>"
}
}
}
}
启动命令npx -y @jarroba/mcp-logs
需要配置的环境变量
JARROBA_MCP_DOMAINSWhich tool domains to publish, comma-separated. Defaults to what this package is for. Valid: core, calc, diagram, kg, db, ai, logs, queue, project, tests, api, chip, chem, access, archsim, security, experiments, payroll. Fewer domains means less of your context window spent on tool definitions.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@jarroba/mcp-logs0.3.0

工具

11

收录的工具列表 · 更新于 3 天前

参数类型必填说明
fromenum否文件超过 32 MB 时要读取哪一端start | end
pathstring否日志文件的路径。处理大型日志时请使用此参数:它们无法放入一次工具调用中。
textstring否日志文本。`path` 的替代方式。
formatenum否强制使用指定格式,而不是自动检测json | logfmt | syslog5424 | syslog3164 | clf | combined | plain

详细介绍

@jarroba/mcp-logs

一个 MCP 服务,让你的 AI 读取超出上下文容量的日志。

claude mcp add jarroba-logs -- npx -y @jarroba/mcp-logs
// Claude Desktop, Cursor, Cline, VS Code…
{ "mcpServers": { "jarroba-logs": { "command": "npx", "args": ["-y", "@jarroba/mcp-logs"] } } }

12 个工具 · 约 5.5k 个 token 的上下文 · stdio,在你的设备上运行 · 不会上传任何内容。

为什么要开发这个工具

所有供 AI 使用的日志工具都需要粘贴文本。生产环境或 CI 日志有几十或几百 MB,因此无法粘贴,而且有意思的部分往往不是你会粘贴的部分。

这些工具接收文件路径。服务在 Node 中运行,因此会自行打开文件,只返回能放入上下文的内容。调试 CI 失败任务的 Agent 无法读取日志,但可以针对日志提问。

工具

log_analyze格式、事件数量(40 行堆栈跟踪算作一个事件)、级别、时间范围、已找到根本原因的错误、最常见的模式。
log_trends从什么时候开始的。 将每种模式与自身比较,而不是与总量比较——在繁忙的服务中,所有内容都会在上午 9 点增加,但这并不意味着发生了什么。返回激增的内容、新出现的内容,以及不再出现的内容:最后一种不会增加任何计数,往往意味着更糟的情况。
log_around某个时刻前后还发生了什么。之前开始的内容可能是原因;之后发生的通常是结果。相关性不代表因果关系,先后顺序才是区分两者的关键。
log_distinguish一组事件与其他事件有何不同:其中出现比例偏高的 field=value 对(默认在错误中查找)。在 300 个错误中,version=2.4.1 占 92%,而其他事件中只占 4%,这就是导致故障的部署——无需阅读 300 个错误即可找到。每个事件中都唯一的字段会被跳过:它们只能用于识别,不能用于区分。
log_patterns将行分组成模板(Drain):“connected to 10.0.0.1”和“connected to 10.0.0.7”会被视为同一条消息。还会返回罕见模式,而这通常正是你要找的内容。
log_reduce将内容缩减到字符数预算,同时保留完整错误跟踪、之前的时间窗口以及只出现一次的内容。重复内容会合并为 [xN]。适合将大型日志交给模型,避免把上下文浪费在重复行上。
log_stacktrace支持 Java/JVM、Python、Node、Go、.NET、Rust、Ruby、PHP:返回 Caused by 链、根本原因,以及你的代码中的第一个堆栈帧——如果你没有指定,会从跟踪中推断。
log_lint检查日志写得是否规范,而非发生了什么:是否打印了密钥、是否有一行刷满整个文件、时间戳是否缺少时区(这会导致无法关联两台机器上的日志)、时钟是否倒退、是否缺少请求 ID。密钥会在结果中被遮蔽。
log_convertJSON / logfmt / syslog 5424 / CSV / OpenTelemetry / ECS——会事先说明转换会丢失哪些内容。
log_rotation按时间顺序排列轮转日志。轮转编号与时间顺序相反(app.log.3 比 app.log.1 旧),按字母排序时 app.log.10 也会排在 app.log.9 前面。先使用此工具,否则你会按倒序读取日志。
log_profile_check
log_profile_suggest
描述团队日志格式的可复用配置文件。check 会返回每个错误及其确切字段,让模型一次就能修正。

让你的 Agent 使用该工具(Claude Code hook)

使用这些工具的 Agent 仍可能习惯性地用 Read 读取 300 MB 的日志。hooks/big-log-read.mjs 是一个 PreToolUse hook,可阻止 Read 读取大型日志(按名称判断:*.log、轮转文件 *.log.N[.gz]、*.jsonl、 logs/ 下的任何文件;按大小判断:2 MB,可通过 JT_BIG_LOG_BYTES 修改),并提示 Agent 改为使用路径调用 log_analyze / log_reduce。其他内容不受影响。

{ "hooks": { "PreToolUse": [ { "matcher": "Read", "hooks": [
  { "type": "command", "command": "node /path/to/big-log-read.mjs" } ] } ] } }

它不会做的两件事

  • 它不会臆测服务器的时区。 日志中没有记录时区,猜测时区会让整条时间线发生偏移,却无人察觉。log_profile_suggest 会明确说明这一点,而不会擅自填入时区。
  • 如果日志没有时间戳,它不会告诉你任何事情花了多久。 它会说明无法判断。

隐私,以及坦诚说明

传输方式为 stdio:你的 MCP 主机将其作为子进程启动,并通过 stdin/stdout 通信。没有端点、没有账户,也没有遥测。npx 首次会从 npm 将软件包下载到你的机器;之后不会有任何数据传出。

有两件事值得提前了解,以免之后才发现:

  • 这些工具会读取启动它们的进程能够读取的所有内容。 这正是它们的用途——让一个 200 MB 的日志也能回答问题——因此,它们拥有的权限与 MCP 主机完全相同。
  • 工具返回的内容会进入模型的上下文。 含有恶意文本的日志文件会成为间接提示词注入渠道,和网页的情况一样。这里不会对内容进行净化处理。

每个工具都声明了 MCP annotations:它们的 readOnlyHint: true,并且由于答案来自磁盘而非参数,因此 openWorldHint: true。

更多信息

属于 Jarroba Tools — 使用与 Web 工具相同的引擎,因此答案完全一致。想要获取全部内容(90 个工具、数据库、图表、测试审计、SPARQL)? @jarroba/mcp。

MIT — 参见 LICENSE。源代码:github.com/Invarato/jarroba-mcp。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。