iOS模拟器与浏览器自动化服务

一个整合iOS模拟器控制和浏览器自动化的统一服务,支持设备管理、手势模拟、DOM交互等功能。

  • by plaintest
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 plaintest/mcp-connect

使用说明

@plaint/mcp连接

一种模型上下文协议(MCP)服务器,使AI助手能够控制iOS模拟器并自动化浏览器。结合了以下力量 xcrun simctl, fb-idb,并将Puppeteer整合到一个统一的服务器中。

特性

iOS模拟器工具

  • 截图:以各种格式(PNG、JPEG、TIFF、BMP、GIF)捕获屏幕截图
  • 设备管理:列出模拟器,获取已启动设备的信息
  • 手势:点击、滑动并控制持续时间(需要fb-idb)
  • 输入:在焦点字段中键入文本,按系统按钮
  • 导航:打开URL和深度链接
  • UI检查:获取可访问性树(需要fb-idb)
  • 重置:将模拟器擦除为出厂设置

浏览器自动化工具

  • 发射与控制:启动Chrome/Chromium,导航到URL
  • 截图:捕获整页或特定元素的屏幕截图
  • DOM交互:单击元素、键入文本、查询元素
  • 检查:获取DOM树、元素信息、页面信息
  • JavaScript:在页面上下文中执行任意JavaScript
  • 地铁Bundler:React Native开发的快捷方式

先决条件

  • macOS 使用Xcode和iOS模拟器
  • Node.js >= 18
  • 铬/铬 用于浏览器自动化
  • fb-idb (可选,用于增强iOS手势)

安装

选项1:快速安装(推荐)

运行MCP客户端的安装程序:

# For Claude Code
npx @plaintest/mcp-connect install claude

# For Cursor
npx @plaintest/mcp-connect install cursor

# For Windsurf
npx @plaintest/mcp-connect install windsurf

# For Cline (VS Code)
npx @plaintest/mcp-connect install cline

# For GitHub Copilot (VS Code)
npx @plaintest/mcp-connect install copilot

# Install for all clients at once
npx @plaintest/mcp-connect install --all

重新启动编辑器,工具将可用。

选项2:全局安装

全局安装以具有 mcp-connect 可作为命令使用:

npm install -g @plaintest/mcp-connect

然后手动配置MCP客户端:

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

选项3:手动配置

如果您不希望全局安装,请将MCP客户端配置为使用npx:

{
  "mcpServers": {
    "mcp-connect": {
      "command": "npx",
      "args": ["-y", "@plaintest/mcp-connect"]
    }
  }
}

配置文件位置:

  • 克劳德代码:用途 claude mcp add 命令(安装时自动执行)
  • 光标: ~/.cursor/mcp.json
  • 帆板运动: ~/.codeium/windsurf/mcp_config.json
  • 克莱恩: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
  • 副驾驶: ~/Library/Application Support/Code/User/settings.json (根据 github.copilot.chat.experimental.mcp.servers)

CLI命令

npx @plaintest/mcp-connect install <client>    # Install config for a client
npx @plaintest/mcp-connect uninstall <client>  # Remove config from a client
npx @plaintest/mcp-connect list                # List supported clients
npx @plaintest/mcp-connect status              # Show installation status
npx @plaintest/mcp-connect help                # Show help

工具筛选

默认情况下,mcp-connect会根据您的系统自动检测要启用哪些工具:

  • iOS模拟器工具:如果安装了Xcode/xrun,则启用
  • 浏览器工具:如果找到Chrome/Chromium,则启用

这减少了上下文的使用,并通过仅公开相关工具来防止混淆。

覆盖自动检测

要手动控制启用哪些工具,请使用 --only 标志:

npx @plaintest/mcp-connect --only=browser     # Browser tools only
npx @plaintest/mcp-connect --only=simulator   # iOS Simulator tools only
npx @plaintest/mcp-connect --only=all         # Force all tools

要使用MCP客户端进行过滤,请更新配置:

{
  "mcpServers": {
    "mcp-connect": {
      "command": "npx",
      "args": ["-y", "@plaintest/mcp-connect", "--only=browser"]
    }
  }
}

可用工具

iOS模拟器工具(10)

工具 说明
capture_simulator_screenshot 使用格式/掩码选项捕获屏幕截图
list_simulators 列出所有模拟器(已启动或全部)
get_simulator_info 获取当前启动的模拟器的信息
tap_screen 点击坐标(x,y)
swipe 按持续时间从(x1,y1)滑动到(x2,y2)
simulator_type_text 在焦点输入框中键入文本
press_button 按下系统按钮(主页、锁定、siri、音量)
open_url 在模拟器中打开URL或深度链接
erase_simulator 将模拟器重置为出厂设置
get_ui_tree 获取可访问性树(需要fb-idb)

浏览器自动化工具(14)

工具 说明
launch_browser 启动Chrome/Chromium实例
navigate 导航到URL
capture_screenshot 捕获页面或元素屏幕截图
click_element 通过CSS选择器单击元素
type_text 在输入框中键入
get_page_info 获取URL、标题、视口信息
get_dom_tree 获取具有深度控制的HTML结构
evaluate_javascript 在页面上下文中执行JS
query_elements 通过CSS选择器查找元素
get_element_info 获取元素位置、样式、内容
close_browser 关闭浏览器并清理
open_metro_bundler 打开React Native Metro bundler UI
get_metro_logs 从Metro UI提取日志
reload_metro 触发Metro重新加载

例子

拍摄iOS模拟器屏幕截图

AI: Use capture_simulator_screenshot to take a screenshot

导航并与浏览器交互

AI: Launch browser and navigate to http://localhost:8081
AI: Click the element with selector ".reload-button"
AI: Capture a screenshot

iOS手势自动化

AI: Tap the screen at coordinates (200, 400)
AI: Swipe from (200, 600) to (200, 200) over 0.3 seconds
AI: Type "Hello World" into the focused input

点击/滑动手势设置

对于 tap_screen 和 swipe 要可靠工作,请安装fb-idb:

brew tap facebook/fb
brew install idb-companion

没有fb ID:

  • Tap回退到AppleScript(不太可靠)
  • 滑动不可用

故障排除

未找到Chrome

安装谷歌Chrome浏览器或设置自定义路径:

  • 服务器在标准macOS位置查找Chrome
  • 还支持Chromium和Chrome Canary

未检测到模拟器

  1. 打开Xcode>打开开发工具>模拟器
  2. 启动模拟器
  3. 验证: xcrun simctl list devices booted

fb-idb不工作

# Reinstall
brew uninstall idb-companion
brew tap facebook/fb
brew install idb-companion

# Verify
which idb

手势许可被拒绝

授予辅助功能权限:

  1. 系统设置>隐私和安全>辅助功能
  2. 添加终端(或您的shell应用程序)
  3. 重新启动编辑器

发展

# Clone the repository
git clone https://github.com/plaintest/mcp-connect.git
cd mcp-connect

# Install dependencies
npm install

# Build
npm run build

# Run locally
node dist/index.js

# Watch mode
npm run dev

许可证

MIT许可证-请参阅 许可证 了解详情。

作者

乔治·哈达德- Plaintest