mcp-systemd-crunchtools
MCP server for systemd unit management via D-Bus. Manages the full lifecycle of any systemd unit — not just Podman-managed containers: listing, status, lifecycle control, unit file authoring and decommissioning, journal queries, failed-unit and job triage, timers, host info, and login sessions.
Installation
# uvx (zero-install)
uvx mcp-systemd-crunchtools
# pip
pip install mcp-systemd-crunchtools
# Container
podman run \
-v /run/dbus/system_bus_socket:/run/dbus/system_bus_socket \
-v /etc/systemd/system:/etc/systemd/system:Z \
--security-opt label=type:container_runtime_t \
quay.io/crunchtools/mcp-systemd
The D-Bus socket mount is required for every tool. The /etc/systemd/system mount is only required for unit_file_write_tool and unit_file_remove_tool — omit it to run the server read/lifecycle-only.
Configuration
| Variable | Required | Default | Description |
|---|---|---|---|
DBUS_SYSTEM_BUS_SOCKET |
No | /run/dbus/system_bus_socket |
D-Bus system bus socket path |
SYSTEMD_UNIT_DIR |
No | /etc/systemd/system |
Directory unit_file_write/remove operate on |
SYSTEMD_EXTRA_PROTECTED_UNITS |
No | — | Comma-separated units added to the built-in denylist |
Protected units
unit_stop, unit_restart, unit_disable, unit_mask, and unit_file_remove refuse to act on a small built-in denylist of core system units (dbus, sshd, networking, logind, journald). This cannot be bypassed — it exists so an agent can't take down the box it's running on. Add more units with SYSTEMD_EXTRA_PROTECTED_UNITS.
Claude Code Integration
claude mcp add mcp-systemd-crunchtools \
-- uvx mcp-systemd-crunchtools
Tools (21)
Units (3)
| Tool | Description |
|---|---|
unit_list |
List loaded units or installed unit files |
unit_status |
Curated status (active state, PID, memory, CPU) |
unit_show |
Full property dump (deps, exec settings, cgroup) |
Lifecycle (9)
| Tool | Description |
|---|---|
unit_start |
Start a unit |
unit_stop |
Stop a unit (protected-list guarded) |
unit_restart |
Restart a unit (protected-list guarded) |
unit_reload |
Reload a unit's config without restarting |
unit_enable |
Enable a unit to start on boot |
unit_disable |
Disable a unit from starting on boot (protected-list guarded) |
unit_mask |
Mask a unit (protected-list guarded) |
unit_unmask |
Unmask a unit |
daemon_reload |
Reload systemd's unit file cache |
Unit files (2)
| Tool | Description |
|---|---|
unit_file_write |
Write a new unit file (backs up any file it overwrites) |
unit_file_remove |
Decommission: stop, disable, back up, remove (protected-list guarded) |
Troubleshooting (3)
| Tool | Description |
|---|---|
journal_query |
Filtered journal query (unit, priority, since/until, pattern, boot) |
failed_units |
List units in the 'failed' state |
list_jobs |
List pending/stuck jobs |
Timers (1)
| Tool | Description |
|---|---|
timer_list |
List timers with next/last elapse |
System (2)
| Tool | Description |
|---|---|
system_status |
Manager state: running/degraded, failed/job counts, version |
hostinfo |
Hostname, kernel, OS |
Sessions (1)
| Tool | Description |
|---|---|
session_list |
Who's logged in right now |
License
AGPL-3.0-or-later
Release files for mcp-systemd-crunchtools 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mcp_systemd_crunchtools-0.1.0.tar.gz | 40.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_systemd_crunchtools-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 71.9 kB
Release files / mcp_systemd_crunchtools-0.1.0.tar.gz
| Download URL | mcp_systemd_crunchtools-0.1.0.tar.gz |
|---|---|
| Size | 40.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3f906f8035c142a478bc48a52db9eb37133e34ea6338365b2e21fab44aa495ac
|
|
BLAKE2b-256 checksum How to use checksums |
89c8beead90a934e55774ba1c32de70bf32867243514f4e782cc7f28c350d4ba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.
Transparency logRelease files / mcp_systemd_crunchtools-0.1.0-py3-none-any.whl
| Download URL | mcp_systemd_crunchtools-0.1.0-py3-none-any.whl |
|---|---|
| Size | 31.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
718fd71a945139b2d2aff7eb12e223ee7739000a543f564bc0746f3dd80721c0
|
|
BLAKE2b-256 checksum How to use checksums |
24d45873aa7cb12727a1537c4240eef6d955194044ee06d9f2b8ca94d2e3e0a3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.
Transparency log