GhostDesk
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TZ | No | IANA timezone (POSIX standard, e.g. 'Europe/Paris'). | America/New_York |
| LANG | No | POSIX locale (e.g. 'fr_FR.UTF-8'). | en_US.UTF-8 |
| GHOSTDESK_PORT | No | MCP server listening port. | 3000 |
| GHOSTDESK_TLS_KEY | No | Path to the TLS private key (matching GHOSTDESK_TLS_CERT). | /etc/ghostdesk/tls/server.key |
| GHOSTDESK_TLS_CERT | No | Path to the TLS certificate. When the file exists, 'websockify' and the MCP server auto-switch to 'wss://' / 'https://'. | /etc/ghostdesk/tls/server.crt |
| GHOSTDESK_AUTH_TOKEN | No | Bearer token required on every MCP request. Generate with 'openssl rand -hex 32'. | |
| GHOSTDESK_SCREEN_WIDTH | No | Virtual screen width in pixels. | 1280 |
| GHOSTDESK_VNC_PASSWORD | No | Password for wayvnc (username is 'agent' in the prod image). Generate with 'openssl rand -hex 16'. | |
| GHOSTDESK_SCREEN_HEIGHT | No | Virtual screen height in pixels. | 1024 |
Capabilities
Features and capabilities supported by this server
| 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 |
|---|---|
| screen_shotA | Capture the screen, optionally cropped to a region. Args: region: Area to capture (full screen if omitted). format: "webp" (default, smaller payload) or "png" (lossless). stabilize: Wait for the page to stop moving before capturing (max 2.5 s). Useful right after navigation. |
| mouse_clickA | Click at screen coordinates. Use coordinates from screen_shot() or inspect(). Returns a dict with:
|
| mouse_double_clickA | Double-click at screen coordinates. Use for opening files or selecting words. Returns a dict with:
|
| mouse_dragA | Drag from one position to another. Use for selecting text, moving items, or resizing. Returns a dict with:
|
| mouse_scrollA | Scroll at a position. direction: up/down/left/right. amount: number of scroll steps (max 5). Returns a dict with:
|
| key_typeA | Type text. Handles Unicode, newlines, and tabs. Returns the standard |
| key_pressA | Press a key or key combination. Friendly names accepted: Examples: Returns the standard |
| app_listA | Return installed GUI apps. Scans Returns a list of dicts, each with:
|
| app_launchA | Launch a desktop GUI application and return its PID and log file path. Only applications listed by Returns a dict with:
On failure, returns a dict with a single |
| app_statusA | Check whether a launched app is still running and read its logs. Only PIDs returned by Args:
pid: Process ID returned by Returns a dict with:
On failure, returns a dict with a single |
| clipboard_getA | Read the current clipboard text. |
| clipboard_setA | Write text to the clipboard. Use with key_press("ctrl+v") to paste. |
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
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/YV17labs/GhostDesk'
If you have feedback or need assistance with the MCP directory API, please join our Discord server