easytouch-mcp
Pass使用 EasyTouch 进行跨平台桌面自动化。适用于鼠标键盘控制、截图、窗口管理、系统信息、剪贴板,以及基于 browserId 的浏览器自动化流程。
(0)
29
11
20
Install Skill
Skills are third-party code from public GitHub repositories. SkillHub scans for known malicious patterns but cannot guarantee safety. Review the source code before installing.
Install globally (user-level):
npx skillhub install whuanle/EasyTouch/easytouch-mcpInstall in current project:
npx skillhub install whuanle/EasyTouch/easytouch-mcp --projectSuggested path: ~/.claude/skills/easytouch-mcp/
AI Review
Instruction Quality55
Description Precision45
Usefulness54
Technical Soundness55
Scored 52. SKILL.md itself is good with a clear 8-step browser automation workflow and error recovery guidance. Score held back by Chinese-only description, inclusion of 50 source code files (bloat), and small user base. The browser automation procedure is the strongest section.
SKILL.md Content
---
name: easytouch-mcp
description: 使用 EasyTouch 进行跨平台桌面自动化。适用于鼠标键盘控制、截图、窗口管理、系统信息、剪贴板,以及基于 browserId 的浏览器自动化流程。
---
# EasyTouch Automation Skill
该技能用于指导 AI 助手通过 `et` 命令执行桌面自动化任务。
适用于 CLI 调用和 MCP 集成场景,重点是稳定的操作流程与可复现命令。
## 何时使用
- 需要控制鼠标、键盘执行桌面操作
- 需要截图、取色、识别前台窗口状态
- 需要查询系统信息、进程、剪贴板
- 需要浏览器自动化,且操作是多步骤任务(启动 -> 导航 -> 点击/输入 -> 截图)
## 前置条件
- 已安装 EasyTouch,可执行文件可通过 `et` 调用
- 如使用浏览器能力,确保本机可启动 Playwright 浏览器
- `skills` 仓库仅提供文档,不内置二进制;需先安装程序本体(例如 `easytouch-windows`)
## 快速自检
```bash
et --version
et mouse_position
et screen_list
```
## 常用命令域
- 鼠标:`mouse_move` `mouse_click` `mouse_scroll` `mouse_position`
- 键盘:`key_press` `type_text`
- 屏幕:`screenshot` `pixel_color` `screen_list`
- 窗口:`window_list` `window_find` `window_activate` `window_foreground`
- 系统:`os_info` `cpu_info` `memory_info` `disk_list` `process_list`
- 剪贴板:`clipboard_get_text` `clipboard_set_text` `clipboard_get_files`
- 浏览器:`browser_*`
## 浏览器自动化操作手册(重点)
### 1) 执行模型(先理解这个)
- 所有浏览器动作都依赖 `browserId`
- `browser_launch` 只负责创建会话,不会替你完成后续业务步骤
- 当前实现通过后台 daemon 持有会话,所以命令结束后会话仍可复用
- 你必须显式管理会话:创建、使用、关闭
支持浏览器:
- `chromium`
- `firefox`
- `webkit`
- `edge`(内部使用 `msedge` 通道)
注意:通过 npm 安装 EasyTouch 时已内置 Playwright 运行能力,本技能不包含手动安装步骤。
### 2) 标准操作逻辑(AI 必须遵守)
每个浏览器任务按固定顺序执行:
1. 创建会话:`browser_launch`
2. 确认会话:`browser_list`,提取目标 `browserId`
3. 打开目标页:`browser_navigate`
4. 等待页面可交互:`browser_wait_for`
5. 执行交互:`browser_click` / `browser_fill` / `browser_select` / `browser_upload`
6. 验证结果:`browser_get_text` / `browser_assert_text` / `browser_page_info`
7. 留证据:`browser_screenshot`
8. 结束任务:`browser_close`
如果中途失败,不要直接重启所有步骤,优先:
- 先 `browser_page_info` 看当前 URL/标题
- 再 `browser_wait_for` 重试关键元素
- 仍失败才考虑关闭旧会话并重新 `browser_launch`
### 3) CLI 流程模板
```bash
# 创建会话
et browser_launch --browser edge --headless false
# 读取 browserId(以下示例假设为 browser_1)
et browser_list
# 导航
et browser_navigate --browser-id browser_1 --url "https://example.com"
# 等待并操作
et browser_wait_for --browser-id browser_1 --selector "input[name='q']" --state visible --timeout 15000
et browser_fill --browser-id browser_1 --selector "input[name='q']" --value "EasyTouch"
et browser_click --browser-id browser_1 --selector "button[type='submit']"
# 验证与截图
et browser_get_text --browser-id browser_1 --selector "body"
et browser_screenshot --browser-id browser_1 --output "./result.png" --full-page true
# 收尾
et browser_close --browser-id browser_1
```
### 4) MCP 命令映射(AI 调用重点)
CLI 参数名与 MCP 参数名不同,常用映射如下:
| CLI 命令 | MCP `name` | 关键 `arguments` |
|---|---|---|
| `browser_launch` | `browser_launch` | `browserType`, `headless`, `executablePath`, `userDataDir` |
| `browser_navigate` | `browser_navigate` | `browserId`, `url`, `waitUntil`, `timeout` |
| `browser_click` | `browser_click` | `browserId`, `selector`, `selectorType`, `button`, `clickCount` |
| `browser_fill` | `browser_fill` | `browserId`, `selector`, `selectorType`, `value`, `clear` |
| `browser_wait_for` | `browser_wait_for` | `browserId`, `selector`, `selectorType`, `state`, `timeout` |
| `browser_screenshot` | `browser_screenshot` | `browserId`, `selector`, `fullPage`, `outputPath`, `type` |
| `browser_close` | `browser_close` | `browserId`, `force` |
| `browser_list` | `browser_list` | `{}` |
MCP 调用范式:
```json
{
"jsonrpc": "2.0",
"id": "browser-1",
"method": "tools/call",
"params": {
"name": "browser_launch",
"arguments": {
"browserType": "edge",
"headless": false
}
}
}
```
```json
{
"jsonrpc": "2.0",
"id": "browser-2",
"method": "tools/call",
"params": {
"name": "browser_navigate",
"arguments": {
"browserId": "browser_1",
"url": "https://example.com",
"waitUntil": "load",
"timeout": 30000
}
}
}
```
### 4.1) 截图文件路径规范(必须遵守)
AI 调用 `browser_screenshot` 时,必须显式传 `outputPath`,不要依赖默认路径。
原因:
- 不传 `outputPath` 时,截图会落到系统临时目录(`Path.GetTempPath()`)
- AI 往往不会在后续步骤自动定位临时目录,导致“找不到截图文件”
执行规则:
1. 每次截图都传明确路径
2. 优先使用当前任务可访问目录(如仓库下 `artifacts/screenshots`)
3. 截图后始终读取返回值里的 `imagePath`,后续一律用这个实际路径
4. 不要自行猜测文件位置,不要硬编码与返回值不一致的路径
CLI 示例:
```bash
et browser_screenshot --browser-id browser_1 --full-page true --output "./artifacts/screenshots/search-result.png"
```
MCP 示例:
```json
{
"jsonrpc": "2.0",
"id": "browser-3",
"method": "tools/call",
"params": {
"name": "browser_screenshot",
"arguments": {
"browserId": "browser_1",
"fullPage": true,
"outputPath": "E:\\workspace\\EasyTouch\\artifacts\\screenshots\\search-result.png",
"type": "png"
}
}
}
```
收到响应后:
- 记录 `data.imagePath`
- 后续如果要读取/上传/展示截图,使用 `data.imagePath`,不要改写成其他路径
### 5) 选择器策略(提高成功率)
优先级建议:
1. 稳定属性选择器:`[data-testid='xxx']`、`[name='xxx']`
2. 语义化 CSS:`form button[type='submit']`
3. 文本选择:`selectorType=text`(仅在文案稳定时使用)
4. XPath:仅在复杂结构时兜底
每次点击/输入前,都先 `browser_wait_for`:
- `state=visible` 用于可见元素操作
- `state=attached` 用于只要求在 DOM 中存在的元素
### 6) 常见任务模板
登录流程模板:
1. `browser_navigate` 打开登录页
2. `browser_wait_for` 等待用户名框
3. `browser_fill` 填用户名/密码
4. `browser_click` 提交按钮
5. `browser_wait_for` 等待登录后标志元素
6. `browser_screenshot` 存证
搜索流程模板:
1. `browser_wait_for` 搜索框
2. `browser_fill` 关键词
3. `browser_click` 搜索按钮
4. `browser_wait_for` 结果列表
5. `browser_get_text` 读取前几条结果摘要
### 7) 会话与异常恢复
`browser_list` 为空:
- 先查 `et browser_daemon_status`
- 若 daemon 不在,重新 `browser_launch`
`browserId` 无效:
- 会话可能已关闭或 daemon 重启
- 重新创建会话,替换为新 `browserId`
页面跳转后元素找不到:
- 增大 `browser_wait_for --timeout`
- 改用更稳定的选择器
- 用 `browser_page_info` 确认是否跳到了预期页面
执行完成必须收尾:
- 单任务结束:`browser_close --browser-id ...`
- 需要彻底结束后台持久化:`browser_daemon_stop`
## MCP 使用建议
如需供 AI 客户端长期调用,使用 MCP 模式:
```bash
et --mcp
```
示例配置:
```json
{
"mcpServers": {
"easytouch": {
"command": "et",
"args": ["--mcp"]
}
}
}
```
## 参考文档
- 项目说明:`README.md`
- 技能文档:`skills/SKILLS.md`