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/axmcpmacOS将首次提示 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/.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 App name (partial, case-insensitive)
--bundle-id Bundle identifier (exact)
--pid
Process ID (overrides --app/--bundle-id)
--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 Override depth cap (default: 8)
--max-nodes Override node cap (default: 5000)
--output
Output base directory (default: /tmp/axplore)
--search 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.pngaxplore限制
- 只读:不调用任何操作,不设置任何值。使用
axmcp为了实现自动化。 - 使用自定义渲染(Metal、OpenGL)的应用程序通常不会为画布/时间线区域公开AX元素。
- 截图需要屏幕录制权限;没有它,图像是空白/黑色的。
- 在macOS 14+上,CGWindowListCreateImage已被弃用——屏幕截图仍然可以在获得许可的情况下使用,但在未来的操作系统版本中可能会被删除。
- 有些属性即使在属性名称集中列出时也不返回值;这是正常的AX API行为。
