DesktopBridge
DesktopBridge 🌉
Локальный сервер Model Context Protocol для macOS. Claude (или любой MCP-хост) общается с ним через stdio и может:
Читать, записывать, перечислять и искать файлы в разрешённых каталогах
Читать статистику CPU / памяти / диска, время работы и урезанное окружение
Перечислять запущенные приложения
Выполнять команды оболочки с раздельными stdout/stderr, таймаутами и опциональной потоковой передачей прогресса
Читать и записывать буфер обмена
Делать скриншоты и перечислять дисплеи
Этот процесс имеет те же права ОС, что и пользователь, который его запустил. Относитесь к нему как к предоставлению модели терминала на вашем Mac, а затем уменьшите радиус поражения с помощью DESKTOP_BRIDGE_ROOTS.
Требования
macOS (буфер обмена, скриншоты и список приложений используют инструменты Apple)
Node.js 20.19+ (рекомендуется 22 LTS)
Related MCP server: macOS Automator MCP Server
Установка
cd desktop-bridge
npm install
npm run build
npm testСкомпилированная точка входа — dist/index.js.
Подключение к Claude Desktop
Соберите сервер (
npm run build).Откройте Claude Desktop → Settings → Developer → Edit Config.
Объедините блок из
claude_desktop_config.example.json, заменив путь и имена пользователей:
{
"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"
}
}
}
}Полностью выйдите и снова откройте Claude Desktop.
Подтвердите, что desktop-bridge появился в MCP-инструментах (значок моста 🌉).
Файл конфигурации на macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Подключение к Claude Code
claude mcp add desktop-bridge -- node /Users/YOU/dev/desktop-bridge/dist/index.jsИли добавьте тот же блок command / args / env в ~/.claude.json.
Подключение к Cursor
Добавьте в ~/.cursor/mcp.json (или в проектный .cursor/mcp.json):
{
"mcpServers": {
"desktop-bridge": {
"command": "node",
"args": ["/Users/YOU/dev/desktop-bridge/dist/index.js"]
}
}
}Быстрая проверка без хоста
npm run inspectorЭто запускает MCP Inspector для собранного stdio-сервера. Вызовите list_roots, затем get_system_info.
Логи идут только в stderr. Не используйте console.log в этом процессе — stdout является каналом JSON-RPC.
Окружение
Переменная | По умолчанию | Значение |
|
| Каталоги, разделённые запятыми, с которыми могут работать файловые инструменты. Временный каталог ОС всегда добавляется, чтобы скриншоты могли сохраняться. |
|
| Максимальный размер для одного чтения/записи файла (1 КиБ–100 МиБ). |
|
| Таймаут по умолчанию для |
|
| Общий лимит захвата stdout+stderr. Превышение вывода убивает процесс и устанавливает |
|
| Установите |
|
| Если true, рабочая директория |
| не задано | URL для POST-heartbeat на сайт статуса ( |
| не задано | Bearer-токен, соответствующий |
|
| Интервал heartbeat (5с–5м). |
Скопируйте .env.example для шаблона с комментариями. Сервер читает переменные окружения процесса (блок env в Claude Desktop), а не файл .env.
Инструменты
Инструмент | Что делает |
| Разрешённые каталоги и лимит размера файлов |
| Текст (опциональное окно строк) или base64 |
| Создание/перезапись/добавление; опциональный |
| Имя, тип, размер, mtime, режим |
| Глоб по именам и/или regex по содержимому файлов |
| Загрузка CPU %, нагрузка, память, |
| Хост, время работы, пользователь, урезанное окружение |
| GUI (или все) процессы через System Events |
| Оболочка с раздельными stdout/stderr; |
|
|
| Имя дисплея, основной флаг, масштаб, рамка |
| PNG через |
Ресурсы: desktop://roots, desktop://system/info.
Промпты: inspect_desktop, find_file.
Модель безопасности
Файлы: каждый путь проходит через
realpath. Разрешённый путь должен оставаться внутри настроенного корня..., лишние слэши и симлинки, ведущие наружу, отклоняются.Домашний каталог не является корнем по умолчанию. Это держит
~/.sshи подобное вне досягаемости, пока вы не добавите их намеренно.Оболочка: всё ещё полная пользовательская оболочка. Команда может
cdкуда угодно, даже если cwd ограничен. Отключите её с помощьюDESKTOP_BRIDGE_ALLOW_SHELL=false, если нужны только файловые/буферные/экранные инструменты.Окружение: ключи, соответствующие password/token/secret/key/credential/cookie/session, заменяются на
[redacted].Stdio: нет сетевого слушателя. Хост запускает этот процесс.
Разрешения macOS
Функция | Разрешение |
Скриншоты | Запись экрана для приложения, запустившего Node (Claude Desktop, Cursor или Terminal) |
| Автоматизация → System Events, если macOS запросит |
Приложения с тяжёлой доступностью | могут скрывать заголовки; инструмент в любом случае выводит имена процессов |
Если screencapture не работает, откройте System Settings → Privacy & Security → Screen Recording и включите хост-приложение, затем перезапустите его.
Разработка
npm run build # tsc → dist/
npm start # node dist/index.js (stdio)
npm test # compile + node:testСтруктура: src/lib/* (защита путей, запуск процессов, glob/поиск), src/tools/* (MCP-инструменты), src/index.ts (stdio-вход).
Домашняя страница
https://home.jameymcelveen.com — стартовая страница браузера (web/, без дополнительных npm-пакетов). Вход — @mcelveen.us плюс STATUS_PASSWORD.
Что есть сегодня, и лоток для всего, что появится дальше:
Раздел | Примечания |
Поиск | Автофокус. Google / Kagi / DDG. Банги: |
Ссылки | Те же плитки, что и в локальном приложении-лендинге, плюс свойства. Редактирование как JSON в настройках |
Погода | Open-Meteo, °F, Флоренс, Южная Каролина, если не переопределить координаты |
Mac | Heartbeat DesktopBridge: онлайн / устарел / офлайн, IP-адреса, нагрузка |
Заметки | Автосохраняемые заметки |
Слово | Ежедневный стих |
Установите домашнюю страницу Chrome/Safari/Firefox на https://home.jameymcelveen.com (браузеры не позволят странице сделать это за вас). Сессионный cookie действует 30 дней. / фокусирует поиск; ⌘K тоже.
Пуш в main запускает CI, затем разворачивает Vercel (сайт) и Railway (heartbeat + сохранённая конфигурация).
На Mac добавьте в env MCP-сервера:
DESKTOP_BRIDGE_STATUS_URL=https://home.jameymcelveen.com/api/heartbeat
DESKTOP_BRIDGE_STATUS_TOKEN=<HEARTBEAT_TOKEN>Лицензия
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