ubuntu-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| UBUNTU_MCP_HOST_KEYS | No | Path to the host keys store file (default is '.host-keys.json' next to servers.json). | |
| UBUNTU_MCP_KEY_PASSPHRASE | No | Passphrase for the SSH private key, if the key has one and is not loaded in ssh-agent. | |
| UBUNTU_MCP_HOST_KEY_CHECKING | No | Host key verification policy: 'tofu' (default) trust-on-first-use, 'strict' refuse unknown hosts, 'off' accept any host key. | tofu |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ubuntu_list_serversA | List all Ubuntu servers configured in the inventory (servers.json), with their connection details. Call this first to discover valid values for the 'server' parameter used by every other ubuntu_* tool. Args:
Returns: name, host, port, username and description for each configured server. Does not contact the servers, so a listed server is not necessarily reachable right now. |
| ubuntu_system_overviewA | Get a one-shot health overview of an Ubuntu server: hostname, OS release, kernel, uptime, load average, memory usage, disk usage, whether a reboot is required, and any failed systemd services. This is the best first call when asked "how is server X doing?" — it gathers everything in a single SSH round trip. Args:
Returns: the sections listed above; memory and disk are the raw 'free -h' / 'df -h' tables. |
| ubuntu_list_servicesA | List systemd services on an Ubuntu server, optionally filtered by state. Args:
Returns: unit name, active/sub state, and description per service, with pagination metadata (total, has_more, next_offset). Example: state='failed' answers "is anything broken on web-01?" |
| ubuntu_service_statusA | Show detailed status of one systemd service: the full 'systemctl status' output (state, recent log lines, PID, memory) plus whether it is enabled at boot. Args:
Returns: raw status text plus parsed active_state ('active'/'inactive'/'failed') and enabled state ('enabled'/'disabled'/'static'). Error handling: reports if the unit does not exist and suggests ubuntu_list_services to find the right name. |
| ubuntu_manage_serviceA | Start, stop, restart, reload, enable, or disable a systemd service. Runs via 'sudo -n', so the server must allow passwordless sudo for the configured user. Args:
Returns: confirmation plus the service's state after the action. Error handling: if sudo requires a password the error explains how to configure passwordless sudo. 'reload' fails for services that don't support it — use 'restart' instead. |
| ubuntu_check_updatesA | List pending apt package updates on an Ubuntu server, flag security updates, and report whether a reboot is required. Does NOT install anything. Args:
Returns: total pending updates, security update count, reboot-required flag, and per-package old → new versions. To actually install updates, use ubuntu_run_command with sudo, e.g. command='apt-get upgrade -y' sudo=true — after confirming with the user. |
| ubuntu_tail_logA | Read recent log lines from an Ubuntu server — either from the systemd journal (journalctl) or from a log file — optionally filtered to lines containing a search string. Args:
Returns: the matching log lines as plain text. Error handling: permission errors suggest use_sudo=true or adding the user to the 'adm'/'systemd-journal' groups. Examples:
|
| ubuntu_run_commandA | Run an arbitrary shell command on a configured Ubuntu server over SSH and return stdout, stderr, and the exit code. Prefer the specialized tools when they fit (ubuntu_system_overview, ubuntu_list_services, ubuntu_service_status, ubuntu_check_updates, ubuntu_tail_log) — they produce cleaner output. Use this tool for everything they don't cover. Args:
Returns: exit code plus stdout/stderr text, also available as structured content. Error handling:
|
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 8 tools
Each tool has a clearly distinct purpose: inventory listing, health overview, service listing/status/management, update checking, log reading, and a fallback shell command. The descriptions explicitly note when to prefer specialized tools over the generic runner, eliminating ambiguity.
All tools share the consistent 'ubuntu_' prefix and use lowercase with underscores. Most follow a verb_noun pattern (list_servers, manage_service, tail_log), but 'system_overview' and 'service_status' deviate to noun-first style, creating a minor inconsistency in the otherwise predictable naming convention.
The 8 tools are well-scoped for an Ubuntu server management MCP. The count is neither too small to cover common tasks nor too large to add confusion, and each tool earns its place in the set.
The surface covers the core server administration lifecycle: listing inventory, health checks, service management, update checks, log inspection, and a generic command runner for everything else. The fallback ensures no dead ends and the specialized tools cover the most frequent operations.