DesktopBridge
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DESKTOP_BRIDGE_ROOTS | No | Comma-separated directories file tools may touch. The OS temp dir is always added so screenshots have a place to land. | ~/Desktop,~/Documents,~/Downloads (if they exist) |
| DESKTOP_BRIDGE_STATUS_URL | No | Heartbeat POST URL for the status site (…/api/heartbeat). | |
| DESKTOP_BRIDGE_ALLOW_SHELL | No | Set false to disable run_command. | true |
| DESKTOP_BRIDGE_STATUS_TOKEN | No | Bearer token matching the site’s HEARTBEAT_TOKEN. | |
| DESKTOP_BRIDGE_MAX_FILE_BYTES | No | Max size for a single file read/write (1 KiB–100 MiB). | 10485760 |
| DESKTOP_BRIDGE_MAX_OUTPUT_BYTES | No | Combined stdout+stderr capture cap. Excess output kills the process and sets truncated. | 1048576 |
| DESKTOP_BRIDGE_COMMAND_TIMEOUT_MS | No | Default run_command timeout (100–300000). | 30000 |
| DESKTOP_BRIDGE_RESTRICT_SHELL_CWD | No | When true, run_command cwd must sit inside an allowed root. | true |
| DESKTOP_BRIDGE_STATUS_INTERVAL_MS | No | Heartbeat interval (5s–5m). | 15000 |
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
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_rootsA | List directories this server may read and write. File tools reject paths outside these roots. |
| read_fileA | Read a file inside an allowed root. Use encoding=base64 for binary. offset/limit are 1-based line numbers for utf8. |
| write_fileA | Create or overwrite a file inside an allowed root. createDirectories mkdir -p the parent. append adds to an existing file. |
| list_directoryA | List files and subdirectories with type, size, modified time, and mode. |
| search_filesA | Walk an allowed directory. namePattern is a glob (* and **). contentPattern is a JavaScript regex matched per line. Symlinks are not followed. |
| get_system_statsB | CPU percent (short sample), load average, memory, and disk usage (df -kP). |
| get_system_infoA | Hostname, OS, architecture, uptime, user, home, and environment variables. Secret-looking keys are redacted. |
| list_applicationsA | Foreground macOS application processes from System Events (name, pid, visible). includeBackground includes agents. |
| get_network_infoA | Public IPv4 (via ipify) and non-internal LAN IPv4 addresses. Use this to record the home WAN address on the status site. |
| run_commandA | Run a command with the user shell. stdout and stderr are captured separately. stream=true sends MCP progress notifications as output arrives. cwd must be inside an allowed root unless DESKTOP_BRIDGE_RESTRICT_SHELL_CWD=false. |
| read_clipboardA | Read the current macOS clipboard as text (pbpaste). |
| write_clipboardA | Replace the macOS clipboard with the given text (pbcopy). |
| get_display_infoA | List attached displays: name, main flag, scale factor, and frame in Cocoa points. |
| take_screenshotB | Capture the screen with screencapture. display is the 1-based display id (-D). Saves PNG under an allowed path (default: a timestamped file in the temp dir). Requires Screen Recording permission for the host app that launched this server. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| inspect_desktop | Gather system stats, displays, running apps, and allowed filesystem roots. |
| find_file | Walk an allowed directory by name glob and optional content regex. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| roots | Allowed filesystem roots for DesktopBridge file tools |
| system-info | Host identity, uptime, and redacted environment |
TDQS
Scored across 14 tools
Most tools have clearly distinct purposes, but a few pairs like get_system_stats vs get_system_info and list_directory vs search_files could be confused without careful reading. Descriptions clarify the differences, so overall ambiguity is low.
All 14 tools follow a consistent verb_noun snake_case naming convention (e.g., list_roots, read_file, get_network_info). This pattern is uniform and predictable, making it easy for agents to infer behavior.
With 14 tools, the server covers a broad range of desktop automation functions—file, system, clipboard, apps, network, command, and display—without being bloated. Each tool has a clear purpose, and the count is well within the ideal range.
The toolset covers core file operations (read, write, list, search) but misses common operations like delete or rename. It also lacks process management beyond listing apps, but the provided surface is adequate for many automation tasks, leaving only moderate gaps.