mcpField
M
macOS-MCP

macOS-MCP

本地服务
github.com/Jeomon生产力2283 天前更新

关于 macOS-MCP

macOS-MCP 是面向 AI Agent 的开源 MCP 服务,通过 macOS 辅助功能 API 自动化桌面界面,涵盖应用、窗口、输入和浏览器操作。

主要功能

  1. 01通过辅助功能 API 操作界面
  2. 02管理应用与窗口
  3. 03执行键盘和鼠标操作
  4. 04读取界面状态与交互元素
  5. 05执行 Shell 命令和 AppleScript
  6. 06提供 stdio、SSE 与 HTTP 传输

适用场景

  1. 01自动操作 macOS 应用和窗口
  2. 02读取桌面状态并执行界面交互
  3. 03通过脚本完成系统操作

MCP 相关

向 MCP 客户端提供 macOS 桌面自动化工具,包括点击、输入、滚动、窗口控制、网页内容提取和命令执行;支持 stdio、SSE 与 Streamable HTTP。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"jeomon-macos": {
"command": "uvx",
"args": [
"macos-mcp"
]
}
}
}
启动命令uvx macos-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimacos-mcp0.3.6

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP Toplist

🍎 macOS-MCP

许可证 Python 平台:macOS 12+ 最近提交

概述

macOS-MCP 是一款轻量级、开源的模型上下文协议服务,可连接 AI Agent 与 macOS 操作系统。它支持通过大模型无缝自动化操作 macOS,涵盖文件导航、应用控制、UI 交互、浏览器自动化和系统操作等任务。

支持的操作系统

  • macOS 12(Monterey)
  • macOS 13(Ventura)
  • macOS 14(Sonoma)
  • macOS 15(Sequoia)
  • macOS 26(Tahoe)

主要功能

  • 兼容任何大模型(可选视觉能力)
    与传统自动化工具不同,macOS-MCP 无需计算机视觉、微调模型或专门配置。可与 Claude、GPT、Gemini 或其他大模型无缝协作。

  • 原生集成 macOS
    使用辅助功能 API 原生交互 macOS UI 元素。无需变通方案即可打开应用、控制窗口、模拟用户输入并捕获桌面状态。

  • 丰富的自动化工具集
    提供完整的工具集,支持键盘和鼠标操作、窗口管理、UI 状态捕获、从辅助功能树提取交互元素,以及执行 AppleScript。

  • 轻量且开源
    依赖精简,完整源代码基于 MIT 许可证开放。易于设置和部署。

  • 智能上下文感知
    自动检测应用状态(Launchpad、Control Center、Spotlight)。智能扫描菜单栏、程序坞、桌面和系统 UI 元素。

  • 可定制且可扩展
    可轻松扩展自定义工具或修改行为,以满足特定的自动化需求。

安装

前置条件
  • Python:3.11 或更高版本
  • UV 包管理器:使用 pip install uv 或 curl -LsSf https://astral.sh/uv/install.sh | sh 安装
  • macOS:12(Monterey)或更高版本
  • 辅助功能权限:与 UI 元素交互时需要
快速开始

直接运行服务:

uvx macos-mcp serve

# Or with SSE/Streamable HTTP for network access
uvx macos-mcp serve --transport sse --host localhost --port 8000
uvx macos-mcp serve --transport streamable-http --host localhost --port 8000

将其作为后台服务运行,使其立即启动并在每次登录时启动:

macos-mcp install

# Or choose the HTTP transport and bind address explicitly
macos-mcp install --transport sse --host 127.0.0.1 --port 8000

这会在 ~/Library/LaunchAgents/com.macos-mcp.server.plist 安装一个 launchd 启动代理。 使用 macos-mcp uninstall 将其移除。日志写入 ~/.macos-mcp/server.log 和 ~/.macos-mcp/server.error.log。

传输选项
传输方式标志使用场景
stdio(默认)--transport stdio由 Claude Desktop、Cursor 等 MCP 客户端直接连接。
sse--transport sse --host HOST --port PORT通过服务器发送事件实现网络访问
streamable-http--transport streamable-http --host HOST --port PORT通过 HTTP 流式传输实现网络访问(推荐用于生产环境)
授予所需权限

macOS-MCP 需要辅助功能和屏幕录制权限才能正常运行。

辅助功能权限
  1. 打开 系统设置 → 隐私与安全性 → 辅助功能
  2. 点击锁形图标并进行身份验证
  3. 添加以下应用程序:
    • 你的终端应用程序(Terminal、iTerm2、VS Code 等)
    • Python(通常为 /usr/bin/python3 或由 UV 管理的 Python 版本)
    • UV(如果在本地安装,则为 ~/.local/bin/uv;否则为 UV 管理的 Python 环境)
  4. 授予权限后重启终端

对于 uvx 用户: 为你的终端应用程序和 Python 授予权限,因为 uvx 会从 UV 的缓存中运行 Python 包。

如果解释器二进制文件在“+”选择器中显示为灰色/无法选择(这是 UV 管理的 Python 符号链接的已知问题,例如 .venv/bin/python3.12 → ~/.local/share/uv/python/...):不要尝试手动添加。只需启动服务即可——从 v0.3.10 起,它会在启动时使用 prompt 选项调用 AXIsProcessTrustedWithOptions,请求 macOS 显示原生授权对话框,并为你自动注册正在运行的进程。批准该对话框,然后重启服务。

如果你的进程是由已获得辅助功能权限的父进程作为子进程启动(例如某些 Claude Desktop 配置),并且权限检查仍错误地失败,请设置 MACOS_MCP_SKIP_PERMISSION_CHECK=1,将检查降级为警告,而不是退出。

屏幕录制权限

Snapshot 工具需要屏幕录制权限才能截取屏幕截图:

  1. 打开 系统设置 → 隐私与安全性 → 屏幕录制
  2. 点击锁形图标并进行身份验证
  3. 添加与上述相同的应用程序(终端、Python、UV)
  4. 授予权限后重启终端

注意: 如果 Snapshot 工具运行失败,请在系统设置中确认已授予这两项权限。

集成选项
Claude Desktop
  1. 安装 Claude Desktop

  2. 编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "macos-mcp": {
      "command": "uvx",
      "args": ["macos-mcp", "serve"]
    }
  }
}
  1. 重启 Claude Desktop
Claude Desktop(连接到 HTTP 服务)

Claude Desktop 的 claude_desktop_config.json 仅支持基于 stdio 的服务 条目。要连接正在运行的 macOS-MCP HTTP 服务(例如使用 macos-mcp install --transport streamable-http 启动的服务),请使用 mcp-remote 作为 stdio 到 HTTP 的 桥接工具。

这在运行多个 Claude Desktop 实例时尤其有用 (例如通过 Parall 运行)——单个持久运行的 HTTP 服务 可以为所有实例提供服务,避免为每个会话都单独启动一个 macos-mcp 进程所带来的开销。

1. 启动 HTTP 服务(一次性设置):

macos-mcp install --transport streamable-http --host 127.0.0.1 --port 8000

2. 配置 Claude Desktop,通过 mcp-remote 连接:

{
  "mcpServers": {
    "macos-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "http://127.0.0.1:8000/mcp",
        "--transport",
        "http-only"
      ]
    }
  }
}

3. 重启 Claude Desktop。

如果你有多个 Claude Desktop 实例(例如 Parall 克隆实例),请在每个实例的 claude_desktop_config.json 中添加相同的 mcpServers 条目。所有 实例将共用同一个后台服务。

此项目提供了用于批量重新配置的迁移脚本——请参阅 scripts/stdio-to-http-reconfig.sh。

使用身份验证(绑定到 0.0.0.0 时推荐):

# Start server with an auth key
macos-mcp install --transport streamable-http --host 0.0.0.0 --port 8000 \
  --auth-key "your-secret-token"
{
  "mcpServers": {
    "macos-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "http://127.0.0.1:8000/mcp",
        "--transport",
        "http-only",
        "--header",
        "Authorization: Bearer your-secret-token"
      ]
    }
  }
}
Gemini CLI
  1. 安装 Gemini CLI:
npm install -g @google/gemini-cli
  1. 导航到 ~/.gemini 并打开 settings.json

  2. 添加服务配置:

{
  "theme": "Default",
  "mcpServers": {
    "macos-mcp": {
      "command": "uvx",
      "args": ["macos-mcp", "serve"]
    }
  }
}
  1. 重启 Gemini CLI
Claude Code
  1. 安装 Claude Code

  2. 添加到项目配置中,或使用 MCP 市场集成

Pi Agent Pi 未内置 MCP 支持,但可以将 macOS-MCP 安装为 Pi 插件包。该插件包通过标准输入输出启动此 MCP 服务,并提供封装现有 macOS-MCP 工具的便捷 Pi 工具。

一行完成全局设置:

pi install git:github.com/CursorTouch/MacOS-MCP

安装后,重启 Pi 或运行:

/reload

无需安装即可试用:

pi -e git:github.com/CursorTouch/MacOS-MCP

本地检出设置:

git clone https://github.com/CursorTouch/MacOS-MCP.git
cd MacOS-MCP
uv sync
npm install
pi

如果只将扩展复制到另一个 Pi 项目中,请从 macOS-MCP 检出目录运行 Pi,或设置:

export MACOS_MCP_ROOT=/path/to/MacOS-MCP

该扩展提供以下 Pi 工具:

Pi 工具用途
mac_snapshot通过现有的 Snapshot 工具读取当前 macOS 界面状态。
mac_app启动、切换、移动或调整 macOS 应用和窗口的大小。
mac_click点击 mac_snapshot 返回的坐标。
mac_type在 mac_snapshot 返回的坐标处输入文本。
mac_shortcut执行键盘快捷键,例如 command+c 或 command+space。
mac_scroll在当前指针位置或指定坐标处滚动。
mac_wait等待界面变化或加载完成。

建议的 Agent 工作流:

  • 首先调用 mac_snapshot。
  • 使用 Snapshot 返回的坐标调用 mac_click、mac_type 和 mac_scroll。
  • 仅当辅助功能数据缺失或含糊不清时,才使用屏幕截图/视觉识别。

作为 Pi 插件包安装时,该扩展会自动检测 macOS-MCP 检出目录。如果手动复制了扩展,请设置 MACOS_MCP_ROOT=/path/to/MacOS-MCP。

Tau 编码 Agent

Tau 未内置 MCP 支持。此仓库包含一个项目本地的 Tau 扩展,位于 .tau/extensions/macos-mcp/,它通过标准输入输出启动 macOS-MCP 服务,并提供封装现有 macOS-MCP 工具的 Tau 原生工具。

本地检出设置:

git clone https://github.com/CursorTouch/MacOS-MCP.git
cd MacOS-MCP
uv sync
tau

从检出目录运行 Tau 时,它会自动发现 .tau/extensions/*/ 下的项目扩展,并在首次加载时自动安装扩展自身的依赖(在 manifest.json 中声明)。如果 Tau 已在运行,请使用 /reload。

如果只将扩展复制到另一个 Tau 项目中,请从 macOS-MCP 检出目录运行 Tau,或设置:

export MACOS_MCP_ROOT=/path/to/MacOS-MCP

该扩展提供以下 Tau 工具:

Tau 工具用途
mac_snapshot通过现有的 Snapshot 工具读取当前 macOS 界面状态。
mac_app启动、切换或调整 macOS 应用和窗口的大小。
mac_click点击 mac_snapshot 返回的坐标。
mac_type在 mac_snapshot 返回的坐标处输入文本。
mac_shortcut执行键盘快捷键,例如 command+c 或 command+space。
mac_scroll在当前指针位置或指定坐标处滚动。
mac_wait等待界面变化或加载完成。

建议的 Agent 工作流:

  • 首先调用 mac_snapshot。
  • 使用 Snapshot 返回的坐标调用 mac_click、mac_type 和 mac_scroll。
  • 仅当辅助功能数据缺失或含糊不清时,才使用屏幕截图/视觉识别。

该扩展会自动检测 macOS-MCP 检出目录。如果手动复制了扩展,请设置 MACOS_MCP_ROOT=/path/to/MacOS-MCP。

其他集成

任何支持 Model Context Protocol 的客户端,都可以通过在其 MCP 服务设置中配置 uvx macos-mcp serve 命令来集成 macOS-MCP。


MCP 工具

macOS-MCP 为桌面自动化提供了一套全面的工具:

工具用途
Click在指定坐标处单击,支持左键、右键和双击
Type在光标位置输入文本,可选择先清除已有文本
Scroll在聚焦窗口或区域内垂直或水平滚动
Move移动鼠标指针或拖动到指定坐标
Shortcut按下键盘快捷键(Cmd+C、Cmd+Tab 等)
App启动应用、管理窗口(调整大小/移动)、在应用间切换。支持应用名称和 bundle ID
Desktop通过 Accessibility 创建新的 Mission Control 空间(虚拟桌面),并验证空间数量是否增加
Shell执行命令或 AppleScript。使用 mode='osascript' 执行 AppleScript
Scrape提取网页内容并转换为 Markdown 格式
Wait暂停执行指定时长

限制

  • 辅助功能要求:需要在系统设置中手动授予权限
  • 应用兼容性:部分应用对 Accessibility API 的支持有限或不支持
  • 性能差异:包含许多元素的复杂 UI 可能需要较长的遍历时间
  • 文本输入:某些专用输入字段可能无法正确接收按键
  • 身份验证:无法与系统身份验证对话框交互

安全与访问控制

身份验证
macos-mcp serve --transport sse --host 0.0.0.0 --auth-key "your_token"

所有请求都必须包含 Authorization: Bearer your_token 请求头。

IP 允许列表
macos-mcp serve --auth-key "token" --ip-allowlist "203.0.113.0/24,198.51.100.5"

将连接限制为指定的 CIDR 范围。

TLS/HTTPS
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

macos-mcp serve --ssl-certfile cert.pem --ssl-keyfile key.pem
OAuth 2.0 + PKCE

对于使用 OAuth(例如 Claude Desktop)而非静态 API 密钥的 MCP 客户端:

macos-mcp serve --transport streamable-http --host 0.0.0.0 \
  --ssl-certfile ~/.macos-mcp/cert.pem \
  --ssl-keyfile  ~/.macos-mcp/key.pem \
  --oauth-client-id my-client \
  --oauth-client-secret my-secret

Claude Desktop 配置(通过 mcp-remote 桥接程序 — 参见集成选项):

{
  "mcpServers": {
    "macos-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://<host>:8000/mcp",
        "--transport",
        "http-only"
      ]
    }
  }
}

注意: Claude Desktop 的 claude_desktop_config.json 不直接支持 "type": "http" 或 "url" 条目。请按上文所示使用 mcp-remote, 或在 Claude Desktop UI 中通过 Settings → Connectors → Add custom connector 添加服务。

OAuth 服务提供以下端点:

  • GET /.well-known/oauth-authorization-server — 服务元数据(RFC 8414)
  • GET /oauth/authorize — Authorization Code + PKCE(必须使用 S256)
  • POST /oauth/token — 令牌交换(需要客户端密钥)
  • POST /oauth/register — 已禁用;客户端必须预先配置

动态客户端注册已禁用。重定向 URI 只能使用回环 http(s)。 身份验证密钥和 OAuth 可以同时使用 — 两者都可作为有效的 Bearer 令牌。

SSRF 防护

Scrape 工具会阻止:私有 IP、回环地址、链路本地地址、URL 中的凭据以及非 HTTP 协议。

配置文件(~/.macos-mcp/config.toml)

无需每次都传入标志,可将配置保存到 ~/.macos-mcp/config.toml。CLI 标志始终会覆盖配置文件中的值。

搜索顺序:

  1. --config /path/to/config.toml
  2. ~/.macos-mcp/config.toml

stdio — 仅限本地使用,无需安全配置:

[server]
transport = "stdio"

SSE — 网络访问,需配置身份验证和 IP 限制:

[server]
transport = "sse"
host      = "0.0.0.0"
port      = 8000
auth_key  = "your-secret-key"

[security]
ip_allowlist = ["192.168.1.0/24"]

Streamable HTTP — 网络访问,需配置身份验证和 TLS(生产环境推荐):

[server]
transport    = "streamable-http"
host         = "0.0.0.0"
port         = 8000
auth_key     = "your-secret-key"
ssl_certfile = "cert.pem"   # resolved relative to ~/.macos-mcp/
ssl_keyfile  = "key.pem"

[security]
ip_allowlist        = ["192.168.1.0/24"]
oauth_client_id     = "my-client"      # optional — enables OAuth 2.0 + PKCE
oauth_client_secret = "my-secret"

[tools]
exclude = ["Shell", "Scrape"]   # disable specific tools

可用工具名称:App、Shell、Snapshot、Click、Type、Scroll、Move、Shortcut、Wait、Scrape、Notification

将证书和密钥文件放在同一目录中:

~/.macos-mcp/
├── config.toml
├── cert.pem
└── key.pem

直接在该目录中生成自签名证书:

mkdir -p ~/.macos-mcp
openssl req -x509 -newkey rsa:4096 \
  -keyout ~/.macos-mcp/key.pem \
  -out ~/.macos-mcp/cert.pem \
  -days 365 -nodes

环境变量

所有变量均为可选。通过 claude_desktop_config.json 中的 env 键进行设置。

变量默认值描述
ANONYMIZED_TELEMETRYtrue设置为 false 可禁用匿名使用情况遥测。我们绝不会收集个人数据、工具参数或输出。
MACOS_MCP_AUTH_KEY(none)所有 HTTP 请求都必须提供的 Bearer 令牌。可替代 --auth-key CLI 标志。
MACOS_MCP_IP_ALLOWLIST(none)以逗号分隔的允许访问的客户端 IP 或 CIDR 范围列表。可替代 --ip-allowlist CLI 标志。
MACOS_MCP_SSL_CERTFILE(none)TLS 证书文件(.pem)的路径。必须与 MACOS_MCP_SSL_KEYFILE 一起提供。
MACOS_MCP_SSL_KEYFILE(none)TLS 私钥文件(.pem)的路径。必须与 MACOS_MCP_SSL_CERTFILE 一起提供。

claude_desktop_config.json 示例(带身份验证和 TLS 的远程配置):

{
  "mcpServers": {
    "macos-mcp": {
      "command": "uvx",
      "args": ["macos-mcp", "serve", "--transport", "sse", "--host", "0.0.0.0"],
      "env": {
        "MACOS_MCP_AUTH_KEY": "your_token",
        "MACOS_MCP_IP_ALLOWLIST": "203.0.113.0/24",
        "MACOS_MCP_SSL_CERTFILE": "/path/to/cert.pem",
        "MACOS_MCP_SSL_KEYFILE": "/path/to/key.pem"
      }
    }
  }
}

遥测

macOS-MCP 会收集匿名使用情况数据,以帮助改进服务。不会跟踪任何个人信息、工具参数或输出。

如需禁用遥测,请将 ANONYMIZED_TELEMETRY 设置为 false:

{
  "mcpServers": {
    "macos-mcp": {
      "command": "uvx",
      "args": ["macos-mcp", "serve"],
      "env": { "ANONYMIZED_TELEMETRY": "false" }
    }
  }
}

安全

⚠️ 重要安全提示:macOS-MCP 拥有完整的辅助功能 API 权限,并且在未进行沙盒隔离的情况下执行真实的系统操作。它可以执行永久且不可逆的操作。

使用 macOS-MCP 前:

  • ✅ 仅向可信应用授予辅助功能权限
  • ✅ 了解 Shell 命令会以完整的用户权限执行
  • ✅ 执行前检查 AI 生成的操作计划
  • ✅ 仅在数据无价值的虚拟机或隔离环境中使用
  • ✅ 在类似生产环境的场景中测试前创建备份

⛔ 请勿用于:

  • 存有不可替代数据的系统
  • 生产机器或共享系统
  • 受合规法规约束的环境(HIPAA、PCI 等)

详细的安全指南请参阅 SECURITY.md。

贡献

欢迎贡献!请参阅 CONTRIBUTING.md,了解以下内容:

  • 开发环境设置和代码标准
  • 测试要求
  • 拉取请求流程
  • 编码规范(Ruff 格式化,行长为 100 个字符)

许可证

macOS-MCP 根据 MIT 许可证授权,详情请参阅 LICENSE。

致谢

macOS-MCP 基于以下优秀的开源项目构建:

  • PyObjC - Python 到 Objective-C 的桥接
  • Pillow - Python 图像库
  • FastMCP - MCP 框架
  • macOS 辅助功能 API(ApplicationServices)

引用

如果您在研究或项目中使用 macOS-MCP,请引用:

@software{macos-mcp,
  author       = {Jeomon George},
  title        = {macOS-MCP: Lightweight MCP Server for macOS Automation},
  year         = {2025},
  publisher    = {GitHub},
  url          = {https://github.com/Jeomon/macos-mcp}
}

有问题或遇到故障?提交问题,或查看 SECURITY.md 了解安全相关事项。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。