DesktopBridge
DesktopBridge 🌉
Servidor local del Model Context Protocol para macOS. Claude (o cualquier host MCP) se comunica con él a través de stdio y puede:
Leer, escribir, listar y buscar archivos dentro de directorios permitidos
Leer estadísticas de CPU / memoria / disco, tiempo de actividad y un entorno redactado
Listar aplicaciones en ejecución
Ejecutar comandos de shell con stdout/stderr separados, tiempos de espera y transmisión opcional de progreso
Leer y escribir el portapapeles
Capturar capturas de pantalla y listar pantallas
Este proceso tiene los mismos derechos del sistema operativo que el usuario que lo inició. Trátalo como si le dieras al modelo una terminal en tu Mac, y luego reduce ese radio de impacto con DESKTOP_BRIDGE_ROOTS.
Requisitos
macOS (portapapeles, capturas de pantalla y listado de aplicaciones usan herramientas de Apple)
Node.js 20.19+ (se recomienda 22 LTS)
Related MCP server: macOS Automator MCP Server
Instalar
cd desktop-bridge
npm install
npm run build
npm testEl punto de entrada compilado es dist/index.js.
Conectar a Claude Desktop
Compila el servidor (
npm run build).Abre Claude Desktop → Configuración → Desarrollador → Editar configuración.
Fusiona el bloque de
claude_desktop_config.example.json, reemplazando la ruta y los nombres de usuario:
{
"mcpServers": {
"desktop-bridge": {
"command": "node",
"args": ["/Users/YOU/dev/desktop-bridge/dist/index.js"],
"env": {
"DESKTOP_BRIDGE_ROOTS": "/Users/YOU/Desktop,/Users/YOU/Documents,/Users/YOU/Downloads"
}
}
}
}Cierra y vuelve a abrir Claude Desktop por completo.
Confirma que desktop-bridge aparece en las herramientas MCP (icono de puente 🌉).
Archivo de configuración en macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Conectar a Claude Code
claude mcp add desktop-bridge -- node /Users/YOU/dev/desktop-bridge/dist/index.jsO agrega el mismo bloque command / args / env a ~/.claude.json.
Conectar a Cursor
Agrega a ~/.cursor/mcp.json (o al .cursor/mcp.json del proyecto):
{
"mcpServers": {
"desktop-bridge": {
"command": "node",
"args": ["/Users/YOU/dev/desktop-bridge/dist/index.js"]
}
}
}Prueba rápida sin un host
npm run inspectorEso lanza el MCP Inspector contra el servidor stdio compilado. Llama a list_roots y luego a get_system_info.
Los registros van solo a stderr. No uses console.log en este proceso: stdout es el canal JSON-RPC.
Entorno
Variable | Predeterminado | Significado |
|
| Directorios separados por comas que las herramientas de archivos pueden tocar. El directorio temporal del sistema siempre se agrega para que las capturas de pantalla tengan un lugar donde guardarse. |
|
| Tamaño máximo para una sola lectura/escritura de archivo (1 KiB–100 MiB). |
|
| Tiempo de espera predeterminado de |
|
| Límite de captura combinado de stdout+stderr. El exceso de salida mata el proceso y establece |
|
| Establece |
|
| Cuando es true, el cwd de |
| sin establecer | URL de POST de latido para el sitio de estado ( |
| sin establecer | Token Bearer que coincide con el |
|
| Intervalo de latido (5s–5m). |
Copia .env.example para una plantilla comentada. El servidor lee el entorno del proceso (bloque env de Claude Desktop), no un archivo .env.
Herramientas
Herramienta | Qué hace |
| Directorios permitidos y límite de tamaño de archivo |
| Texto (ventana de líneas opcional) o base64 |
| Crear/sobrescribir/añadir; |
| Nombre, tipo, tamaño, mtime, modo |
| Glob en nombres y/o regex en contenidos de archivos |
| % de CPU, carga, memoria, |
| Host, tiempo de actividad, usuario, entorno redactado |
| Procesos GUI (o todos) mediante System Events |
| Shell con stdout/stderr separados; |
|
|
| Nombre de pantalla, indicador principal, escala, marco |
| PNG mediante |
Recursos: desktop://roots, desktop://system/info.
Prompts: inspect_desktop, find_file.
Modelo de seguridad
Archivos: cada ruta se resuelve con
realpath. La ruta resuelta debe permanecer dentro de una raíz configurada. Se rechazan.., barras adicionales y enlaces simbólicos que escapen.El directorio de inicio no es una raíz predeterminada. Eso mantiene
~/.sshy similares fuera de alcance hasta que los agregues a propósito.Shell: sigue siendo un shell de usuario completo. Un comando puede hacer
cda cualquier lugar incluso cuando el cwd está restringido. Deshabilítalo conDESKTOP_BRIDGE_ALLOW_SHELL=falsesi solo quieres herramientas de archivos/portapapeles/pantalla.Entorno: las claves que coinciden con password/token/secret/key/credential/cookie/session se reemplazan con
[redacted].Stdio: sin listener de red. El host inicia este proceso.
Permisos de macOS
Característica | Permiso |
Capturas de pantalla | Grabación de pantalla para la aplicación que inició Node (Claude Desktop, Cursor o Terminal) |
| Automatización → System Events si macOS lo solicita |
Aplicaciones con mucho uso de accesibilidad | pueden ocultar títulos; la herramienta lista nombres de procesos de todos modos |
Si screencapture falla, abre Configuración del sistema → Privacidad y seguridad → Grabación de pantalla y habilita la aplicación host, luego reiníciala.
Desarrollo
npm run build # tsc → dist/
npm start # node dist/index.js (stdio)
npm test # compile + node:testDistribución: src/lib/* (guardia de rutas, ejecutor de procesos, glob/búsqueda), src/tools/* (herramientas MCP), src/index.ts (entrada stdio).
Inicio
https://home.jameymcelveen.com es la página de inicio del navegador (web/, sin paquetes npm adicionales). El inicio de sesión es @mcelveen.us más STATUS_PASSWORD.
Lo que hay hoy, y la bandeja de descarga para lo que venga después:
Pieza | Notas |
Búsqueda | Autofoco. Google / Kagi / DDG. Bangs: |
Enlaces | Los mismos mosaicos que la aplicación local de página de inicio, más las propiedades. Edita como JSON en Configuración |
Clima | Open-Meteo, °F, Florence SC a menos que sobrescribas las coordenadas |
Mac | Latido de DesktopBridge: en línea / desactualizado / fuera de línea, IPs, carga |
Borrador | Notas con autoguardado |
Palabra | Versículo diario |
Establece la página de inicio de Chrome/Safari/Firefox a https://home.jameymcelveen.com (los navegadores no permiten que la página lo haga por ti). La cookie de sesión dura 30 días. / enfoca la búsqueda; ⌘K también.
Empujar a main ejecuta CI, luego despliega Vercel (el sitio) y Railway (latido + configuración guardada).
En el Mac, agrega al entorno del servidor MCP:
DESKTOP_BRIDGE_STATUS_URL=https://home.jameymcelveen.com/api/heartbeat
DESKTOP_BRIDGE_STATUS_TOKEN=<HEARTBEAT_TOKEN>Licencia
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityFmaintenanceA Model Context Protocol server that enables running AppleScript code to interact with Mac applications and system features including Notes, Calendar, Contacts, Messages, file management, and more.178460MIT
- AlicenseAqualityAmaintenanceProvides a Model Context Protocol server for executing AppleScript and JavaScript for Automation scripts on macOS, featuring a knowledge base of pre-defined scripts and supporting automation of macOS applications and system functions.2507874MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol server that enables execution of AppleScript and JavaScript for Automation scripts on macOS, allowing programmatic control of applications and system functions through a rich knowledge base of pre-defined scripts.25078MIT
- FlicenseAqualityDmaintenanceSecure AppleScript execution for AI applications via Model Context Protocol with configurable security profiles and automatic TCC permission handling.31
Related MCP Connectors
Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
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/jameymcelveen/desktop-bridge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server