arch-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ARCH_MCP_KEY | No | Path to the SSH private key used to connect to the target host. | |
| ARCH_MCP_HOST | No | Hostname or IP address of the Linux host to administer over SSH. | |
| ARCH_MCP_MODE | No | Operation mode. Readonly by default; mutations require ARCH_MCP_MODE=write plus a two-step confirmation token; admin mode is required for exec_any, script_run and raw_exec. | |
| ARCH_MCP_PORT | No | SSH port on the target host. | |
| ARCH_MCP_USER | No | SSH user used to connect to the target host. | |
| ARCH_MCP_RULES | No | Host owner rules exposed via the arch://rules MCP resource (otherwise read from ~/.config/arch-mcp/rules.md). | |
| ARCH_MCP_PROFILE | No | Tool profile to load: core (default, 12 tools), readonly (63 tools) or full (109 tools). | |
| ARCH_MCP_ALLOW_RAW | No | Set to 1 to enable raw_exec (only allowed when mode is admin; accepts only a binary allowlist, never shells). | |
| ARCH_MCP_ALLOW_SUDO | No | Set to 1 to run tools with sudo -n as the same SSH user (requires NOPASSWD sudoers rules on the remote side). | |
| ARCH_MCP_HTTP_TOKEN | No | Bearer token for the optional HTTP transport (requires at least 16 characters); without it the HTTP endpoint is open. | |
| ARCH_MCP_SUDO_ALLOW | No | Optional comma-separated list restricting sudo to specific binaries or prefixes (e.g. useradd,usermod,userdel,groupadd,chown,resolvectl,ip,renice). | |
| ARCH_MCP_GAP_ENDPOINT | No | Collector endpoint to which gap reports are sent (see scripts/gap-receiver.mjs). |
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
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| sys_infoA | Host identity: hostname, kernel, distro, arch, uptime, virtualization, CPU cores and memory. Call it first to learn what host you are on. |
| sys_statusA | One call health snapshot: load, memory, disks, failed units, pending updates, reboot flag, max temperature and top processes. Use it to answer "is the server healthy?". |
| proc_listA | Processes filtered and sorted by CPU, memory or PID. Use it to find what consumes resources; rss is in bytes. |
| svc_listB | Systemd units filtered by state, name or type. Returns unit, active and sub; detailed adds description and load state. |
| svc_statusA | State, main PID, start time, restarts, memory, tasks and last error of one systemd unit. Use it before reading logs. |
| svc_failedA | Failed systemd units with their last error lines. Answers "why did it fail?" without pulling the whole journal. |
| log_queryA | Journal entries filtered by unit, priority, time window or message text. Returns ts, prio and msg only; detailed adds unit, pid and boot. |
| log_errorsA | Errors and worse from the current boot, deduplicated by unit and message with counts. Use it to spot recurring failures. |
| pkg_statusB | Pending updates, orphans, sync age and cache size. Works without checkupdates; AUR updates are counted when yay or paru exists. |
| net_portsA | Listening TCP/UDP ports with the owning process. Answers "is the port up?" and "who holds it?". |
| fs_usageA | Used space and inode usage per real mount. Pseudo filesystems are excluded unless include_pseudo is set. |
| host_capabilitiesA | Which tools and features this host has (pacman, journald, sensors, nftables, AUR...), detected once at startup. Use it before calling a tool that may be unsupported. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| rules | Owner rules for this host: ports, critical services, what not to touch. |
| capabilities | Detected tools and features (pacman, journald, sensors, nftables...). |
| cheatsheet | Which tool answers which question. |
TDQS
Scored across 12 tools
Each tool targets a distinct resource or question: host identity (sys_info), health snapshot (sys_status), capabilities (host_capabilities), disks (fs_usage), processes (proc_list), services (svc_list/svc_status/svc_failed), logs (log_query/log_errors), packages (pkg_status) and ports (net_ports). The aggregate-vs-detail pairs (sys_status vs fs_usage/proc_list, log_query vs log_errors, svc_list vs svc_status) are explicitly framed as summary versus drill-down, so an agent can choose correctly.
All names are lower snake_case and follow a predictable domain-prefix + operation pattern (sys_, host_, fs_, proc_, svc_, log_, pkg_, net_). Within each domain the suffix consistently distinguishes list/status/query variants, so related tools sort and read together.
Twelve tools is well within the sweet spot and each covers a distinct area of host inspection. No tool feels redundant or padded; the grouping (health, systemd, logs, packages, network) is coherent for a server admin MCP.
The surface is comprehensive for read-only diagnostics: identity, health, capabilities, disk, process, service, log, package and port visibility are all present with no obvious dead ends. Minor gaps remain for a sysadmin domain (e.g. service start/stop/restart, package install/update actions, disk SMART or network interface detail), but those are arguably out of scope for a monitoring-focused server.