Monitor and manage Linux infrastructure through Claude. Systemd services, nginx, Docker, cron, disk/memory/ports, and aggregate health checks.
Strong foundation with 10 well-named tools, comprehensive descriptions (avg 180 chars), and complete Zod schemas with type constraints and enums. All tools are READ_ONLY with clear, actionable descriptions. However, output schemas are not explicitly documented in the visible code, only input schemas are defined. Error handling is present but generic (withErrorHandling wrapper). No tool annotations (readOnlyHint, etc.) despite all being read-only. Parameter descriptions are solid but some lack format guidance (e.g., 'since' in service_logs accepts journalctl specs but doesn't explain the format). Missing per-tool output schema documentation limits downstream tool chaining clarity.
List cron jobs for the current user, a specific user, or all users. Also shows system cron files from /etc/crontab and /etc/cron.d/. Includes cron.daily, cron.weekly, and cron.monthly summaries.
Show disk space usage by filesystem/mount point. Includes both space and inode usage. Excludes virtual filesystems (tmpfs, devtmpfs) for clarity. Essential for preventing disk-full outages.
Inspect Docker containers, images, networks, volumes, and resource usage. Gracefully reports if Docker is not installed or the daemon is stopped. The 'overview' action gives a quick summary; 'stats' shows live CPU/memory per container.
Show RAM and swap usage. In detailed mode, includes buffer/cache breakdown from /proc/meminfo. Also reports system load averages for context.
Read, validate, and inspect nginx configuration. Actions: 'show' reads the main config or a specific site, 'test' runs nginx -t validation, 'list_sites' shows enabled/available sites, 'full_config' dumps the fully resolved configuration.
Output schemas not documented. Tool descriptions explain what is returned (e.g., 'Shows whether it's active/inactive/failed, its enabled state, PID, memory usage') but formal output schema definitions are absent from visible code. LLMs cannot reliably extract fields for downstream tool chaining.
No tool annotations despite all tools being read-only. MCP spec supports readOnlyHint, destructiveHint, and idempotentHint annotations. All 10 tools should declare readOnlyHint=true to signal safety to agents.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
List all listening TCP/UDP ports with their associated processes. Can filter to a specific port number or protocol. Uses 'ss' (modern) with 'netstat' fallback. Useful for checking what services are exposed.
List running processes with CPU, memory, and runtime details. Sort by CPU or memory to find resource hogs. Filter by process name to find specific applications.
Fetch recent journal logs for a systemd service. Supports filtering by time range, priority level, and grep patterns. Useful for debugging service issues and monitoring application output.
Check the status of a systemd service. Shows whether it's active/inactive/failed, its enabled state, PID, memory usage, and recent log lines from systemctl status output.
Run an aggregate health check across the entire system. Checks load averages, memory/swap usage, disk space (with inode check), failed systemd services, and listening port count. Returns clear HEALTHY/ISSUES DETECTED status with specific warnings and thresholds. This is the go-to tool for a quick 'is everything OK?' check.
Parameter format guidance incomplete. 'since' in service_logs accepts journalctl time specs ('1h ago', '2024-01-15', 'today') but description doesn't explain the format. 'action' in nginx_config and docker_status use enums but lack guidance on when to use each action.
Error handling is generic. withErrorHandling wrapper catches errors but visible code does not show recovery guidance. Errors should tell LLMs what to do next (e.g., 'Service not found. Try service_list() to see available services').
No pagination support for list tools. process_list, cron_list, and docker_status (containers/images) return limited results (default 20-50) but lack offset/limit or cursor parameters. Large result sets could exceed context windows without pagination.