Files
cs-note/claude-code-best/docs/features/computer-use-mcp-test-report.md

206 lines
6.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
tags: [computer-use, mcp, 测试报告, macos, 权限模型]
create time: 2026-06-09 22:30
---
# Computer Use MCP 工具测试报告
## 概述
对 Computer Use MCP 的 17 个工具进行的完整功能测试报告。测试覆盖权限管理、截图显示、鼠标操作、键盘操作、状态查询和复合操作六大类,重点验证了分级权限模型的安全性。
> [!info]
> 测试日期: 2026-04-04
> 测试环境: macOS Darwin 25.4.0, Cursor (IDE tier: click)
> MCP Server: `@ant/computer-use-mcp`
## 正文
### 工具总览
共 17 个工具(含 batch 复合操作),分为 5 大类:
| 类别 | 工具 | 数量 |
|------|------|------|
| 截图/显示 | `screenshot`, `switch_display`, `zoom` | 3 |
| 鼠标操作 | `left_click`, `right_click`, `double_click`, `triple_click`, `middle_click`, `left_click_drag`, `mouse_move` | 7 |
| 键盘操作 | `key`, `type`, `hold_key` | 3 |
| 状态查询 | `cursor_position`, `request_access` | 2 |
| 复合/辅助 | `computer_batch`, `wait` | 2 |
---
### 测试结果
#### 1. 权限管理
##### `request_access` — 请求应用访问权限
| 项目 | 结果 |
|------|------|
| 状态 | ✅ 通过 |
| 行为 | 弹出系统对话框请求用户授权,支持批量申请多个应用 |
| 返回 | `{ granted: [...], denied: [...], tierGuidance: "..." }` |
| 权限分级 | `click`(仅点击), `full`(完整控制) |
| 说明 | IDE 类应用默认授予 `click` tier,限制键盘输入和右键操作;系统应用授予 `full` tier |
##### 已授权应用
| 应用 | Tier | 能力 |
|------|------|------|
| Cursor | click | 可见 + 纯左键点击(无键盘输入、右键、修饰键点击、拖拽) |
| Terminal | click | 同上 |
| System Settings | full | 完整控制(键鼠、拖拽等) |
| Finder | — | 已授权 |
---
#### 2. 截图与显示
##### `screenshot` — 截取屏幕截图
| 项目 | 结果 |
|------|------|
| 状态 | ⚠️ 部分通过 |
| 执行 | 工具成功执行,返回 `ok: true` |
| 图片 | **未返回可视图片内容**(output 为空字符串) |
| `save_to_disk` | 设置后仍无输出 |
| 分析 | 可能原因:(1) macOS 屏幕录制权限未授予;(2) 当前前台应用未被过滤导致截图为空;(3) MCP 传输层未正确编码图片数据 |
> [!warning]
> 建议排查:检查 **系统设置 → 隐私与安全性 → 屏幕录制** 是否授权给运行 Claude Code 的应用。
##### `switch_display` — 切换显示器
| 项目 | 结果 |
|------|------|
| 状态 | ✅ 通过 |
| 行为 | 接受显示器名称或 `"auto"`(自动选择) |
##### `zoom` — 区域放大截图
| 项目 | 结果 |
|------|------|
| 状态 | ⏭️ 跳过 |
| 原因 | 依赖 `screenshot` 返回的图片坐标,截图未返回图片无法测试 |
---
#### 3. 鼠标操作
> 以下测试在 Cursor 窗口上执行(tier: click)
| 工具 | 状态 | 说明 |
|------|------|------|
| `mouse_move` | ✅ 通过 | `coordinate: [500, 500]` → `"Moved."` |
| `left_click` | ✅ 通过 | `coordinate: [500, 500]` → `"Clicked."` |
| `double_click` | ✅ 通过 | `coordinate: [500, 500]` → `"Clicked."` |
| `triple_click` | ✅ 通过 | `coordinate: [500, 500]` → `"Clicked."` |
| `right_click` | ⚠️ 受 tier 限制 | Cursor (click tier) 被拒绝;Finder (full tier) 通过 |
| `middle_click` | ⚠️ 受 tier 限制 | 同 `right_click`,需要 full tier |
| `left_click_drag` | ⚠️ 受 tier 限制 | 拖拽被视为修饰键点击,需要 full tier |
| `scroll` | ✅ 通过 | `scroll_direction: "down"` 和 `"up"` 均通过 |
---
#### 4. 键盘操作
> 以下测试在 Cursor 窗口上执行(tier: click)— 所有键盘操作均被拒绝
| 工具 | 状态 | 说明 |
|------|------|------|
| `key` | ⚠️ 受 tier 限制 | Cursor 被拒绝;Finder (full tier) `escape` 成功 |
| `type` | ⚠️ 受 tier 限制 | Cursor 被拒绝;Finder 输入 `"hello"` 成功 |
| `hold_key` | ⚠️ 受 tier 限制 | Cursor 被拒绝;Finder 按住 `shift` 1 秒成功 |
> [!info]
> IDE 安全限制符合预期:功能在 full tier 应用上完全正常。
---
#### 5. 状态查询
##### `cursor_position` — 获取鼠标位置
| 项目 | 结果 |
|------|------|
| 状态 | ✅ 通过 |
| 返回 | `{"x": null, "y": null, "coordinateSpace": "image_pixels"}` |
| 说明 | 坐标为 null 是因为没有成功截图,无参考坐标系 |
---
#### 6. 复合/辅助操作
##### `computer_batch` — 批量执行操作
| 项目 | 结果 |
|------|------|
| 状态 | ✅ 通过 |
| 行为 | 按顺序执行操作列表,遇到失败则停止后续操作 |
| 返回 | `{ completed: [...], failed: {...}, remaining: N }` |
##### `wait` — 等待
| 项目 | 结果 |
|------|------|
| 状态 | ✅ 通过 |
| 输入 | `duration: 1` (秒) |
| 最大值 | 100 秒 |
---
### 汇总统计
| 状态 | 数量 | 工具 |
|------|------|------|
| ✅ 通过 | 10 | `request_access`, `switch_display`, `mouse_move`, `left_click`, `double_click`, `triple_click`, `scroll`, `cursor_position`, `computer_batch`, `wait` |
| ⚠️ 部分通过 | 7 | `screenshot`(执行成功但无图片返回), `right_click`, `middle_click`, `left_click_drag`, `key`, `type`, `hold_key`(均在 full tier 应用上通过,IDE click tier 限制是预期行为) |
| ❌ 被拒绝 | 0 | — |
| ⏭️ 跳过 | 1 | `zoom`(依赖截图) |
---
### 已知问题
#### P0: 截图无图片返回
`screenshot` 工具执行成功但未返回图片内容,导致:
- 无法获取屏幕坐标参考
- `cursor_position` 返回 null 坐标
- `zoom` 无法使用
- 所有点击操作只能盲点(无截图验证)
**可能原因**:
1. macOS 屏幕录制权限未授予
2. MCP 图片传输/编码问题
3. 截图内容被安全过滤机制过滤
> [!warning]
> **建议排查**:检查 `系统设置 → 隐私与安全性 → 屏幕录制` 权限。
#### P1: IDE 应用键盘操作受限 — ✅ 已确认功能正常
IDE 类应用(Cursor、VSCode、Terminal)被限制在 `click` tier,无法执行键盘输入、右键/中键点击、拖拽操作。这是安全设计,防止 AI 操控 IDE 终端。**在 full tier 应用上,以上 6 个操作均测试通过。**
---
### 权限模型说明
Computer Use MCP 采用分级权限模型:
```mermaid
graph TB
A["Tier: full"] -->|"所有鼠标操作 + 键盘输入"| B["适用于: 系统应用、Finder 等"]
C["Tier: click"] -->|"仅纯左键点击 + 滚轮滚动"| D["适用于: IDE、Terminal 等"]
E["未授权"] -->|"所有操作被拒绝"| F["需通过 request_access 申请"]
```
## 关联笔记
- [[computer-use]]
- [[computer-use-tools-reference]]
- [[computer-use-architecture-v2]]