mcpField
L
Log Detective MCP

Log Detective MCP

本地服务
github.com/fedora-copr开发工具11 周前更新

关于 Log Detective MCP

供 Agent 从大型日志中提取片段或 Python 回溯的 MCP 服务。它使用 Drain3 聚类相似消息,输入可为日志文本、服务器文件路径或 HTTP(S) URL。

主要功能

  1. 01用 Drain3 聚类相似日志消息
  2. 02提取代表性日志片段
  3. 03提取链式 Python 回溯
  4. 04用正则表达式过滤匹配项
  5. 05附加周边行作为上下文
  6. 06读取压缩日志和单文件归档

适用场景

  1. 01从大型日志中提炼代表性消息
  2. 02提取 Python 异常以便调试
  3. 03分析前排除常见日志模式

MCP 相关

向 MCP 客户端提供日志片段和 Python 回溯提取工具。可通过 `logdetective-mcp` 或 `python -m logdetective_mcp.main` 启动,并在 MCP 客户端中配置。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"fedora-copr-logdetective": {
"command": "uvx",
"args": [
"logdetective-mcp"
]
}
}
}
启动命令uvx logdetective-mcp

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

安装包
pypilogdetective-mcp0.6.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Log Detective MCP

MCP 服务,为其他 Agent 实现 Log Detective 的核心日志分析工具。

该服务使用 Drain3 算法将日志消息聚类为模板,并提取有代表性的片段子集,将大量日志缩减到便于下游分析的规模。

安装

需要 Python 3.11+。

pip install .

也可以使用 uv:

uv pip install .

用法

运行服务
logdetective-mcp

或直接运行:

python -m logdetective_mcp.main
MCP 客户端配置
Claude Code
claude mcp add logdetective -- logdetective-mcp
Claude Desktop

将以下内容添加到 Claude Desktop 配置文件中:

{
  "mcpServers": {
    "logdetective": {
      "command": "logdetective-mcp"
    }
  }
}

工具

extract_log_snippets

使用 Drain3 聚类提取有代表性的日志片段。该工具会将日志划分为逻辑消息,对相似消息进行聚类,并为每个簇返回一个代表性片段。

可通过以下三种方式之一提供日志内容(必须且只能使用其中一种):

参数类型说明
log_textstr直接传入原始日志文本。
log_pathstr服务器文件系统上的日志文件路径。
log_urlstr用于获取日志内容的 HTTP(S) URL。

可选参数:

参数类型默认值说明
max_clustersint8要提取的片段的最大数量。
max_snippet_lenint2000每个片段的最大字符长度。
skip_patternslist[str]null正则表达式模式列表。匹配任一模式的日志块会在聚类前排除。
contextint0每个片段前后要包含的行数(0-50)。

返回一个 Snippet 对象列表,每个对象包含 line_number(在原始日志中的位置)和 text(提取出的片段内容)。

extract_python_tracebacks

从日志中提取 Python 回溯信息,包括链式异常。

参数类型默认值说明
max_traceback_lenint2000每条提取出的回溯信息的最大字符长度。
skip_patternslist[str]null正则表达式模式列表。匹配任一模式的回溯信息会被排除。
contextint0每条回溯信息前后要包含的行数(0-50)。

对于这两个提取工具,context 遵循 grep 的 -C 行为:如果有足够的日志行,则会在每侧包含指定数量的相邻行。长度限制适用于提取出的片段或回溯信息;上下文行会额外添加,因此返回的 text 可能超过该限制。启用上下文后,line_number 指向返回内容的第一行。超出 0-50 范围的值会被拒绝。

如果回溯信息被截断,且 max_traceback_len 允许,提取器会保留其开头和结尾,并插入标记;限制更小时则只保留前缀。后续上下文从原始回溯信息之后开始,不会补回其中省略的部分。 如果一行日志因 max_snippet_len 被拆分为多个块,添加上下文时,每个选中的块都会保留自身文本。相邻行不会替换该块,使其恢复为完整的长行。上下文边界遵循块在源日志中的原始行,包括渲染后的块中省略的空行。

大小限制

所有下载的输入(通过 log_url 获取)都限制为 100 MB,无论其格式如何。下载会以分块方式流式进行,一旦超过限制便会中止。

通过 log_path 读取的归档文件也会在解压过程中检查是否超过 100 MB 限制。

压缩文件支持

这两个工具都会透明地解压归档日志文件。支持的格式:

  • 单文件压缩: .gz、.bz2、.xz、.lzma
  • 归档文件: .zip、.tar、.tar.gz、.tar.bz2、.tar.xz

格式根据文件扩展名(或 URL 路径)识别。归档文件必须恰好包含一个文件。

Zip 炸弹防护通过以下措施实现:

  • 最大解压缩大小为 100 MB
  • 最大压缩比为 100:1
  • 预先检查 zip/tar 标头中声明的大小
  • 不递归解压(不解包嵌套归档)

贡献

对此仓库的所有更改都必须通过 pre-commit 检查和测试。

uv run pytest tests/

评论

支持 Markdown

第一次接触 MCP?

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

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