开源 Mac MCP:让 ChatGPT 和 Claude 直接操作你的 Mac,原生 Swift + 52 个工具
当 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、开源

相关新闻

Docker容器端口映射动态修改实战指南

Docker容器端口映射动态修改实战指南

1. 为什么需要修改运行中容器的端口映射?在实际的Docker容器运维过程中,我们经常会遇到需要调整容器端口映射的场景。想象一下这样的情境:你正在运行一个Nginx容器,最初配置了80:80的端口映射,但突然发现这个端口已经被…

2026/10/11 19:40:30 阅读更多 →
Unity Lua实现 加载场景Loading进度

Unity Lua实现 加载场景Loading进度

废话不多说 直接上代码!local async UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(sceneName) ShowLoadingAsync(async)---异步显示loading进度 local function ShowLoadingAsync(async)local toProgress 0local displayProgress 0async.allowScene…

2026/10/11 19:40:32 阅读更多 →
《重返未来:1999》联动玩法深度解析:聚合试炼机制与实战攻略

《重返未来:1999》联动玩法深度解析:聚合试炼机制与实战攻略

如果你是一个《重返未来:1999》的玩家,最近打开游戏,可能会被一个极具冲击力的画面搞懵:熟悉的角色们,怎么穿上了《原子之心》里那种充满苏联未来主义风格的机械外骨骼?这并非幻觉,而是两款风格…

2026/10/11 19:40:31 阅读更多 →

最新新闻

openclaw 用例翻译笔记:Event Guest Confirmation 的 Twilio 与 OpenAI 配置拆解

openclaw 用例翻译笔记:Event Guest Confirmation 的 Twilio 与 OpenAI 配置拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 15:04:46 阅读更多 →
FastReport批量打印实战:从循环直打到队列调度的稳定方案

FastReport批量打印实战:从循环直打到队列调度的稳定方案

1. 批量打印这件事,为什么值得单独拎出来说做过企业信息化的人都有一个共识:报表模块往往是项目里最不起眼、但上线后挨骂最多的部分。单张打印谁都会做,拖一个控件、绑一个数据源、点一下预览,完事。可一旦业务方甩过来一句“这批…

2026/10/12 15:04:46 阅读更多 →
C++实战:从CSV解析到疫情数据统计管线

C++实战:从CSV解析到疫情数据统计管线

1. 从一份CSV到一套分析管线:这个项目的真实定位很多人看到“用C分析疫情数据”这个标题,第一反应是:为什么不用Python?pandas几行代码就能搞定的事,何必用C折腾?这个问题我当初也问过自己。后来真正动手做…

2026/10/12 15:04:46 阅读更多 →
TDSC 2025区块链论文速读指南:从三看三问到笔记沉淀

TDSC 2025区块链论文速读指南:从三看三问到笔记沉淀

干过区块链方向研究的人应该都有这种体验:周末翻三篇论文,合上PDF之后能复述出主线的没几篇,更别提把方法复现出来了。尤其是TDSC这种CCF A类老牌期刊,随便一篇就是三十页起步,形式化模型、安全证明、系统实验一个不落…

2026/10/12 15:04:46 阅读更多 →
【Spring AI Alibaba】百炼工作流 + Multi-Agent 搭建电商智能导购:把 Base URL 改到 TaoToken 的完整配置

【Spring AI Alibaba】百炼工作流 + Multi-Agent 搭建电商智能导购:把 Base URL 改到 TaoToken 的完整配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 15:04:45 阅读更多 →
基于SSM+Vue的流浪动物领养助养系统毕业设计全流程解析

基于SSM+Vue的流浪动物领养助养系统毕业设计全流程解析

去年秋招失败后的那段时间,我每天从学校回出租屋都要绕路经过一家流浪动物救助站。救助站的负责人是个四十多岁的大姐,她给我看了三本厚得像字典的纸质登记册,里面密密麻麻写着编号、转账记录、领养人电话。她说他们最缺的不是爱心&#xff0…

2026/10/12 15:03:44 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →