Skip to main content
Glama

DesktopBridge 🌉

CI Home Node License: MIT

Локальный сервер 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

  1. Соберите сервер (npm run build).

  2. Откройте Claude Desktop → Settings → Developer → Edit Config.

  3. Объедините блок из 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"
      }
    }
  }
}
  1. Полностью выйдите и снова откройте Claude Desktop.

  2. Подтвердите, что 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.

Окружение

Переменная

По умолчанию

Значение

DESKTOP_BRIDGE_ROOTS

~/Desktop, ~/Documents, ~/Downloads (если существуют)

Каталоги, разделённые запятыми, с которыми могут работать файловые инструменты. Временный каталог ОС всегда добавляется, чтобы скриншоты могли сохраняться.

DESKTOP_BRIDGE_MAX_FILE_BYTES

10485760

Максимальный размер для одного чтения/записи файла (1 КиБ–100 МиБ).

DESKTOP_BRIDGE_COMMAND_TIMEOUT_MS

30000

Таймаут по умолчанию для run_command (100–300000).

DESKTOP_BRIDGE_MAX_OUTPUT_BYTES

1048576

Общий лимит захвата stdout+stderr. Превышение вывода убивает процесс и устанавливает truncated.

DESKTOP_BRIDGE_ALLOW_SHELL

true

Установите false, чтобы отключить run_command.

DESKTOP_BRIDGE_RESTRICT_SHELL_CWD

true

Если true, рабочая директория run_command должна находиться внутри разрешённого корня.

DESKTOP_BRIDGE_STATUS_URL

не задано

URL для POST-heartbeat на сайт статуса (…/api/heartbeat).

DESKTOP_BRIDGE_STATUS_TOKEN

не задано

Bearer-токен, соответствующий HEARTBEAT_TOKEN сайта.

DESKTOP_BRIDGE_STATUS_INTERVAL_MS

15000

Интервал heartbeat (5с–5м).

Скопируйте .env.example для шаблона с комментариями. Сервер читает переменные окружения процесса (блок env в Claude Desktop), а не файл .env.

Инструменты

Инструмент

Что делает

list_roots

Разрешённые каталоги и лимит размера файлов

read_file

Текст (опциональное окно строк) или base64

write_file

Создание/перезапись/добавление; опциональный mkdir -p

list_directory

Имя, тип, размер, mtime, режим

search_files

Глоб по именам и/или regex по содержимому файлов

get_system_stats

Загрузка CPU %, нагрузка, память, df

get_system_info

Хост, время работы, пользователь, урезанное окружение

list_applications

GUI (или все) процессы через System Events

run_command

Оболочка с раздельными stdout/stderr; stream → уведомления о прогрессе

read_clipboard / write_clipboard

pbpaste / pbcopy

get_display_info

Имя дисплея, основной флаг, масштаб, рамка

take_screenshot

PNG через screencapture; возвращает блок изображения, если ≤ 5 МиБ

Ресурсы: 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)

list_applications

Автоматизация → 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. Банги: !g !k !d !gh !yt !w !maps

Ссылки

Те же плитки, что и в локальном приложении-лендинге, плюс свойства. Редактирование как 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

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