Ubuntu Control MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| UBUNTU_CONTROL_MODE | No | The permission mode the server runs in: SAFE, NORMAL, or ADMIN. Defaults to normal. | normal |
| UBUNTU_CONTROL_PORT | No | Port to listen on when using HTTP transport. | 8000 |
| UBUNTU_CONTROL_CONFIG | No | Path to the configuration file. Defaults to ~/.config/ubuntu-control-mcp/config.json. | |
| UBUNTU_CONTROL_AUDIT_LOG | No | Path to an audit log file. If set, all operations are logged. | |
| UBUNTU_CONTROL_TRANSPORT | No | Transport protocol: 'stdio' (default) or 'http'. | stdio |
| UBUNTU_CONTROL_AUTO_APPROVE | No | Set to 1 to automatically approve high/medium risk operations without user confirmation. Only for trusted environments. | 0 |
| UBUNTU_CONTROL_SUDO_PASSWORD | No | Sudo password for administrative operations. | |
| UBUNTU_CONTROL_DESKTOP_ENABLED | No | Whether desktop control features are enabled. Use '1' or 'true' to enable. |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| system_infoB | Statikus gepinformacio: OS, kernel, hostnev, CPU modell, magok, ossz RAM, uptime. Args: params (HostOnlyInput): host (opcionalis), response_format. Returns: str: Markdown vagy JSON a kovetkezo mezokkel: hostname, os, kernel, architecture, cpu_model, cpu_cores, total_memory, uptime, boot_time. |
| system_statusA | Gyors egeszseg-pillanatkep: CPU%, RAM, swap, disk (/), load average, top 5 folyamat. Args: params (HostOnlyInput): host (opcionalis), response_format. Returns: str: Osszefoglalo a legfontosabb terhelesi mutatokkal. |
| cpu_usageB | Reszletes CPU hasznalat: osszesitett es magonkenti szazalek, load average. Args: params (HostOnlyInput): host, response_format. Returns: str: CPU mutatok. |
| memory_usageA | RAM es swap reszletes hasznalata (total / used / free / available / cache). Args: params (HostOnlyInput): host, response_format. Returns: str: Memoria mutatok. |
| disk_usageA | Csatolt fajlrendszerek kihasznaltsaga (df -h ekvivalens). Args: params (HostOnlyInput): host, response_format. Returns: str: Fajlrendszerek listaja meret / hasznalt / szabad / szazalek bontasban. |
| network_statusB | Halozati interfeszek, IP-cimek, alapertelmezett atjaro, DNS es egy internet-teszt. Args: params (HostOnlyInput): host, response_format. Returns: str: Halozati osszefoglalo. |
| process_listA | Futo folyamatok listaja szuressel, rendezessel es limittel. Args: params (ProcessListInput): filter, sort_by ('cpu'|'memory'|'pid'), limit, host, response_format. Returns: str: Folyamatok: pid, felhasznalo, CPU%, MEM%, parancs. |
| logsA | Rendszernaplok olvasasa: journalctl (unit szerint) vagy konkret logfajl. Args: params (LogsInput): unit VAGY path, lines, since, grep, host, response_format. Returns: str: A kert naplosorok. |
| service_statusA | Egy systemd szolgaltatas allapota (aktiv-e, engedelyezett-e, utolso naplosorok). Args:
params (ServiceStatusInput): name, host, response_format.
Returns:
str: |
| set_modeA | A szerver engedely-modjanak valtoztatasa (SAFE / NORMAL / ADMIN). A modot LEFELE barmikor lehet allitani. FELFELE allitashoz mar ADMIN modban kell lenni - kulonben a UBUNTU_CONTROL_MODE kornyezeti valtozoval kell inditani a szervert. Ez szandekos: a modell ne tudja sajat magat feljebb emelni. Args: params (SetModeInput): mode, persist. Returns: str: Megerosites az uj modrol. |
| apt_updateA | Csomaglistak frissitese ('apt-get update'). Nem telepit es nem frissit semmit. Args: params (AptSimpleInput): host, response_format. Returns: str: Az apt update kimenete. |
| apt_list_upgradableA | Lista arrol, mely csomagok frissithetok most (nem futtat frissitest). Args: params (AptSimpleInput): host, response_format. Returns: str: Frissitheto csomagok (nev, jelenlegi -> uj verzio). |
| apt_upgradeA | A telepitett csomagok frissitese. RENDSZERSZINTU valtoztatas - megerositest ker. Ajanlott elotte az 'apt_update' es 'apt_list_upgradable' lefuttatasa, hogy lasd, mi fog valtozni. Args: params (AptUpgradeInput): full (bool), host, response_format. Returns: str: A frissites kimenete + a vegso allapot ellenorzese. |
| apt_installB | Egy vagy tobb csomag telepitese APT-vel. Args: params (AptPackagesInput): packages (lista), host, response_format. Returns: str: A telepites kimenete. |
| apt_removeA | Egy vagy tobb csomag eltavolitasa. RENDSZERSZINTU valtoztatas - megerositest ker. Args: params (AptPackagesInput): packages (lista), host, response_format. Returns: str: Az eltavolitas kimenete. |
| apt_searchB | Csomag kereses nev / leiras alapjan ('apt-cache search'). Args: params (AptSearchInput): query, host, response_format. Returns: str: Talalati lista. |
| apt_showA | Reszletes informacio egy vagy tobb csomagrol ('apt-cache show'). Args: params (AptPackagesInput): packages, host, response_format. Returns: str: Csomag metaadatok. |
| snap_listA | Telepitett snap csomagok listaja. Args: params (AptSimpleInput): host, response_format. Returns: str: Snap lista. |
| snap_installC | Snap csomag telepitese. Args: params (AptPackagesInput): packages, host, response_format. Returns: str: A telepites kimenete. |
| snap_removeA | Snap csomag eltavolitasa. Megerositest ker. Args: params (AptPackagesInput): packages, host, response_format. Returns: str: Az eltavolitas kimenete. |
| terminal_openA | Uj, hosszu eletu interaktiv shell munkamenet nyitasa. Lokalis (host=None): valos PTY, a curses/kepernyokezelo programok is mukodnek. Tavoli (host=nev): SSH interaktiv shell a konfiguralt gepen. Args: params (TerminalOpenInput): host, shell, cwd, response_format. Returns: str: A letrejott terminal azonositoja + a kezdeti prompt kimenete. |
| terminal_writeA | Szoveg / parancs kuldese egy nyitott terminalba. Args: params (TerminalWriteInput): terminal_id, data, enter, read_after. Returns: str: Megerosites, es ha read_after igaz, az uj kimenet. |
| terminal_readB | Az adott terminal ota felgyult uj kimenetenek leolvasasa. Args: params (TerminalReadInput): terminal_id, drain_seconds. Returns: str: Az uj kimenet (ures, ha nem tortent semmi). |
| terminal_waitA | Varakozas: amig egy regex minta megjelenik, VAGY amig a kimenet elcsendesedik. Hasznos hosszu parancsoknal (build, telepites) vagy szerver-inditasnal ("Listening on port 3000"). Args: params (TerminalWaitInput): terminal_id, pattern, timeout, idle. Returns: str: Az osszegyujtott kimenet + hogy a mintat sikerult-e megtalalni. |
| terminal_ctrl_cA | Vezerlobillentyu / eszkapszekvencia kuldese (ctrl-c, ctrl-d, up, tab, ...). A nev 'ctrl_c', de barmelyik tamogatott billentyu megadhato a 'key' mezoben. Args: params (TerminalKeyInput): terminal_id, key. Returns: str: Megerosites + rovid kimenet. |
| terminal_resizeB | A terminal (PTY) meretenek allitasa - fontos a curses programoknak (htop, vim). Args: params (TerminalResizeInput): terminal_id, cols, rows. Returns: str: Megerosites. |
| terminal_closeA | Egy terminal munkamenet bezarasa es a folyamatainak leallitasa. Args: params (TerminalCloseInput): terminal_id. Returns: str: Megerosites. |
| terminal_listA | A jelenleg nyitott terminal munkamenetek listaja allapottal. Returns: str: id, tipus, cel, el-e, tetlensegi ido, kor. |
| screenshotA | Kepernyokep keszitese a lokalis asztalrol. Sorrendben probalja: gnome-screenshot, scrot, imagemagick 'import', grim (Wayland). Args: params (ScreenshotInput): save_path, window, return_image. Returns: Image | str: A PNG kep (return_image eseten), kulonben szoveges megerosites a mentesi utrol. |
| desktop_ocrB | Szoveg kinyerese a kepernyorol (vagy egy kepfajlbol) tesseract OCR-rel. Args: params (OcrInput): image_path, lang. Returns: str: A felismert szoveg. |
| mouse_moveA | Az egermutato mozgatasa abszolut kepernyo-koordinatara. Args: params (MouseMoveInput): x, y. Returns: str: Megerosites. |
| mouse_clickA | Kattintas a megadott (vagy a jelenlegi) pozicion. Args: params (MouseClickInput): button ('left'|'middle'|'right'), x, y. Returns: str: Megerosites. |
| mouse_double_clickA | Dupla kattintas a megadott (vagy jelenlegi) pozicion. Args: params (MouseClickInput): button, x, y. Returns: str: Megerosites. |
| mouse_scrollB | Fuggoleges gorgetes az egermutato jelenlegi pozicion. Args: params (MouseScrollInput): direction ('up'|'down'), amount. Returns: str: Megerosites. |
| keyboard_typeB | Szoveg begepelese az aktualisan fokuszalt ablakba (xdotool type). Args: params (KeyboardTypeInput): text, delay_ms. Returns: str: Megerosites. |
| keyboard_pressB | Billentyu vagy kombinacio lenyomasa (xdotool key), pl. 'ctrl+alt+t', 'Return', 'alt+F4'. Args: params (KeyboardPressInput): keys, repeat. Returns: str: Megerosites. |
| window_listA | A nyitott ablakok listaja (wmctrl -l): azonosito, asztal, gep, cim. Returns: str: Ablaklista. |
| window_focusA | Egy ablak elore hozasa es fokuszalasa cim-reszlet vagy azonosito alapjan. Args: params (WindowFocusInput): query. Returns: str: Megerosites. |
| window_closeA | Egy ablak bezarasa. 'force' eseten megerositest ker (nem mentett munka veszhet). Args: params (WindowCloseInput): query, force. Returns: str: Megerosites. |
| launch_applicationA | Grafikus (vagy barmilyen) alkalmazas inditasa a hatterben, levalasztva. Eloszor 'gtk-launch ' (.desktop), kudarc eseten kozvetlen parancsindtas. Args: params (LaunchAppInput): application, arguments. Returns: str: Megerosites + PID (ha elerheto). |
| list_filesC | Egy konyvtar tartalmanak listazasa. Args: params (ListFilesInput): path, all, long, host, response_format. Returns: str: A konyvtar bejegyzesei. |
| read_fileA | Szoveges fajl beolvasasa, opcionalisan csak egy sor-tartomany. Args: params (ReadFileInput): path, start_line, end_line, host, response_format. Returns: str: A fajl tartalma (nagy fajlnal levagva). |
| file_infoB | Fajl / konyvtar metaadatai: meret, tipus, jogosultsagok, tulajdonos, idobelyegek. Args: params (FileInfoInput): path, host, response_format. Returns: str: A metaadatok. |
| write_fileA | Fajl letrehozasa vagy felulirasa (vagy hozzafuzes). Letezo fajl felulirasa eseten megerositest ker. Args: params (WriteFileInput): path, content, append, create_parents, host. Returns: str: Megerosites (kiirt byte-ok szama). |
| edit_fileA | Pontos szoveg-csere egy meglevo fajlban (nem regex). Args: params (EditFileInput): path, old_string, new_string, count, host. Returns: str: Hany csere tortent. |
| make_dirA | Konyvtar (es szuloi) letrehozasa. Args: params (MakeDirInput): path, host. Returns: str: Megerosites. |
| move_pathA | Fajl / konyvtar atnevezese vagy athelyezese. Ha a cel mar letezik, megerositest ker. Args: params (MovePathInput): source, destination, host. Returns: str: Megerosites. |
| delete_pathA | Fajl vagy konyvtar torlese. MINDIG megerositest ker. Args: params (DeletePathInput): path, recursive, host. Returns: str: Megerosites. |
| host_listA | A konfiguralt tavoli gepek listaja (titkok nelkul). Returns: str: Minden gephez: nev, hostname, felhasznalo, port, van-e kulcs / jelszo-env. |
| host_testA | SSH kapcsolat tesztelese egy geppel: bejelentkezes + 'id' es 'uname -a'. Args: params (HostNameInput): name. Returns: str: A kapcsolat eredmenye es az alap parancsok kimenete. |
| host_addA | Uj tavoli gep hozzaadasa a konfiguraciohoz es mentese a config fajlba. A jelszot NEM ide adod meg: a 'password_env' / 'sudo_password_env' mezobe egy kornyezeti valtozo NEVET irsz, amit a szerver kornyezeteben beallitasz. Args: params (HostAddInput): name, hostname, username, port, key_path, password_env, sudo_password_env, description. Returns: str: Megerosites + a mentett (titok nelkuli) rekord. |
| host_removeA | Egy tavoli gep torlese a konfiguraciobol. Args: params (HostNameInput): name. Returns: str: Megerosites. |
| host_generate_keyA | Uj ed25519 SSH kulcspar generalasa a szerver kulcs-konyvtaraba. A privat kulcs helyben marad; a publikus kulcsot kell felmasolni a tavoli gep ~/.ssh/authorized_keys fajljaba (pl. 'ssh-copy-id' vagy kezzel). Ezutan a 'host_add' hivasnal add meg a privat kulcs utjat a 'key_path'-ban. Args: params (HostGenKeyInput): name, comment. Returns: str: A privat kulcs utja + a publikus kulcs sora (ezt kell telepiteni). |
| host_runA | Egyszeri shell parancs futtatasa egy KONFIGURALT tavoli gepen. A parancs atmegy a kockazat-kapun: a magas kockazatu muveletek (rm -rf, reboot, tuzfal, stb.) megerositest kernek. Args: params (HostRunInput): host (kotelezo), command, sudo, timeout, cwd, response_format. Returns: str: A parancs kimenete. |
| shell_runA | Egyszeri shell parancs futtatasa a LOKALIS gepen (ahol az MCP szerver fut). Ugyanaz a kockazat-kapu vonatkozik ra, mint a 'host_run'-ra. Altalaban celszerubb a specifikus toolokat hasznalni (system_*, apt_*, stb.), de ez a menekulesi ut barmilyen egyedi parancshoz. Args: params (HostRunInput): command, sudo, timeout, cwd, response_format. (A 'host' mezot hagyd uresen - ha kitoltod, tavoli gepre megy.) Returns: str: A parancs kimenete. |
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 55 tools
Most tools are grouped into recognizable clusters (system, apt, terminal, desktop, files, hosts), but a few boundaries blur: shell_run can also target remote hosts and thus overlaps with host_run, while system_status summarizes metrics that are also covered by cpu_usage, memory_usage, disk_usage, and process_list. The detailed descriptions help, but with 55 tools an agent can still hesitate between several overlapping entry points.
Names are consistently lower_snake_case and mostly follow resource-action patterns such as terminal_open, apt_update, mouse_click, and host_add. The main deviations are noun-only names like logs, screenshot, system_info, and file_info, plus file tools using verb-noun ordering (list_files, read_file) while many control tools use noun-verb ordering. Overall the style is predictable enough.
55 tools is far above the typical coherent scope and bundles system monitoring, package management, terminal emulation, GUI automation, file operations, and remote host management into a single server. Each cluster is internally useful, but the aggregate surface is heavy and creates a large selection burden for agents. A more cohesive design would split this into focused servers by domain.
The set covers monitoring, package installation, file management, terminal sessions, GUI interaction, and remote host operations well, but there are obvious control gaps: process_list has no corresponding process_kill or signal tool, and service_status has no service_start/stop/restart tool. These can be worked around via shell_run or host_run, but they are notable missing lifecycle operations for a server described as an Ubuntu control interface.