当 ChatGPT 和 Claude 不再只负责“告诉你怎么做”而是真的能读取项目、检查 Git、运行任务、修改文件时Agent 才算真正进入了本地工作流。但问题也随之而来怎样让云端 AI 操作真实 Mac同时避免把一个无限制 Shell 直接暴露到公网最近我把自己一直在用的工具整理成了一个完整项目并正式开源Mac MCP v3.0.0。它是一个原生 SwiftUI 菜单栏应用通过标准 MCPModel Context Protocol同时连接 ChatGPT 和 Claude。应用内置本地 Runtime、权限策略、审计、持久任务、PTY、Keychain 和 frpc 隧道。用户不需要额外安装 Python、Node.js也不是在脚本外面简单套一个 GUI。项目地址https://github.com/zhaoxinyi02/MY_GPT首个 Releasehttps://github.com/zhaoxinyi02/MY_GPT/releases/tag/v3.0.0一、为什么要做 Mac MCP云端大模型默认看不到你的本地项目、文件系统和运行环境。常见解决方案通常有两个极端继续复制粘贴代码、日志和命令结果安全但效率低直接开放 SSH 或无限制 Shell能力很强但风险不可接受。我希望获得的是中间那一层能力必须是真实的而不是界面上的假开关文件读写和命令执行必须有工作区边界AI 的每次敏感操作都应该被审计长任务不能因为一次请求结束就消失编码 Agent 修改代码时应该先隔离、看 diff再批准应用ChatGPT 和 Claude 应该共用同一个标准接口而不是维护两套插件。这就是 Mac MCP 的设计目标。二、整体架构云端 AI 怎么连到家里的 MacChatGPT 和 Claude 都运行在云端它们无法访问localhost也无法直接访问家庭局域网地址。因此完整链路中必须有一个具备公网 IPv4 的服务器。ChatGPT / Claude │ │ HTTPS Streamable HTTP MCP ▼ 你的域名 Nginx公网服务器 │ ▼ frps :7000 ────── 127.0.0.1:18080 ▲ │ TCP TLS 反向隧道 │ Mac MCP 内置 frpc │ ▼ 原生 Swift MCP Runtime :8765 │ ├─ Policy / Audit / SQLite / Keychain ├─ Files / Git / Workspace / Assets ├─ Job Manager / PTY Broker └─ Isolated Codex Agent Worktree这里有一个容易误解的点公网服务器不是在远程执行 Mac 命令。它只负责 HTTPS 和反向转发真正的 Runtime 始终监听在 Mac 的127.0.0.1:8765。三、不是 Python 套壳原生 macOS RuntimeMac MCP v3 的桌面界面、菜单栏生命周期、MCP Server、策略层、Job Manager、PTY Broker、SQLite、Keychain 和 Agent 编排都使用 Swift 实现。关闭窗口以后菜单栏、Runtime 和隧道继续后台运行只有明确退出应用才会停止本地服务。在开启写入与命令权限后目前 Runtime 会动态暴露52 个 MCP 工具主要分为以下几组工具组主要能力Runtime 与策略健康检查、客户端身份、ABAC 策略、事件、审计文件与项目文件读取、检索、元数据、项目发现、Git 状态安全写入SHA-256 并发校验、dry-run、自动备份、补丁应用SecretmacOS Keychain 存储元数据和真实值分离Job Manager启动、日志、输入、暂停、恢复、取消、结果、产物PTY Broker持久终端、读写、expect、resize、signal、GCAgent Runner临时 Git worktree、Codex sandbox、diff、审批工具列表不是固定写死的。关闭“允许写入文件”或“允许运行命令”以后相应工具会直接从tools/list消失而不是按钮关了但后台仍然能调用。四、安全设计给 Agent 能力也给它边界Mac MCP 的核心不是“能执行命令”而是把真实能力放进可见、可审计的边界中。1. 四档权限safe优先只读与诊断workspace限制在指定工作区trusted适合明确受信任的自动化unrestricted只允许限时开启默认 1 小时后回退。2. 文件并发安全写入工具支持expectedSha256。当文件在 Agent 读取后被其他程序修改写入会因为哈希不一致而失败避免静默覆盖用户的新内容。同时支持dryRun先预览不落盘时间戳备份工作区逃逸检查.env、SSH、Git 内部文件等保护路径。3. Secret 与审计Secret 的真实值保存在 macOS Keychain。SQLite 只保存名称、用途等元数据审计内容在写入数据库前完成脱敏。4. Agent 代码隔离编码 Agent 不会直接在原项目里边跑边改。它会创建临时 Git worktree并使用 Codex 的workspace-writesandbox。任务完成后先读取完整 diff再通过agent_task_approve应用回原工作区。项目明确不提供通用 root shell也没有 force-push 工具。五、部署前必须具备的条件这部分不能省略。要让云端 ChatGPT/Claude 访问你的 Mac需要Apple Silicon MacmacOS 13 或更高版本一台具有公网 IPv4 的 Linux 服务器一个域名或独立子域名A 记录指向服务器受公开信任的 HTTPS 证书服务器放行 TCP80、443和 frps 端口例如7000ChatGPT 或 Claude 账号支持自定义远程 MCP Connector。不要把 Mac 的8765端口直接映射到公网。正确方式是Nginx 终止 HTTPSfrps/frpc 建立 TCPTLS 隧道本地 Runtime 继续只监听回环地址。六、推荐安装方式让 Agent 阅读教程后帮你部署项目提供了适合 Agent 直接阅读的中英文教程。推荐把下面这段提示词发给 Codex、Claude Code 或其他你信任的编码 Agent请阅读 https://raw.githubusercontent.com/zhaoxinyi02/MY_GPT/master/docs/SETUP.zh-CN.md 并帮我从零部署 Mac MCP。任何修改前先向我询问缺少的参数不要输出、提交或上传 我的 SSH 私钥、frp Token 和 MCP 路径密钥修改服务器配置前先备份并逐层验证部署结果。Agent 接下来应该向你询问而不是自行编造以下内容公网服务器 IPSSH 用户、端口和私钥路径MCP 域名frps 端口和远端转发端口Mac 工作区路径期望使用的权限档位。完整中文教程https://github.com/zhaoxinyi02/MY_GPT/blob/master/docs/SETUP.zh-CN.md七、连接 ChatGPT 和 Claude应用四项状态全部变绿后点击“复制”获取完整 MCP 地址https://mcp.example.com/mcp/private-secret随机路径本身相当于 Bearer 凭据不能出现在公开截图、Issue 或日志中。应用界面默认将其显示为private-secret复制按钮仍会复制真实地址。ChatGPT进入Settings → Apps Connectors → Advanced settings → Developer mode创建新 App将 Server URL 设置为完整地址Authentication 选择None。Claude进入Settings → Connectors → Add custom connector名称填写Mac MCP粘贴完整地址OAuth Client ID 和 Secret 留空。Claude 还需要在实际会话中启用这个 Connector。首次连接建议让模型执行请调用 runtime_diagnostics报告 apiVersion、schemaVersion 和 rootShell 状态。确认成功以后再测试只读文件工具最后才考虑开启写入和命令权限。八、从源码构建需要 Xcode Command Line Tools。构建脚本会自动下载固定版本的frpc v0.70.0并校验 SHA-256不会把开发者本机.env、服务器 IP 或 Token 打进安装包。gitclone https://github.com/zhaoxinyi02/MY_GPT.gitcdMY_GPTbashscripts/build-native-app.sh dittodist/Mac MCP.app/Applications/Mac MCP.app首个公开版本使用 ad-hoc 签名暂时还没有 Apple Notarization。核对 Release 的 SHA-256 后如果 Gatekeeper 阻止启动xattr-drcom.apple.quarantine/Applications/Mac MCP.appopen/Applications/Mac MCP.app九、开源仓库里已经配置了什么为了让项目适合社区协作仓库已经配置中英文 README 与部署教程Bug、Feature、Setup Issue FormPull Request 模板和 CODEOWNERSCI 原生 macOS 构建与 Bundle 安全检查Gitleaks 历史 Secret ScanDependabot、自动标签和 Release DrafterRelease 自动构建、ZIP 打包与 SHA-256Branch Protection、Review、禁止强推与私密漏洞报告。真实.env、SSH 私钥、frpc Token、日志和本机配置从未进入公开仓库。十、总结我并不想再做一个聊天窗口。Mac MCP 更关心的是怎样给 AI 一双真正能工作的手同时让这双手可控、可审计、可撤回。如果你也在研究 MCP、本地 Agent、Claude/ChatGPT 工具调用或 macOS 自动化欢迎试用、提 Issue 或提交 PR。GitHubhttps://github.com/zhaoxinyi02/MY_GPTv3.0.0 Releasehttps://github.com/zhaoxinyi02/MY_GPT/releases/tag/v3.0.0中文教程https://github.com/zhaoxinyi02/MY_GPT/blob/master/docs/SETUP.zh-CN.mdMCP、ChatGPT、Claude、AI Agent、macOS、SwiftUI、开源