Skip to main content
Glama

DesktopBridge 🌉

CI Home Node License: MIT

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 test

El punto de entrada compilado es dist/index.js.

Conectar a Claude Desktop

  1. Compila el servidor (npm run build).

  2. Abre Claude Desktop → Configuración → Desarrollador → Editar configuración.

  3. 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"
      }
    }
  }
}
  1. Cierra y vuelve a abrir Claude Desktop por completo.

  2. 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.js

O 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 inspector

Eso 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

DESKTOP_BRIDGE_ROOTS

~/Desktop, ~/Documents, ~/Downloads (si existen)

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.

DESKTOP_BRIDGE_MAX_FILE_BYTES

10485760

Tamaño máximo para una sola lectura/escritura de archivo (1 KiB–100 MiB).

DESKTOP_BRIDGE_COMMAND_TIMEOUT_MS

30000

Tiempo de espera predeterminado de run_command (100–300000).

DESKTOP_BRIDGE_MAX_OUTPUT_BYTES

1048576

Límite de captura combinado de stdout+stderr. El exceso de salida mata el proceso y establece truncated.

DESKTOP_BRIDGE_ALLOW_SHELL

true

Establece false para deshabilitar run_command.

DESKTOP_BRIDGE_RESTRICT_SHELL_CWD

true

Cuando es true, el cwd de run_command debe estar dentro de una raíz permitida.

DESKTOP_BRIDGE_STATUS_URL

sin establecer

URL de POST de latido para el sitio de estado (…/api/heartbeat).

DESKTOP_BRIDGE_STATUS_TOKEN

sin establecer

Token Bearer que coincide con el HEARTBEAT_TOKEN del sitio.

DESKTOP_BRIDGE_STATUS_INTERVAL_MS

15000

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

list_roots

Directorios permitidos y límite de tamaño de archivo

read_file

Texto (ventana de líneas opcional) o base64

write_file

Crear/sobrescribir/añadir; mkdir -p opcional

list_directory

Nombre, tipo, tamaño, mtime, modo

search_files

Glob en nombres y/o regex en contenidos de archivos

get_system_stats

% de CPU, carga, memoria, df

get_system_info

Host, tiempo de actividad, usuario, entorno redactado

list_applications

Procesos GUI (o todos) mediante System Events

run_command

Shell con stdout/stderr separados; stream → notificaciones de progreso

read_clipboard / write_clipboard

pbpaste / pbcopy

get_display_info

Nombre de pantalla, indicador principal, escala, marco

take_screenshot

PNG mediante screencapture; devuelve un bloque de imagen cuando es ≤ 5 MiB

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 ~/.ssh y similares fuera de alcance hasta que los agregues a propósito.

  • Shell: sigue siendo un shell de usuario completo. Un comando puede hacer cd a cualquier lugar incluso cuando el cwd está restringido. Deshabilítalo con DESKTOP_BRIDGE_ALLOW_SHELL=false si 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)

list_applications

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:test

Distribució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: !g !k !d !gh !yt !w !maps

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

A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    A
    quality
    A
    maintenance
    Provides 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.
    2
    507
    874
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A 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.
    2
    507
    8
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Secure AppleScript execution for AI applications via Model Context Protocol with configurable security profiles and automatic TCC permission handling.
    3
    1

View all related MCP servers

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…

View all MCP Connectors

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/jameymcelveen/desktop-bridge'

If you have feedback or need assistance with the MCP directory API, please join our Discord server