Skip to main content
Glama

DesktopBridge 🌉

CI Home Node License: MIT

Lokaler Model Context Protocol-Server für macOS. Claude (oder ein beliebiger MCP-Host) kommuniziert über stdio mit ihm und kann:

  • Dateien in erlaubten Verzeichnissen lesen, schreiben, auflisten und durchsuchen

  • CPU-/Speicher-/Festplatten-Statistiken, Uptime und eine redigierte Umgebung lesen

  • Laufende Anwendungen auflisten

  • Shell-Befehle mit getrenntem stdout/stderr, Timeouts und optionalem Fortschritts-Streaming ausführen

  • Zwischenablage lesen und schreiben

  • Screenshots aufnehmen und Displays auflisten

Dieser Prozess hat dieselben Betriebssystemrechte wie der Benutzer, der ihn gestartet hat. Behandle ihn so, als würdest du dem Modell ein Terminal auf deinem Mac geben, und verkleinere dann diese Schadenszone mit DESKTOP_BRIDGE_ROOTS.

Anforderungen

  • macOS (Zwischenablage, Screenshots und Anwendungsliste verwenden Apple-Tools)

  • Node.js 20.19+ (22 LTS empfohlen)

Related MCP server: macOS Automator MCP Server

Installation

cd desktop-bridge
npm install
npm run build
npm test

Der kompilierte Einstiegspunkt ist dist/index.js.

Mit Claude Desktop verbinden

  1. Baue den Server (npm run build).

  2. Öffne Claude Desktop → Einstellungen → Entwickler → Konfiguration bearbeiten.

  3. Füge den Block aus claude_desktop_config.example.json ein und ersetze Pfad und Benutzernamen:

{
  "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. Beende Claude Desktop vollständig und starte es neu.

  2. Bestätige, dass desktop-bridge unter den MCP-Tools erscheint (Brücken-Symbol 🌉).

Konfigurationsdatei auf macOS:

~/Library/Application Support/Claude/claude_desktop_config.json

Mit Claude Code verbinden

claude mcp add desktop-bridge -- node /Users/YOU/dev/desktop-bridge/dist/index.js

Oder füge denselben command / args / env-Block zu ~/.claude.json hinzu.

Mit Cursor verbinden

Füge zu ~/.cursor/mcp.json (oder zum Projekt-.cursor/mcp.json) hinzu:

{
  "mcpServers": {
    "desktop-bridge": {
      "command": "node",
      "args": ["/Users/YOU/dev/desktop-bridge/dist/index.js"]
    }
  }
}

Rauchtest ohne Host

npm run inspector

Das startet den MCP Inspector gegen den gebauten stdio-Server. Rufe list_roots auf, dann get_system_info.

Logs gehen nur auf stderr. Verwende in diesem Prozess kein console.log — stdout ist der JSON-RPC-Kanal.

Umgebung

Variable

Standard

Bedeutung

DESKTOP_BRIDGE_ROOTS

~/Desktop, ~/Documents, ~/Downloads (falls vorhanden)

Kommagetrennte Verzeichnisse, die Datei-Tools berühren dürfen. Das OS-Temp-Verzeichnis wird immer hinzugefügt, damit Screenshots einen Ablageort haben.

DESKTOP_BRIDGE_MAX_FILE_BYTES

10485760

Maximale Größe für ein einzelnes Datei-Lesen/-Schreiben (1 KiB–100 MiB).

DESKTOP_BRIDGE_COMMAND_TIMEOUT_MS

30000

Standard-run_command-Timeout (100–300000).

DESKTOP_BRIDGE_MAX_OUTPUT_BYTES

1048576

Obergrenze für die kombinierte stdout+stderr-Erfassung. Überschüssige Ausgabe beendet den Prozess und setzt truncated.

DESKTOP_BRIDGE_ALLOW_SHELL

true

Setze auf false, um run_command zu deaktivieren.

DESKTOP_BRIDGE_RESTRICT_SHELL_CWD

true

Wenn true, muss das run_command-cwd innerhalb eines erlaubten Roots liegen.

DESKTOP_BRIDGE_STATUS_URL

nicht gesetzt

Heartbeat-POST-URL für die Status-Website (…/api/heartbeat).

DESKTOP_BRIDGE_STATUS_TOKEN

nicht gesetzt

Bearer-Token, das dem HEARTBEAT_TOKEN der Website entspricht.

DESKTOP_BRIDGE_STATUS_INTERVAL_MS

15000

Heartbeat-Intervall (5s–5m).

Kopiere .env.example für eine kommentierte Vorlage. Der Server liest Prozess-Umgebung (Claude-Desktop-env-Block), nicht eine .env-Datei.

Tools

Tool

Was es tut

list_roots

Erlaubte Verzeichnisse und Dateigrößen-Obergrenze

read_file

Text (optionales Zeilenfenster) oder base64

write_file

Erstellen/Überschreiben/Anhängen; optional mkdir -p

list_directory

Name, Typ, Größe, mtime, Modus

search_files

Glob auf Namen und/oder Regex auf Dateiinhalte

get_system_stats

CPU %, Last, Speicher, df

get_system_info

Host, Uptime, Benutzer, redigierte Umgebung

list_applications

GUI- (oder alle) Prozesse über System Events

run_command

Shell mit getrenntem stdout/stderr; stream → Fortschrittsbenachrichtigungen

read_clipboard / write_clipboard

pbpaste / pbcopy

get_display_info

Anzeigename, Haupt-Flag, Skalierung, Rahmen

take_screenshot

PNG über screencapture; gibt einen Bildblock zurück, wenn ≤ 5 MiB

Ressourcen: desktop://roots, desktop://system/info.
Prompts: inspect_desktop, find_file.

Sicherheitsmodell

  • Dateien: Jeder Pfad wird mit realpath aufgelöst. Der aufgelöste Pfad muss innerhalb eines konfigurierten Roots bleiben. .., zusätzliche Schrägstriche und Symlinks, die ausbrechen, werden abgelehnt.

  • Home ist kein Standard-Root. Das hält ~/.ssh und Ähnliches außer Reichweite, bis du sie absichtlich hinzufügst.

  • Shell: Immer noch eine vollwertige Benutzer-Shell. Ein Befehl kann überall hin cd, selbst wenn das cwd eingeschränkt ist. Deaktiviere es mit DESKTOP_BRIDGE_ALLOW_SHELL=false, wenn du nur Datei-/Zwischenablage-/Bildschirm-Tools möchtest.

  • Umgebung: Schlüssel, die Passwort/Token/Geheimnis/Schlüssel/Zugangsdaten/Cookie/Session entsprechen, werden durch [redacted] ersetzt.

  • Stdio: Kein Netzwerk-Listener. Der Host startet diesen Prozess.

macOS-Berechtigungen

Funktion

Berechtigung

Screenshots

Bildschirmaufnahme für die App, die Node gestartet hat (Claude Desktop, Cursor oder Terminal)

list_applications

Automatisierung → System Events, falls macOS dazu auffordert

Apps mit starkem Accessibility-Bezug

können Titel trotzdem verbergen; das Tool listet Prozessnamen in jedem Fall

Wenn screencapture fehlschlägt, öffne Systemeinstellungen → Datenschutz & Sicherheit → Bildschirmaufnahme und aktiviere die Host-App, starte sie dann neu.

Entwicklung

npm run build    # tsc → dist/
npm start        # node dist/index.js (stdio)
npm test         # compile + node:test

Layout: src/lib/* (Pfadschutz, Prozess-Runner, Glob/Suche), src/tools/* (MCP-Tools), src/index.ts (stdio-Einstieg).

Home

https://home.jameymcelveen.com ist die Browser-Startseite (web/, keine zusätzlichen npm-Pakete). Anmeldung ist @mcelveen.us plus STATUS_PASSWORD.

Was es heute gibt, und die Ablage für alles, was als Nächstes kommt:

Teil

Hinweise

Suche

Autofokus. Google / Kagi / DDG. Bangs: !g !k !d !gh !yt !w !maps

Links

Gleiche Kacheln wie die lokale Landing-Page-App, plus die Eigenschaften. Als JSON in Einstellungen bearbeiten

Wetter

Open-Meteo, °F, Florence SC, außer du überschreibst die Koordinaten

Mac

DesktopBridge-Heartbeat: online / veraltet / offline, IPs, Last

Notizen

Autospeichernde Notizen

Wort

Täglicher Vers

Setze die Startseite von Chrome/Safari/Firefox auf https://home.jameymcelveen.com (Browser lassen die Seite das nicht selbst tun). Session-Cookie hält 30 Tage. / fokussiert die Suche; ⌘K auch.

Push auf main führt CI aus, dann Deployment auf Vercel (die Website) und Railway (Heartbeat + gespeicherte Konfiguration).

Auf dem Mac füge zur MCP-Server-Umgebung hinzu:

DESKTOP_BRIDGE_STATUS_URL=https://home.jameymcelveen.com/api/heartbeat
DESKTOP_BRIDGE_STATUS_TOKEN=<HEARTBEAT_TOKEN>

Lizenz

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