DesktopBridge
Allows integration with the local macOS environment, providing tools to read/write/search files in allowlisted directories, run shell commands, gather system stats and info, list running applications, manage the clipboard, and capture screenshots.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DesktopBridgeWhat's the current CPU and memory usage on my Mac?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DesktopBridge π
Local Model Context Protocol server for macOS. Claude (or any MCP host) talks to it over stdio and can:
Read, write, list, and search files inside allowlisted directories
Read CPU / memory / disk stats, uptime, and a redacted environment
List running applications
Run shell commands with separate stdout/stderr, timeouts, and optional progress streaming
Read and write the clipboard
Capture screenshots and list displays
This process has the same OS rights as the user who launched it. Treat it like giving the model a terminal on your Mac, then shrink that blast radius with DESKTOP_BRIDGE_ROOTS.
Requirements
macOS (clipboard, screenshots, and application listing use Apple tools)
Node.js 20.19+ (22 LTS recommended)
Related MCP server: macOS Automator MCP Server
Install
cd desktop-bridge
npm install
npm run build
npm testThe compiled entrypoint is dist/index.js.
Connect to Claude Desktop
Build the server (
npm run build).Open Claude Desktop β Settings β Developer β Edit Config.
Merge the block from
claude_desktop_config.example.json, replacing the path and usernames:
{
"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"
}
}
}
}Fully quit and reopen Claude Desktop.
Confirm desktop-bridge appears under MCP tools (bridge icon π).
Config file on macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Connect to Claude Code
claude mcp add desktop-bridge -- node /Users/YOU/dev/desktop-bridge/dist/index.jsOr add the same command / args / env block to ~/.claude.json.
Connect to Cursor
Add to ~/.cursor/mcp.json (or the project .cursor/mcp.json):
{
"mcpServers": {
"desktop-bridge": {
"command": "node",
"args": ["/Users/YOU/dev/desktop-bridge/dist/index.js"]
}
}
}Smoke-test without a host
npm run inspectorThat launches the MCP Inspector against the built stdio server. Call list_roots, then get_system_info.
Logs go to stderr only. Do not console.log in this process β stdout is the JSON-RPC channel.
Environment
Variable | Default | Meaning |
|
| Comma-separated directories file tools may touch. The OS temp dir is always added so screenshots have a place to land. |
|
| Max size for a single file read/write (1 KiBβ100 MiB). |
|
| Default |
|
| Combined stdout+stderr capture cap. Excess output kills the process and sets |
|
| Set |
|
| When true, |
| unset | Heartbeat POST URL for the status site ( |
| unset | Bearer token matching the siteβs |
|
| Heartbeat interval (5sβ5m). |
Copy .env.example for a commented template. The server reads process env (Claude Desktop env block), not a .env file.
Tools
Tool | What it does |
| Allowed directories and file-size cap |
| Text (optional line window) or base64 |
| Create/overwrite/append; optional |
| Name, type, size, mtime, mode |
| Glob on names and/or regex on file contents |
| CPU %, load, memory, |
| Host, uptime, user, redacted env |
| GUI (or all) processes via System Events |
| Shell with split stdout/stderr; |
|
|
| Display name, main flag, scale, frame |
| PNG via |
Resources: desktop://roots, desktop://system/info.
Prompts: inspect_desktop, find_file.
Security model
Files: every path is
realpath'd. The resolved path must stay inside a configured root..., extra slashes, and symlinks that escape are rejected.Home is not a default root. That keeps
~/.sshand similar out of reach until you add them on purpose.Shell: still a full user shell. A command can
cdanywhere even when cwd is restricted. Disable it withDESKTOP_BRIDGE_ALLOW_SHELL=falseif you only want file/clipboard/screen tools.Env: keys matching password/token/secret/key/credential/cookie/session are replaced with
[redacted].Stdio: no network listener. The host spawns this process.
macOS permissions
Feature | Permission |
Screenshots | Screen Recording for the app that spawned Node (Claude Desktop, Cursor, or Terminal) |
| Automation β System Events if macOS prompts |
Accessibility-heavy apps | may still hide titles; the tool lists process names either way |
If screencapture fails, open System Settings β Privacy & Security β Screen Recording and enable the host app, then restart it.
Development
npm run build # tsc β dist/
npm start # node dist/index.js (stdio)
npm test # compile + node:testLayout: src/lib/* (path guard, process runner, glob/search), src/tools/* (MCP tools), src/index.ts (stdio entry).
Home
https://home.jameymcelveen.com is the browser start page (web/, no extra npm packages). Sign-in is @mcelveen.us plus STATUS_PASSWORD.
What is there today, and the dump tray for whatever comes next:
Piece | Notes |
Search | Autofocus. Google / Kagi / DDG. Bangs: |
Links | Same tiles as the local landing-page app, plus the properties. Edit as JSON in Settings |
Weather | Open-Meteo, Β°F, Florence SC unless you override coords |
Mac | DesktopBridge heartbeat: online / stale / offline, IPs, load |
Scratch | Autosaved notes |
Word | Daily verse |
Set Chrome/Safari/Firefox homepage to https://home.jameymcelveen.com (browsers will not let the page do it for you). Session cookie lasts 30 days. / focuses search; βK too.
Push to main runs CI, then deploys Vercel (the site) and Railway (heartbeat + saved config).
On the Mac, add to the MCP server env:
DESKTOP_BRIDGE_STATUS_URL=https://home.jameymcelveen.com/api/heartbeat
DESKTOP_BRIDGE_STATUS_TOKEN=<HEARTBEAT_TOKEN>License
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