DesktopBridge
DesktopBridge 🌉
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 testDer kompilierte Einstiegspunkt ist dist/index.js.
Mit Claude Desktop verbinden
Baue den Server (
npm run build).Öffne Claude Desktop → Einstellungen → Entwickler → Konfiguration bearbeiten.
Füge den Block aus
claude_desktop_config.example.jsonein 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"
}
}
}
}Beende Claude Desktop vollständig und starte es neu.
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.jsOder 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 inspectorDas 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 |
|
| Kommagetrennte Verzeichnisse, die Datei-Tools berühren dürfen. Das OS-Temp-Verzeichnis wird immer hinzugefügt, damit Screenshots einen Ablageort haben. |
|
| Maximale Größe für ein einzelnes Datei-Lesen/-Schreiben (1 KiB–100 MiB). |
|
| Standard- |
|
| Obergrenze für die kombinierte stdout+stderr-Erfassung. Überschüssige Ausgabe beendet den Prozess und setzt |
|
| Setze auf |
|
| Wenn true, muss das |
| nicht gesetzt | Heartbeat-POST-URL für die Status-Website ( |
| nicht gesetzt | Bearer-Token, das dem |
|
| 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 |
| Erlaubte Verzeichnisse und Dateigrößen-Obergrenze |
| Text (optionales Zeilenfenster) oder base64 |
| Erstellen/Überschreiben/Anhängen; optional |
| Name, Typ, Größe, mtime, Modus |
| Glob auf Namen und/oder Regex auf Dateiinhalte |
| CPU %, Last, Speicher, |
| Host, Uptime, Benutzer, redigierte Umgebung |
| GUI- (oder alle) Prozesse über System Events |
| Shell mit getrenntem stdout/stderr; |
|
|
| Anzeigename, Haupt-Flag, Skalierung, Rahmen |
| PNG über |
Ressourcen: desktop://roots, desktop://system/info.
Prompts: inspect_desktop, find_file.
Sicherheitsmodell
Dateien: Jeder Pfad wird mit
realpathaufgelö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
~/.sshund Ä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 mitDESKTOP_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) |
| 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:testLayout: 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: |
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
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