GStreamer日志管理服务

用于管理和分析GStreamer调试日志的服务,支持日志过滤、计数和查询功能。

  • by Orkules
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Orkules/gst_logs_mcp

使用说明

GStreamer记录MCP

用于GStreamer调试日志的MCP服务器。每个文件加载一次(缓存);代理人使用 过滤器 (路径、类别、以毫秒为单位的时间范围、级别、对象名等)并获取 计数 在请求行之前,上下文保持较小。 时间: 仅从日志开始算起的整数毫秒(例如。 10000 =10s, 10300 =10.3秒)。独立仓库:没有外部项目依赖关系。

需求

  • Python 3.10+

安装

从该目录:

pip install -r requirements.txt

运行(stdio,用于光标/Claude)

python server.py

或与 uv:

uv run server.py

配置

Env var 含义
GST_LOGS_MCP_LOG_DIR 包含日志文件的目录(默认: gst_log_files/ 在这个项目中)。

光标

在Cursor MCP设置中,添加一个运行此脚本的服务器,例如:

{
  "mcpServers": {
    "gst-logs": {
      "command": "python",
      "args": ["C:\\path\\to\\gst_logs_mcp\\server.py"]
    }
  }
}

使用路径到您的 gst_logs_mcp 克隆并确保Python mcp 已安装的是Cursor使用的那个。

时间格式

所有时间过滤器使用 从日志开始算起的整数毫秒 只有(没有分数)。例如 10000 =10s, 10300 =10.3秒。使用 load_log 第一个得到 time_span 因此,您可以从第一个时间戳计算ms。

工具

工具 目的
get_agent_guide_tool 先叫这个。 返回完整的代理指南:工作流、过滤器、令牌保存规则。使用其他工具时,请遵循它。
list_log_files_tool 列出可用的日志文件(可选地来自给定目录)。
load_log_tool 加载并索引日志文件一次;返回总计、时间跨度(第一个/最后一个)、级别、类别、对象计数(无对象列表)。缓存以供以后查询。
log_summary_tool 仅计数(无原始行):总计匹配、计数_级别、计数_类别、计数_对象。可选过滤器:time_start、time_end(ms)、级别、类别、对象名称等。
object_summary_tool 必修的: 路径、类别、time_start、time_end(ms)。返回不同对象的每级计数和完整对象列表。用于发现对象名称,然后使用query_logs缩小范围。
query_logs_tool 得到线。 必修的: 路径、类别、time_start、time_end(ms)。可选:级别、对象名称、搜索等。默认限制为50,最大限制为2000。如果总匹配数>100,你会得到 无行 --只有total_matching、object_count和一条消息;首先使用logsummary和窄过滤器。

资源: gst-logs://agent-guide –内容与代理指南相同(适用于支持MCP资源的客户端)。

工作流程: 1) 获取代理指南 (一次)。2)如果路径未知,则列出_log_files。3)每个文件加载一次→ 时间跨度、级别、类别、对象计数。4)带过滤器的log_summary或object_summary(类别+时间(毫秒))→ 得到计数。5)如果total_matching很小(≤100),则query_logs具有相同的类别+时间(+可选的object_name/level/search)。

对于代理商: 呼叫 get_agent_guide_tool 开始时,或读取资源 gst-logs://agent-guide.完整指南: AGENT_GUIDE_GST_LOGS_MCP.md.

测试(无MCP客户端)

从项目根:

python scripts/test_mcp_tools.py

使用与服务器相同的核心;打印list_log_files、load_log、log_summary(时间单位为毫秒)、object_summary、query_logs的SENT/GOT。测试中的时间是整数毫秒(例如0、5000、10500)。文件夹 gst_log_files/ 被忽视;集 GST_LOGS_MCP_LOG_DIR 添加到包含GStreamer调试日志的目录中,或为CI添加一个小示例日志。