DesktopBridge
DesktopBridge 🌉
macOS용 로컬 Model Context Protocol 서버입니다. Claude(또는 모든 MCP 호스트)가 stdio를 통해 이 서버와 통신하며 다음 작업을 수행할 수 있습니다:
허용된 디렉터리(allowlisted directories) 내 파일 읽기, 쓰기, 나열, 검색
CPU / 메모리 / 디스크 통계, 가동 시간, 그리고 편집된(redacted) 환경 변수 읽기
실행 중인 애플리케이션 나열
분리된 stdout/stderr, 타임아웃, 선택적 진행률 스트리밍을 지원하는 셸 명령 실행
클립보드 읽기 및 쓰기
스크린샷 캡처 및 디스플레이 나열
이 프로세스는 프로세스를 실행한 사용자와 동일한 OS 권한을 가집니다. 모델에게 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을 완전히 종료하고 다시 엽니다.
MCP 도구(브리지 아이콘 🌉) 아래에 desktop-bridge가 나타나는지 확인합니다.
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이 명령은 빌드된 stdio 서버에 대해 MCP Inspector를 실행합니다. list_roots를 호출한 다음 get_system_info를 호출하세요.
로그는 stderr로만 출력됩니다. 이 프로세스에서 console.log를 사용하지 마세요 — stdout은 JSON-RPC 채널입니다.
환경 변수
변수 | 기본값 | 의미 |
|
| 파일 도구가 접근할 수 있는 쉼표로 구분된 디렉터리 목록. 스크린샷이 저장될 공간을 위해 OS 임시 디렉터리가 항상 추가됩니다. |
|
| 단일 파일 읽기/쓰기의 최대 크기 (1 KiB–100 MiB). |
|
| 기본 |
|
| 결합된 stdout+stderr 캡처 상한. 초과 출력은 프로세스를 종료하고 |
|
|
|
|
| true인 경우 |
| 설정 안 됨 | 상태 사이트용 하트비트 POST URL ( |
| 설정 안 됨 | 사이트의 |
|
| 하트비트 간격 (5초–5분). |
주석이 달린 템플릿은 .env.example을 복사하세요. 서버는 .env 파일이 아닌 프로세스 환경 변수(Claude Desktop env 블록)를 읽습니다.
도구
도구 | 기능 |
| 허용된 디렉터리 및 파일 크기 상한 |
| 텍스트(선택적 줄 범위) 또는 base64 |
| 생성/덮어쓰기/추가; 선택적 |
| 이름, 유형, 크기, 수정 시간, 권한 |
| 이름에 대한 Glob 및/또는 파일 내용에 대한 정규식 |
| CPU %, 부하, 메모리, |
| 호스트, 가동 시간, 사용자, 편집된 환경 변수 |
| System Events를 통한 GUI(또는 전체) 프로세스 |
| 분리된 stdout/stderr을 지원하는 셸; |
|
|
| 디스플레이 이름, 기본 플래그, 배율, 프레임 |
|
|
리소스: desktop://roots, desktop://system/info.
프롬프트: inspect_desktop, find_file.
보안 모델
파일: 모든 경로는
realpath로 확인됩니다. 확인된 경로는 구성된 루트 안에 있어야 합니다..., 추가 슬래시, 루트를 벗어나는 심볼릭 링크는 거부됩니다.홈 디렉터리는 기본 루트가 아닙니다. 이렇게 하면 의도적으로 추가하기 전까지
~/.ssh및 유사한 디렉터리에 접근할 수 없습니다.셸: 여전히 전체 사용자 셸입니다. cwd가 제한되어 있어도 명령은 어디로든
cd할 수 있습니다. 파일/클립보드/화면 도구만 원한다면DESKTOP_BRIDGE_ALLOW_SHELL=false로 비활성화하세요.환경 변수: password/token/secret/key/credential/cookie/session과 일치하는 키는
[redacted]로 대체됩니다.Stdio: 네트워크 리스너가 없습니다. 호스트가 이 프로세스를 생성합니다.
macOS 권한
기능 | 권한 |
스크린샷 | Node를 실행한 앱(Claude Desktop, Cursor 또는 Terminal)에 대한 화면 기록 권한 |
| macOS가 요청하면 자동화 → System Events |
접근성 의존도가 높은 앱 | 제목이 숨겨질 수 있음; 도구는 어느 쪽이든 프로세스 이름을 나열합니다 |
screencapture가 실패하면 시스템 설정 → 개인정보 보호 및 보안 → 화면 기록을 열고 호스트 앱을 활성화한 다음 다시 시작하세요.
개발
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, 좌표를 재정의하지 않으면 Florence SC 기준 |
Mac | DesktopBridge 하트비트: 온라인 / 지연 / 오프라인, IP, 부하 |
스크래치 | 자동 저장 메모 |
말씀 | 매일 성경 구절 |
Chrome/Safari/Firefox 홈페이지를 https://home.jameymcelveen.com으로 설정하세요(브라우저가 페이지가 직접 설정하는 것을 허용하지 않습니다). 세션 쿠키는 30일 동안 유지됩니다. /는 검색에 포커스합니다. ⌘K도 동일합니다.
main에 푸시하면 CI가 실행된 후 Vercel(사이트)과 Railway(하트비트 + 저장된 설정)에 배포됩니다.
Mac에서 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