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添加一个小示例日志。
