journalmcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| JOURNALMCP_REPO | No | Path to the journalmcp checkout when it is not at $HOME/Projects/journalmcp. The wrapper uses this to locate the repository. | |
| JOURNALMCP_REDACT | No | Controls redaction of secrets in journal text, unit files, and unit properties. On by default; set to off to disable redaction. Any other value is an error. | on |
| JOURNALMCP_REDACT_PATTERNS | No | Path to a file containing additional redaction regular expressions, one per line. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_unitsB | List the units systemd has in memory (systemctl list-units --all). Read-only. scope is 'user' or 'system'. state filters on a LOAD, ACTIVE or SUB state, type on a unit type such as 'service', pattern on a glob over unit names. |
| failed_unitsA | List the failed units of one manager. Read-only. scope is 'user' or 'system'. |
| list_timersB | List the timers of one manager, with next and last run times in microseconds since the epoch. Read-only. scope is 'user' or 'system'. |
| unit_statusA | One unit's load, active and sub state, result and main PID, plus its last journal entries (default 20, at most 1000). Read-only. Text is redacted and capped at 4096 bytes per value and 65536 bytes in all; a cut value ends in [TRUNCATED] and sets truncated to true. |
| journalA | Journal entries, oldest first, reduced to an allowlist of fields. Read-only. Filters: unit, since and until (such as '2026-10-03 12:00' or '-1h'), priority (such as 'err' or 'warning..crit'), grep (a regular expression on MESSAGE), lines (default 100, at most 1000). Secrets are redacted; text is capped at 4096 bytes per value and 65536 bytes in all, and a cut ends in [TRUNCATED] and sets truncated to true. |
| bootsA | The boots the journal records; index 0 is the current boot. Read-only. |
| unit_fileB | The unit file text as systemctl cat prints it. Read-only. Redacted, and capped at 65536 bytes; a cut ends in [TRUNCATED] and sets truncated to true. |
| system_summaryB | The system manager's state word, failed-unit and timer counts for both managers, and the current boot's first-entry time. Read-only. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| triage_failed_unit | Find out why one systemd unit failed, using the read-only tools. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Most tools target distinct resources: boots, journal, unit_file, system_summary are clearly separate. However, failed_units is essentially a filtered subset of list_units, and unit_status overlaps with journal for a single unit, though descriptions clarify intended use.
Names are all lowercase snake_case and readable, with noun_phrase style (list_units, unit_status, unit_file). Minor deviation: 'boots' and 'journal' are bare nouns that don't follow the verb_noun or list_ pattern used elsewhere, but the convention is largely predictable.
Eight tools is well-scoped for a read-only systemd/journal inspection server, with each tool covering a meaningful slice of the domain without redundancy bloat.
For a read-only diagnostic surface, coverage is strong: units, failed units, timers, boots, journal filtering, unit files, and a system summary. Minor gaps like journal disk usage/rotation stats or per-boot statistics are absent but not blocking.