日志MCP服务器
用于访问systemd日志的MCP服务器。
特性
- 从日志中列出systemd单位
- 从日志中列出syslog标识符
- 获取第一条日记账分录的日期时间
- 按日期时间范围(从/到)筛选日记条目
- 按systemd单元或syslog标识符筛选
- 按消息内容筛选(不区分大小写的子字符串匹配)
- 自然语言日期时间解析(例如,“2小时前”、“昨天下午3点”)
- 列出特定时间范围内的单位和标识符
安装
# Install dependencies
uv sync用法
以非root身份运行:授予用户systemd日志组访问权限 usermod -aG systemd-journal $USER
使用以下命令运行服务器:
uv run server.py [OPTIONS]CLI选项
--transport:要使用的传输协议(stdio,sse,或streamable-http).违约:stdio--port:用于侦听HTTP传输的端口(忽略stdio运输)。违约:3002--log-level:日志记录级别(DEBUG,INFO,WARNING,ERROR,CRITICAL).违约:INFO
例子
- 使用stdio传输运行(默认情况下,对于通过stdin/stdout通信的MCP客户端):
python server.py- 在自定义端口上使用HTTP传输运行:
python server.py --transport streamable-http --port 8080- 使用SSE传输运行:
python server.py --transport sse --port 3000- 运行调试日志:
python server.py --log-level DEBUGMCP集成
服务器提供以下MCP资源和工具:
资源
journal://units:列出日记日志中的唯一systemd单位(所有可访问时间)journal://syslog-identifiers:列出日志日志中的唯一syslog标识符(所有可访问时间)journal://first-entry-datetime:获取日记中第一条记录的日期时间journal://units/{since}/{until}:列出指定时间范围内的唯一systemd单位journal://syslog-identifiers/{since}/{until}:列出指定时间范围内的唯一syslog标识符
工具
get_journal_entries:获取具有日期时间过滤的日记条目
- 参数: since (可选), until (可选), unit (可选), identifier (可选), message_contains (可选), limit (默认值:100) - 返回:包含时间戳、单位、标识符和消息的条目列表 - 示例:获取过去2小时包含“错误”的日志: since="2 hours ago", message_contains="error"
get_recent_logs:获取最近N分钟的日志
- 参数: minutes (默认值:60), unit (可选), limit (默认值:50) - 返回:最近日志消息的格式化字符串
日期时间输入格式
服务器通过以下方式使用自然语言日期时间解析 dateparser 图书馆。支持的格式包括:
- 相对时间:“2小时前”、“昨天下午3点”、“上周”、“现在”
- 绝对时间:“2024-01-15 14:30”,“2024-01-15T14:30:00”
- 混合:“今天上午9点”,“明天下午3点”
所有时间都被解释为UTC,并以人类可读的格式返回:“YYYY-MM-DD HH:MM:SS UTC”
发展
本项目使用:
- Python 3.12+
- 主控程序 FastMCP
- 用于日志访问的systemd-python
- 单击以查看CLI界面
- 用于自然语言日期时间解析的dateparser
项目结构
journald-mcp-server/
├── journald_mcp_server/ # Main package
│ ├── __init__.py
│ ├── server.py # MCP server implementation
│ └── datetime_utils.py # Datetime parsing and formatting utilities
├── tests/ # Test suite
│ ├── __init__.py
│ └── test_server.py
├── server.py # Entry point wrapper
├── pyproject.toml
└── README.md运行测试
python -m pytest tests/