io.github.crunchtools/systemd
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SYSTEMD_UNIT_DIR | No | Directory unit_file_write/remove operate on | /etc/systemd/system |
| DBUS_SYSTEM_BUS_SOCKET | No | D-Bus system bus socket path | /run/dbus/system_bus_socket |
| SYSTEMD_EXTRA_PROTECTED_UNITS | No | Comma-separated units added to the built-in denylist |
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": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| unit_list_toolC | List systemd units. |
| unit_status_toolB | Get curated status for a unit: active/sub/load state, PID, memory, CPU. |
| unit_show_toolB | Dump the full property set for a unit (dependencies, exec settings, cgroup, etc). |
| unit_start_toolC | Start a unit. |
| unit_stop_toolB | Stop a unit. Refused for units on the protected list. |
| unit_restart_toolB | Restart a unit. Refused for units on the protected list. |
| unit_reload_toolA | Ask a unit to reload its configuration without restarting. |
| unit_enable_toolC | Enable a unit to start on boot. |
| unit_disable_toolB | Disable a unit from starting on boot. Refused for units on the protected list. |
| unit_mask_toolA | Mask a unit so it cannot be started even manually. Refused for protected units. |
| unit_unmask_toolA | Unmask a previously masked unit. |
| daemon_reload_toolA | Reload systemd's unit file cache (equivalent to systemctl daemon-reload). Returns: Reload confirmation |
| unit_file_write_toolA | Write a new unit file for setting up a service. Backs up any file it overwrites. Requires the host's unit directory (default /etc/systemd/system) to be bind-mounted into the container. Runs daemon-reload after writing. |
| unit_file_remove_toolA | Decommission a unit: stop, disable, optionally mask, back up and remove its file. Refused for units on the protected list. Best-effort on stop/disable — a unit that's already stopped or was never enabled doesn't block file removal. |
| journal_query_toolB | Query the journal — the main 2AM troubleshooting tool. |
| failed_units_toolA | List units currently in the 'failed' state — the first thing to check at 2AM. Returns: List of failed units with count |
| list_jobs_toolA | List pending systemd jobs — reveals stuck starts/stops/reloads. Returns: List of pending jobs with count |
| timer_list_toolA | List systemd timers with their next and last elapse times. Returns: List of timers with count |
| system_status_toolA | Get overall systemd manager state: running/degraded, failed and job counts. Returns: SystemState, Version, NFailedUnits, NJobs, NNames |
| hostinfo_toolA | Get host identity info: hostname, kernel, OS. Returns: Hostname, kernel, and OS details |
| session_list_toolA | List logged-in sessions — who's on this box right now. Returns: List of sessions with count |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 21 tools
Most tools have clearly distinct resource+action targets; lifecycle verbs (start/stop/restart/reload/enable/disable/mask/unmask) are distinct, and listing tools split by domain (units, timers, jobs, sessions, failed units). Minor overlap exists between unit_status_tool and unit_show_tool, and between system_status_tool and failed_units_tool, but descriptions clarify their boundaries.
Almost all names follow a consistent snake_case <subject>_<action>_tool pattern (unit_start_tool, timer_list_tool, journal_query_tool), which is predictable. Small deviations like list_jobs_tool and hostinfo_tool break the pattern slightly but remain readable and unambiguous.
21 tools is on the heavier side but each maps to a real systemd operation: unit lifecycle, journal querying, timers, jobs, failed units, system/host/session status. No obvious redundant tool; scope is broad but coherent for a systemd administration server.
Strong lifecycle coverage: list/status/show/start/stop/restart/reload/enable/disable/mask/unmask, plus file write/remove, daemon-reload, journal, timers, jobs, failed units, and system/host/session status. Minor gaps like reset-failed, unit kill, or journal maintenance exist but core admin workflows are covered.