Token导航 LogoToken导航TokenDH.com
screenread (Bambushu) logo
AI代理未说明官方级别未说明来源级核验

screenread (Bambushu)

MCP Server

ScreenRead是一款为AI代理提供macOS无障碍树访问的工具,可快速获取屏幕上UI元素的即时结构化文本描述,适用于内容验证和UI状态检查。

工具数

5

提示词数

0

GitHub Stars

0

资源数

0
SwiftClaudeAI代理Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Bambushu

提供方

Bambushu

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

Read what's on screen without taking a screenshot.

ScreenRead使AI代理能够访问macOS的可访问性树——与VoiceOver和其他屏幕阅读器相同的结构化数据。您的代理不会捕获像素并将其通过视觉模型馈送,而是会获得描述屏幕上每个UI元素的即时结构化文本。

~100ms 而不是1-3秒。 零幻觉 --它读取操作系统知道的内容,而不是模型认为它看到的内容。

为什么

大多数AI代理工具使用屏幕截图来“查看”屏幕:

  1. 捕获PNG(~200ms)
  2. Base64编码和传输(~500KB-2MB)
  3. 视觉模型处理像素(昂贵、缓慢)
  4. 模型描述了什么 *认为* 它看到(有时是错误的)

但是,大约90%的代理任务都是基于文本的:“错误说了什么?”,“这个按钮可见吗?”“页面标题是什么?”。截图太夸张了。

ScreenRead跳过所有这些。它直接询问macOS:“此窗口中存在哪些UI元素?”并立即返回结构化文本。

截图屏幕阅读
速度1-3秒~100ms
代币成本高(视觉模型)低(文本)
准确度可以产生幻觉文本精确(从操作系统读取)
范围仅限网络(剧作家)或全屏任何macOS应用程序
不错视觉检查(布局、颜色)内容验证、UI状态

对于90%与内容和结构有关的任务,请使用ScreenRead。保留需要像素的10%的屏幕截图。

安装

从源代码构建

git clone https://github.com/Bambushu/screenread.git
cd screenread
swift build -c release
cp .build/release/screenread ~/.local/bin/
cp .build/release/screenread-mcp ~/.local/bin/

需求

  • macOS 13+(Ventura或更高版本)
  • 辅助功能权限(系统设置>隐私和安全>辅助功能)

用法

命令行界面

# Read the frontmost app
screenread

# Read a specific app
screenread --app Safari

# Fuzzy match a window title
screenread --window "inbox"

# Text only (no structure)
screenread --app Warp --text-only

# Shallow read (depth 2)
screenread --app Finder --shallow

# Full text, no truncation
screenread --app Terminal --full

# JSON output
screenread --app Safari --json

# Search for text across all open windows
screenread --find "error"
screenread --find "Submit"

# List all open windows
screenread --list

# Filter by role
screenread --app Safari --role AXButton,AXLink

# Exclude roles
screenread --app Safari --ignore AXGroup,AXScrollArea

# List interactive elements with click coordinates
screenread --clickable --app Safari
screenread --clickable --app Finder --json

# Watch for UI changes (poll every 2s, Ctrl+C to stop)
screenread --watch --app Safari
screenread --watch --app Safari --interval 5

# Stream JSONL (one JSON object per node per line)
screenread --stream --app Safari
screenread --stream --app Safari | jq 'select(.role == "AXButton")'

MCP服务器

添加到MCP配置中:

克劳德代码 (项目范围 .mcp.json 在项目根目录中):

{
  "mcpServers": {
    "screenread": {
      "command": "screenread-mcp"
    }
  }
}

克劳德桌面 (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "screenread": {
      "command": "/path/to/screenread-mcp"
    }
  }
}

这为任何MCP兼容客户端提供了五个工具:

screenread_snapshot

阅读特定应用程序或窗口的可访问性树。在没有参数的情况下,读取最前面(活动)的应用程序。

参数类型说明
appstring应用程序名称(例如。 "Safari")
windowstring窗口标题模糊匹配
pidinteger按进程ID设置的目标
depthinteger最大树深度(默认值:5)。使用0表示无限制--在大型应用程序上可能很慢。
textOnlyboolean仅文本,无结构
rolesstring要包含的逗号分隔的AX角色(例如。 "AXButton,AXLink")
ignorestring要排除的逗号分隔的AX角色(例如。 "AXGroup,AXScrollArea")

screenread_list

列出所有打开的窗口。每个窗口返回一行,格式如下: AppName [PID] — Window Title。无参数。

screenread_find_text

在所有打开的窗口中搜索可见文本。纯子字符串匹配(无正则表达式)。

参数类型说明
querystring要搜索的纯文本子字符串(必填)
caseSensitiveboolean区分大小写(默认值:false)

结果以100场比赛为限。使用 screenread_snapshot 通过特定的应用程序获得更有针对性的结果。

screenread_clickable

列出交互式元素(按钮、链接、文本字段)及其点击坐标。

参数类型说明
appstring应用程序名称(例如。 "Safari")
windowstring窗口标题模糊匹配
pidinteger按进程ID设置的目标
rolesstring覆盖默认交互角色(例如。 "AXButton,AXLink")

返回一个包含角色、标签、中心x/y坐标和状态(启用/禁用/聚焦/选中)的表。

screenread_watch

观察应用程序在一段时间内的UI变化。

参数类型说明
appstring应用程序名称(例如。 "Safari")
windowstring窗口标题模糊匹配
pidinteger按进程ID设置的目标
durationinteger观看时长(秒)(默认值:10,最大值:60)
intervalinteger轮询间隔(秒)(默认值:2,分钟:1)
textOnlyboolean仅比较文本内容(默认值:false)

以给定的间隔轮询可访问性树,并报告添加、删除和值/状态更改。

建筑

screenread/
├── Sources/
│   ├── ScreenReadCore/     # Shared library
│   │   ├── AXHelpers.swift       # Shared AX attribute accessors
│   │   ├── AXTreeWalker.swift    # Recursive accessibility tree traversal + streaming callback
│   │   ├── Formatter.swift       # Text tree, text-only, JSON, clickable output
│   │   ├── MCPProtocol.swift     # JSON-RPC types, tool dispatch, parameter validation
│   │   ├── StreamFormatter.swift # JSONL single-node encoder
│   │   ├── TargetResolver.swift  # App/window/PID resolution with fuzzy matching
│   │   ├── TreeDiffer.swift      # Compare two tree snapshots for changes
│   │   └── Types.swift           # AXNode, WalkResult, WindowInfo, errors
│   ├── screenread/         # CLI (uses ArgumentParser)
│   └── screenread-mcp/     # MCP server (Content-Length framed stdio)
└── Tests/
    └── ScreenReadCoreTests/  # 27 tests across 4 suites

核心图书馆(ScreenReadCore)CLI和MCP服务器都是围绕它的精简包装器。

平台

仅限macOS。ScreenRead使用苹果的 AXUIElement 可访问性API,它在其他平台上没有对等功能。Linux需要AT-SPI,Windows需要UI自动化——这是根本不同的API。

许可证

麻省理工学院

目录标签

目录标签

SwiftClaudeAI代理本地部署无障碍访问UI解析macOS工具文本识别

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

5

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP