구조화된 UI 접근, 스크린샷, OCR을 통해 AI agent가 macOS 애플리케이션을 보고 조작할 수 있도록 지원합니다.
다른 이름 wende/macbeth
- 스타
- 4
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- 0.2.4
- 마지막 커밋
- 2026년 9월 20일
- 라이선스
- MIT
Macbeth MCP란?
Macbeth은(는) MCP server입니다. 구조화된 UI 접근, 스크린샷, OCR을 통해 AI agent가 macOS 애플리케이션을 보고 조작할 수 있도록 지원합니다.
프로젝트 README에서 생성된 요약
Macbeth MCP server 정보
Macbeth는 구조화된 UI 데이터, 스크린샷, OCR을 사용하여 AI agent가 macOS 애플리케이션과 상호작용할 수 있는 제어 레이어를 제공합니다. 이는 agent가 네이티브 및 Electron 기반 인터페이스를 모두 보고 조작할 수 있도록 돕는 가교 역할을 합니다. 개발자는 npx를 사용하는 로컬 stdio MCP server를 통해 통합하거나 전용 TypeScript API를 통해 통합할 수 있습니다. 이 시스템은 macOS 14 이상에서 작동하도록 설계되었으며 Node.js 20 이상이 필요합니다.
단순히 시각적 좌표에만 의존하는 대신, 이 server는 접근성 트리(accessibility trees)를 우선적으로 사용하여 역할, 레이블, 값을 쿼리합니다. 메타데이터가 누락되었거나 불완전한 경우, ScreenCaptureKit과 Vision OCR을 사용하여 화면을 해석하는 방식으로 전환합니다. Logic Pro, System Settings, Mail과 같은 특정 애플리케이션을 위한 내장 SKILL을 포함하고 있어 agent가 복잡한 워크플로우를 탐색하는 데 도움을 줍니다. 전체 상호작용 기능을 활성화하려면 사용자가 Accessibility 및 화면 기록 권한을 허용해야 합니다.
활용 사례
- 1복잡한 크리에이티브 소프트웨어 자동화Logic Pro와 같은 전문 오디오 도구 내의 설정을 조정하도록 agent에게 지시합니다.
- 2시스템 구성 관리AI에게 현재 macOS 방화벽 설정 상태를 검사하고 보고하도록 요청합니다.
- 3창에서 텍스트 추출OCR을 사용하여 Notes와 같은 특정 애플리케이션 창에서 보이는 모든 텍스트를 가져옵니다.
- 4Electron 애플리케이션 조작표준 API가 없는 애플리케이션의 경우 노출된 인터페이스를 사용하여 탐색합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
Macbeth MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 Macbeth MCP 설치
$ claude mcp add macbeth -- npx -y macbethCursor에 Macbeth MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"macbeth": {
"command": "npx",
"args": [
"-y",
"macbeth"
]
}
}
}VS Code에 Macbeth MCP 설치
.vscode/mcp.json
{
"servers": {
"macbeth": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"macbeth"
]
}
}
}VS Code CLI에 Macbeth MCP 설치
$ code --add-mcp '{"name":"macbeth","type":"stdio","command":"npx","args":["-y","macbeth"]}'Claude Desktop에 Macbeth MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"macbeth": {
"command": "npx",
"args": [
"-y",
"macbeth"
]
}
}
}Codex에 Macbeth MCP 설치
$ codex mcp add macbeth -- npx -y macbethCodex config.toml에 Macbeth MCP 설치
~/.codex/config.toml
[mcp_servers.macbeth] command = "npx" args = ["-y", "macbeth"]
Gemini CLI에 Macbeth MCP 설치
$ gemini mcp add -s user macbeth npx -- -y macbethGemini settings.json에 Macbeth MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"macbeth": {
"command": "npx",
"args": [
"-y",
"macbeth"
]
}
}
}자동 검사
2026년 11월 14일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능wende/macbeth is public and reachablegithub.com/wende/macbeth ↗통과
- 패키지가 이 저장소를 소스로 명시macbeth names wende/macbeth as sourcenpmjs.com/package/macbeth ↗통과
- 빌드 출처(Sigstore 증명)Sigstore attestation for macbethnpmjs.com/package/macbeth/v/0.2.4#provenance ↗통과
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-09-20github.com/wende/macbeth ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from macbeth통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음99 resolved dependencies checked; no critical advisoryosv.dev ↗통과
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기Quickstart
Give Claude Code access to Macbeth:
claude mcp add macbeth -- npx -y macbeth
Then ask it to verify the connection:
Using Macbeth, list the running applications, connect to Finder, inspect its front window, and summarize the first few controls you can see. Do not perform any other actions.
Macbeth ships with a prebuilt, signed and notarized universal daemon. No Swift toolchain or manual service installation is required. If setup fails, run npx macbeth doctor; it prints a self-contained diagnostic prompt you can paste back into your agent.
Any MCP client that can launch a stdio server can use npx -y macbeth. See MCP setup for generic configuration, updates, and the complete tool list.
Add Macbeth as an MCP server using
npx -y macbeth. Runnpx macbeth doctor, guide me through granting only the permissions I need, and verify the setup by inspecting Finder. Do not take any unrelated actions.
Across your Mac
Work inside Unity, Logic Pro, and other complex tools
“In Logic Pro, set the project tempo to 128 BPM and start playback.”
Macbeth combines structured controls, menus, keyboard input, screenshots, OCR, and application-specific guidance. Logic Pro has a dedicated skill. Applications with thinner accessibility trees, including parts of Unity, can combine structured controls with keyboard, menu, screenshot, and OCR fallbacks.
Automate macOS itself
“Open System Settings, find the firewall controls, and report their current state without changing anything.”
Macbeth can inspect named controls and values, select native menu items, and use keyboard input when a semantic action is unavailable.
Use applications even when they have no API
“Open HEY, find the newest visible thread from the design team, and summarize it without sending or changing anything.”
Macbeth can work through exposed Electron interfaces even when the service does not provide the API your agent needs. HEY works through Macbeth's generic Electron support; results vary with the application's accessibility tree and version.
See what the accessibility tree misses
“Capture the frontmost Notes window and extract all visible text.”
ScreenCaptureKit screenshots and local Vision OCR provide a fallback for content that macOS does not expose as useful accessibility data.
Build repeatable scripts and tests
The same engine is available as a TypeScript API with lazy locators, auto-waiting actions, explicit state waits, screenshots, and application connections.
[!IMPORTANT] Macbeth can act inside applications on your behalf. Connect only trusted agents and require approval for consequential actions.
Why Macbeth?
- Use your own agent. Macbeth is a control layer, not a model or agent runtime.
- Structured when possible. Query roles, labels, values, enabled state, hierarchy, and stable handles instead of relying only on coordinates.
- Visual when necessary. Fall back to window capture and OCR when accessibility metadata is thin.
- Application-aware. Versioned skills preserve workflows, shortcuts, and known failure modes.
- Scriptable. Use the same primitives interactively over MCP or directly from TypeScript.
Structured before pixels
| Capability | Typical screenshot-driven agent | Macbeth |
|---|---|---|
| Find a labeled control | Visual inference | Accessibility query when exposed |
| Read role, value, and state | Inferred | Structured attributes |
| Wait for a UI change | Usually observed through repeated captures | Explicit waits and auto-waiting actions |
| Handle incomplete UI metadata | Vision/OCR | Accessibility first, screenshot/OCR fallback |
| Reuse application knowledge | Prompt-dependent | Bundled, versioned skills |
Accessibility information can itself be incomplete or misleading. Macbeth is a hybrid interface: it uses stronger structured primitives when macOS exposes them and keeps visual and system-level fallbacks available when it does not.
Security and limitations
- Macbeth requires macOS 14 or newer and Node.js 20 or newer.
- Accessibility permission is required for UI inspection and interaction. Screen Recording is required only for screenshots and window OCR.
- Application accessibility quality varies. Custom-rendered canvases, games, and some creative tools may require menus, screenshots, OCR, keyboard input, or application-specific guidance.
- Interface changes between application versions can break specialized workflows.
- The interaction glow makes Macbeth activity visible, but it is not an approval system or a complete audit log.
- Agents can make mistakes. Use human review for destructive, financial, publishing, or privacy-sensitive actions.
Macbeth uses a local stdio MCP server and a Unix-domain socket; it does not open a TCP listener. Screenshots requested through MCP are written to a temporary directory and are not automatically deleted. Read the security model for data flow, permission revocation, local-process risks, and safer operating practices.
TypeScript API
npm install macbeth
import { connect } from "macbeth";
const app = await connect("TextEdit");
await app.window("Untitled").textField().fill("Hello from Macbeth");
await app.pressKey("s", ["cmd"]);
See Developing with Macbeth for locators, screenshots, Electron behavior, lifecycle, and tests.
Teach Macbeth an application
A Macbeth skill is a SKILL.md file, optionally accompanied by runnable scripts, that teaches an agent reliable workflows and pitfalls. Call load_skill with no arguments for the core Macbeth guide. Bundled app skills cover Calendar, Contacts, Logic Pro, Mail, Maps, Messages, Music, Notes, Reminders, Safari, System Settings, and generic Electron applications.
You can add a skill without changing the Swift daemon. Start with the contribution guide and include a reproducible prompt, tested application version, expected result, and honest failure modes.
Documentation
| Guide | Contents |
|---|---|
| MCP server | Installation, smoke test, tools, skills, and updates |
| CLI | Every MCP tool as a macbeth <tool> subcommand |
| TypeScript API | Client API, locators, Electron, and tests |
| Architecture | Daemon, protocol, fallbacks, and design notes |
| Security | Trust boundaries, data handling, and permission revocation |
| Troubleshooting | Diagnostics and common setup failures |
| Contributing | Development workflow and application skills |
Requirements
- macOS 14 (Sonoma) or later
- Node.js 20+
- Swift 6.0+ only when building the daemon from source
License
MIT
Macbeth MCP 질문
Macbeth MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add macbeth -- npx -y macbeth를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
Macbeth MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
Macbeth의 시스템 요구 사항은 무엇인가요?
Macbeth는 macOS 14 (Sonoma) 이상 및 Node.js 20 이상이 필요합니다.
Claude Code에 Macbeth를 어떻게 추가하나요?
claude mcp add macbeth -- npx -y macbeth 명령어를 사용하여 추가할 수 있습니다.
Macbeth를 사용하려면 특별한 권한이 필요한가요?
네, UI 검사 및 상호작용을 위한 Accessibility 권한과 스크린샷 및 창 OCR을 위한 화면 기록 권한이 필요합니다.
API가 없는 애플리케이션에서도 Macbeth가 작동하나요?
네, 노출된 Electron 인터페이스를 통해 작동할 수 있으며, 접근성 메타데이터를 사용할 수 없는 경우 스크린샷 및 OCR과 같은 시각적 대체 수단을 사용합니다.