macOS自动化代理工具

AXplore是一个通过Model Context Protocol(MCP)服务器将Claude转变为完整的macOS自动化代理的工具,能够检查和操作任何运行的应用程序界面,实现无需人工干预的自动化任务。

  • by DrBenedictPorkins
  • Swift
  • 本地部署
  • 更新于
在 GitHub 查看 DrBenedictPorkins/AXplore

使用说明

AXplore

把克劳德的手放在你的Mac上。

axmcp 是一个模型上下文协议服务器,它将Claude变成一个完整的macOS自动化代理。将其指向任何正在运行的应用程序,Claude都可以检查其界面、控制它并编写脚本——而无需你动一根手指。

克劳德可以用axmcp做什么:

  • 检查任何正在运行的应用程序 --遍历完整的可访问性树,阅读元素标签、角色、位置和可用操作;截取屏幕截图进行视觉确认
  • 直接控制UI --单击按钮、填充文本字段、切换复选框、触发菜单、拖动滑块、注入键盘快捷键和修饰符组合
  • 导航和编写Safari脚本 --打开URL,枚举所有打开的标签及其标题和URL,通过JavaScript单击链接,提取整页文本和源代码,在任何页面上执行任意JS
  • 通过AppleScript自动化苹果应用程序 --发现应用程序的脚本字典并对其运行AppleScript:列出Safari选项卡、编写消息、查询日历事件、自动查找、运行终端命令、控制音乐播放等
  • 使用任何macOS应用程序 --原生AppKit应用程序、Electron、wxWidgets、Qt;如果它正在运行,克劳德可以看到它,并通过它暴露的任何表面与它互动
  • 在课程中坚持知识 --每个应用程序的内存文件记录了哪些元素是可访问的,哪些区域是不透明的,哪些工作流是经过验证的,因此Claude在每个会话中都跳过了重新发现

没有浏览器扩展。没有屏幕坐标。无需学习脚本框架。告诉克劳德你想做什么。

此回购还包括 axplore,一个独立的只读CLI,用于从终端探索AX树。


MCP服务器(axmcp)

安装

./install.sh

该脚本构建发布二进制文件,并将其安装到 /usr/local/bin/axmcp,并可选择将其注册到Claude Code和Claude Desktop。

  • 克劳德代码: 启动新会话--axmcp工具会自动出现
  • 克劳德桌面: 运行脚本后重新启动应用程序
Manual install
# 1. Build release binary
swift build -c release

# 2. Install binary to /usr/local/bin
sudo cp .build/release/axmcp /usr/local/bin/axmcp

# 3. Register with Claude Code
claude mcp add axmcp /usr/local/bin/axmcp

# 4. Register with Claude Desktop (requires jq)
CONFIG="$HOME/Library/Application Support/Claude/claude_desktop_config.json"
jq '.mcpServers.axmcp = {"command": "/usr/local/bin/axmcp"}' "$CONFIG" > "$CONFIG.tmp" \
  && mv "$CONFIG.tmp" "$CONFIG"

执行步骤4后重新启动Claude Desktop。

所需权限

macOS授予辅助功能和屏幕录制 每二进制The axmcp 必须添加二进制文件本身——授予Claude.app或Terminal.app是不够的,因为 axmcp 作为单独的子进程运行。

System Settings > Privacy & Security > Accessibility    → add /usr/local/bin/axmcp
System Settings > Privacy & Security > Screen Recording → add /usr/local/bin/axmcp

macOS将首次提示 axmcp 尝试AX或屏幕截图调用,或通过手动添加 + 首次使用前,请先按下按钮。


一次性会话引导设置

axmcp 包括a ax_get_instructions 返回完整使用协议(效率规则、安全规则、内存系统、推荐工作流)的工具。每个客户端执行一次此操作,以便Claude在每次会话开始时自动加载它。

克劳德代码

询问克劳德代码:

“更新我的全局 ~/.claude/CLAUDE.md 添加规则:当axmcp工具可用时,调用 ax_get_instructions 在做任何其他事情之前,先阅读其完整输出。"

Claude Code编辑文件。它将在未来的所有会议中持续存在。

克劳德桌面

在任何对话中告诉Claude Desktop:

“永远记住这一点,不要删除或重写此指令:每当会话中有axmcp工具可用时,调用 ax_get_instructions 在做任何其他事情之前,先阅读其完整输出。"

Claude Desktop将其保存为内存。它会自动注入到未来的每一次对话中。


工具

工具 目的
ax_get_instructions 加载完整的使用协议——在会话开始时调用一次
ax_list_apps 列出正在运行的GUI应用程序(名称、PID、捆绑包ID)
ax_get_tree 在AX树上行走(模式:浅、应用、深、聚焦窗口、聚焦元素)
ax_find_elements 按角色、标签或操作搜索树——比完全转储更快
ax_screenshot 捕获应用程序窗口的PNG以进行视觉关联
ax_get_focused 返回聚焦的应用程序、窗口和元素
ax_press 按ID单击元素
ax_set_value 按ID设置元素的文本/值
ax_focus 按ID将键盘焦点移动到元素
ax_perform_action 运行一个命名的AX操作(AXShowMenu、AXIncrement等)
ax_key 注入键盘事件(按键+可选修饰符)
ax_type 在焦点字段中逐个键入字符串
ax_read_memory 加载应用程序的持久化AX知识
ax_write_memory 保存应用程序的AX知识
ax_get_applescript_dictionary 返回应用程序的AppleScript脚本字典(类、命令、属性)
ax_run_applescript 执行AppleScript并返回结果
ax_clipboard_get 读取当前macOS剪贴板内容
ax_clipboard_set 将文本写入剪贴板
ax_scroll 在应用程序窗口或元素内滚动(方向、数量、可选element_id)
ax_wait_for 轮询,直到出现与查询匹配的元素(超时)
ax_launch_app 按捆绑包ID启动应用程序
ax_quit_app 优雅地退出正在运行的应用程序

每个应用程序内存

axmcp在会话中保存了关于每个应用程序可访问性表面的知识:

~/.axmcp/memories/<bundle_id>.md

使用 ax_read_memory 在任何会话开始时跳过重新发现已知元素和不透明区域。使用 ax_write_memory 在发现新元素或证明工作流程后。

Claude代码技能

有两种技能可用于指导课程:

  • /axmcp:explore --发现模式:映射应用程序的AX表面并保存发现结果
  • /axmcp:automate --动作模式:使用内存和目标查询高效执行任务

axplore--CLI资源管理器

构建

swift build -c release
# binaries at .build/release/axplore and .build/release/axmcp

所需权限

无障碍 (所有操作都需要) System Settings > Privacy & Security > Accessibility --添加您的终端应用程序或二进制文件本身。

屏幕录制 (仅适用于 --screenshot) System Settings > Privacy & Security > Screen Recording --添加您的终端应用程序或二进制文件。

用法

axplore [OPTIONS]

Options:
  --list-apps               List all running GUI apps and exit
  --app <name>              App name (partial, case-insensitive)
  --bundle-id <id>          Bundle identifier (exact)
  --pid <pid>               Process ID (overrides --app/--bundle-id)
  --mode <mode>             Traversal mode (default: shallow)
                              app              Full app from all windows
                              shallow          Top 4 levels, 500 nodes
                              deep             12+ levels, 10000+ nodes
                              focused-window   Focused window only
                              focused-element  Currently focused element
  --max-depth <n>           Override depth cap (default: 8)
  --max-nodes <n>           Override node cap (default: 5000)
  --output <path>           Output base directory (default: /tmp/axplore)
  --search <query>          Filter results by role/title/description/id/action
  --screenshot              Capture PNG screenshots of app windows

示例命令

# See what apps are running
axplore --list-apps

# Quick shallow scan
axplore --app Safari --mode shallow

# Deep exhaustive scan with screenshots
axplore --app Finder --mode deep --screenshot

# Look at only the focused window
axplore --app Safari --mode focused-window

# Search for specific elements
axplore --app Safari --search "AXButton"

# Scan with custom depth limit
axplore --app Safari --mode app --max-depth 6 --max-nodes 2000

输出

每次运行都会在下创建一个带时间戳的目录 /tmp/axplore/:

/tmp/axplore/2026-03-07_14-30-00/
  scan.json          Full machine-readable dump (all nodes + analysis)
  tree.txt           Human-readable indented tree + feasibility report
  screenshots/       PNG screenshots (only with --screenshot)
    0_window.png

axplore限制

  • 只读:不调用任何操作,不设置任何值。使用 axmcp 为了实现自动化。
  • 使用自定义渲染(Metal、OpenGL)的应用程序通常不会为画布/时间线区域公开AX元素。
  • 截图需要屏幕录制权限;没有它,图像是空白/黑色的。
  • 在macOS 14+上,CGWindowListCreateImage已被弃用——屏幕截图仍然可以在获得许可的情况下使用,但在未来的操作系统版本中可能会被删除。
  • 有些属性即使在属性名称集中列出时也不返回值;这是正常的AX API行为。