Labsco
MCP SERVER

Journald MCP server

by james116blue

Read systemd journal logs by unit, time window and message text.

Observability, Monitoring & Incident Response
Summary
journalctl's useful filters, reachable from the conversation.

The filters are the point: unit, identifier, time window and a message match, all in one call, with 'since' and 'until' accepting phrases like '2 hours ago'. It reads the journal on the host it runs on, so it answers questions about that machine and no other.

What it is

A Python server over the systemd journal on a Linux host: filtered entry queries, plus resources that list the units and syslog identifiers the journal knows about.

What you get
  • Journal entries filtered by time range, systemd unit, syslog identifier and case-insensitive message match, combined in one call
  • Time bounds written in plain language — '2 hours ago', 'yesterday at 3pm'
  • The last N minutes of logs in a single call
  • Each entry returned with its timestamp, unit, identifier and message
  • The units and syslog identifiers present in the journal, for all time or within a range
  • Stdio, SSE or streamable-HTTP transport, picked at launch with `--transport`
Requirements

A Linux host running systemd, and read access to the journal — add the account to the systemd-journal group if it is not root (`usermod -aG systemd-journal $USER`). Dependencies install with `uv sync`; the server starts as `uv run server.py`.