mcpField
J
Journald MCP Server

Journald MCP Server

本地服务
github.com/james116blue数据与分析145 周前更新

关于 Journald MCP Server

Journald MCP Server 让系统管理员通过 MCP 检查 systemd 日志,支持按时间、单元、标识符和消息筛选,并可解析自然语言日期范围。

主要功能

  1. 01列出单元和 syslog 标识符
  2. 02按时间范围筛选条目
  3. 03按单元或标识符筛选
  4. 04不区分大小写搜索消息
  5. 05解析自然语言日期

适用场景

  1. 01排查近期服务错误
  2. 02查看指定单元的日志
  3. 03搜索时间范围内的消息

MCP 相关

该服务提供用于查询单元、标识符和首条日志日期的资源,并提供获取筛选日志或近期日志的工具。

配置

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

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

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

安装包
pypijournald-mcp-server0.1.0

工具

还没有获取到工具列表

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

详细介绍

Journald MCP 服务

一个用于访问 systemd 日志的 MCP 服务。

功能

  • 列出日志中的 systemd 单元
  • 列出日志中的 syslog 标识符
  • 获取第一条日志条目的日期和时间
  • 按日期时间范围(since/until)筛选日志条目
  • 按 systemd 单元或 syslog 标识符筛选
  • 按消息内容筛选(不区分大小写的子字符串匹配)
  • 解析自然语言日期和时间(例如,“2 hours ago”“yesterday at 3pm”)
  • 列出特定时间范围内的单元和标识符

安装

# Install dependencies
uv sync

用法

以非 root 用户身份运行:授予用户 systemd-journal 组访问权限 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
示例
  1. 使用 stdio 传输运行(默认,适用于通过 stdin/stdout 通信的 MCP 客户端):

    python server.py
    
  2. 使用 HTTP 传输并指定自定义端口运行:

    python server.py --transport streamable-http --port 8080
    
  3. 使用 SSE 传输运行:

    python server.py --transport sse --port 3000
    
  4. 使用调试日志运行:

    python server.py --log-level DEBUG
    

MCP 集成

该服务提供以下 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 小时内包含“error”的日志:since="2 hours ago", message_contains="error"
  • get_recent_logs:获取过去 N 分钟内的最新日志

    • 参数:minutes(默认值:60)、unit(可选)、limit(默认值:50)
    • 返回:格式化后的最新日志消息字符串
日期和时间输入格式

该服务通过 dateparser 库解析自然语言日期和时间。支持的格式包括:

  • 相对时间:“2 hours ago”“yesterday at 3pm”“last week”“now”
  • 绝对时间:“2024-01-15 14:30”“2024-01-15T14:30:00”
  • 混合格式:“today at 9am”“tomorrow 3pm”

所有时间均按 UTC 解释,并以便于阅读的格式返回:“YYYY-MM-DD HH:MM:SS UTC”

开发

本项目使用:

  • Python 3.12+
  • MCP FastMCP
  • systemd-python 访问日志
  • Click 提供 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/

评论

支持 Markdown

第一次接触 MCP?

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

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