Universal Computer Control MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 |
|---|---|
| computer.observeA | Observe the current computer state: screen geometry, active window, cursor, OCR'd on-screen text and accessibility UI elements. Levels: 'minimal' (fast), 'normal' (screenshot+OCR+accessibility), 'full' (adds focused element details). This is the primary tool for understanding the screen before acting. |
| computer.screenshotA | Take a screenshot of the whole virtual desktop, a specific monitor or a [left, top, right, bottom] region. Saves it to the persistence directory and returns the path. |
| computer.get_ui_treeB | Get the accessibility tree of the active (or a named) window as a nested structure of roles, names and bounding boxes. Uses Windows UI Automation or Linux AT-SPI; returns an explanatory error when no accessibility backend is available. |
| computer.get_active_windowA | Get the title, application and process of the currently focused window. |
| computer.find_textA | Find text anywhere on screen (OCR + accessibility) with fuzzy matching. Returns matches with bounding boxes so you can click them. Tolerates case, arrows and small typos ('Continue' matches 'Continue →'). |
| computer.find_visualA | Find a UI element visually: by image template name (from the configured template directory) or by natural-language description via the optional vision model. Returns a bounding box. |
| computer.wait_forA | Wait until something changes on screen. Expectations: 'any_change', 'window' (value = window title substring), 'text' (value = OCR text substring). Use after actions to await UI reactions instead of blind sleeps. |
| computer.clickA | Click a UI element. Target can be: visible text ('Continue'), an element id from computer.observe ('element_17'), or coordinates ({'x': 500, 'y': 300}). The engine resolves it via accessibility first, then OCR, then vision - and verifies the result. |
| computer.double_clickB | Double-click a UI element (same flexible target rules as computer.click). |
| computer.right_clickC | Right-click a UI element (same flexible target rules as computer.click). |
| computer.move_mouseB | Move the mouse cursor to a target (text, element id or coordinates). |
| computer.dragC | Drag from one target to another (text, element ids or coordinates). |
| computer.scrollA | Scroll the mouse wheel. Positive amount scrolls up, negative down. Optionally at specific coordinates (x, y). |
| computer.typeA | Type text at the currently focused input. Handles Unicode and multiline text (clipboard fallback used automatically). The typed content is never logged. |
| computer.pressC | Press a keyboard key ('enter', 'tab', 'escape', 'f5', ...). |
| computer.hotkeyA | Press a key combination. Pass a string like 'ctrl+s' or a list like ['ctrl', 'shift', 't']. |
| computer.list_windowsA | List all top-level OS windows with title, application, pid and state. |
| computer.focus_windowA | Focus a real OS window by (partial) title or application name, e.g. 'Chrome'. Works without any application-specific integration. |
| computer.minimize_windowC | Minimize a window by title/application. |
| computer.maximize_windowC | Maximize a window by title/application. |
| computer.restore_windowC | Restore a minimized/maximized window. |
| computer.close_windowA | Close a window gracefully (WM_CLOSE). Requires confirm=true; modal confirmation dialogs remain visible for the agent to handle. |
| computer.get_clipboardA | Read the clipboard text. |
| computer.set_clipboardA | Write text to the clipboard (useful as a typing fallback). |
| computer.launch_applicationA | Launch a GUI application ('chrome', 'code', a .desktop entry, or a full path). Subject to security.allowed_applications. |
| computer.run_commandA | Run a shell command (security.allowlist applies; see computer.backend_status). Requires confirm=true. Output is truncated and credential-redacted. |
| computer.backend_statusA | Report health/availability of every backend (input, screenshot, accessibility, window management, clipboard, OCR, vision) plus security settings and emergency-stop state. |
| computer.emergency_stopA | EMERGENCY STOP: immediately halt all automation (checked before every action and attempt). Persists until reset_emergency_stop. |
| computer.reset_emergency_stopA | Clear a previously triggered emergency stop. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/adkdev200/Universal-Computer-Control'
If you have feedback or need assistance with the MCP directory API, please join our Discord server