ChatGPT自动化服务

通过AppleScript和macOS辅助功能树自动化ChatGPT桌面应用,无需API密钥即可访问ChatGPT Pro功能(o1、深度研究、GPTs)。

  • by mark-liu
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mark-liu/chatgpt-mcp

使用说明

chatgpt mcp

MCP服务器,自动化ChatGPT macOS桌面应用程序。从Claude Code或任何MCP客户端访问ChatGPT Pro功能(o1,深度研究,GPT)-无需API密钥。

分叉自 xncbf/chatgpt-mcp 进行了重大修复。

为什么

ChatGPT Pro具有API无法提供的模型和功能(o1 Pro、深度研究、自定义GPT)。该服务器通过AppleScript和macOS可访问性树自动化桌面应用程序,弥合了这一差距。

与上游的主要区别

  • 不要把注意力转移到阅读上 --读取AX树而不激活ChatGPT,因此您可以在它轮询完成时继续工作
  • 剪贴板粘贴 而不是按字符注入按键——即时,保留格式
  • 可配置轮询 --快速模式(5秒轮询,60秒超时)用于快速查询,深度模式(15分钟轮询,1小时超时)用于o1/深度研究
  • 文本稳定性检测 --当按钮启发式失败时发出回退完成信号(连续3次相同的读取=完成)
  • 子进程超时 --所有AppleScript调用在30秒后超时,而不是永远挂起

运作原理

  1. 发送:激活ChatGPT一次,打开新对话(Cmd+N)或导航到现有对话,通过剪贴板粘贴提示
  2. 投票:被动读取可访问性树(无焦点窃取),寻找两个完成信号:
    • 按钮启发式:模型选择按钮后接语音/转录按钮=空闲状态
    • 文本稳定性:对话文本连续3次阅读保持不变
  3. 返回:从AX树中提取所有静态文本,清理UI工件,返回响应

会话管理

  • 列表:在不激活ChatGPT的情况下读取侧边栏AX树——没有焦点窃取
  • 导航:激活ChatGPT一次(单击需要焦点),单击匹配的侧边栏项
  • 阅读:导航到对话,然后通过现有的被动阅读器阅读其内容

安装

pip install chatgpt-desktop-mcp

或者在不安装的情况下运行:

uvx chatgpt-desktop-mcp

CLI入口点是 chatgpt-mcp (两者 chatgpt-mcp 和 chatgpt-desktop-mcp 工作)。

使用Claude代码进行配置

claude mcp add chatgpt -s user -- uvx chatgpt-desktop-mcp

需求

  • macOS(AppleScript+辅助功能树)
  • ChatGPT桌面应用程序 已安装并登录
  • 授予您的终端的无障碍权限(系统设置>隐私和安全>无障碍)

工具

ask_chatgpt_tool

向ChatGPT发送提示并等待响应。默认情况下打开新对话,或在以下情况下继续现有对话 conversation 已指定。

参数 类型 默认值 说明
prompt str 必填 要发送的消息
quick bool的。 False True:5秒轮询,60秒超时。 False:15分钟轮询,1小时超时
conversation str "" 要继续的可选对话标题(子字符串匹配,不区分大小写)。如果为空,则开始新的对话

get_chatgpt_response_tool

阅读当前对话,不要发送任何内容。使用深度轮询等待完成。

list_conversations_tool

在ChatGPT侧栏中列出对话,而不会转移注意力。返回可与以下内容一起使用的编号标题 read_conversation_tool 或 conversation 参数 ask_chatgpt_tool.

read_conversation_tool

按标题导航到现有对话并阅读其全部内容。

参数 类型 默认值 说明
conversation str 必填 要匹配的标题(子字符串,不区分大小写)

激活ChatGPT一次,单击侧边栏项,然后读取对话文本。

局限性

  • 仅英文按钮检测 --AppleScript检查英文按钮标签(“语音”、“转录”、“型号”、“GPT”)。非英语ChatGPT UI将中断完成检测。
  • 完成检测是启发式的 -它通过读取按钮序列和文本稳定性来工作,而不是API信号。存在边缘案例。
  • 剪贴板竞赛窗口 --在发送过程中有一个约0.7s的窗口,剪贴板中包含您的提示。之后恢复。
  • 仅限macOS --依赖于AppleScript和可访问性树。
  • 一次一个对话 --桌面应用程序有一个活动对话。并发发送将发生冲突。

许可证

麻省理工学院