local-only server
The server can only run on the client’s local machine because it depends on local resources.
Integrations
Leverages Facebook's idb tool to interact with iOS simulators, enabling app installation, UI automation, and debugging features.
Enables control of iOS simulators through natural language commands, supporting simulator management, app installation and launching, UI interaction, accessibility testing, screenshot/video capture, debugging, and crash log analysis.
Utilizes Meta's idb technology to provide iOS simulator control, supporting app testing, UI automation, and device management.
📱 iOS 模拟器的 MCP 服务器
模型上下文协议 (MCP) 服务器,使 LLM 能够通过自然语言命令与 iOS 模拟器交互。
ℹ️ 概述
这款 MCP 服务器在大型语言模型 (LLM) 和 iOS 模拟器之间架起了一座桥梁,通过自然语言命令提供全面的控制。它的功能如下:
有关详细使用方法,请参阅安装指南和支持的命令部分。您可以通过直接 MCP 集成或作为独立库使用此服务器。
查看架构部分以了解组件如何协同工作以实现 iOS 模拟器的自然语言控制。
🎮 模拟器控制
- 创建和管理模拟器会话
- 启动、关闭和监控模拟器状态
- 列出可用且正在运行的模拟器
- 焦点模拟器窗口
📱 应用程序管理
- 安装和管理 iOS 应用程序
- 启动、终止和卸载应用程序
- 监控应用状态并验证安装
- 处理应用程序权限和配置
🖱️ UI 交互与测试
- 与模拟器 UI 交互
- 执行点击、滑动和按钮按下操作
- 输入文本和按键序列
- 访问可访问性元素以进行 UI 测试
- 录制UI交互的视频
🛠️ 开发与调试
- 捕获屏幕截图和系统日志
- 实时调试应用程序
- 监控和分析崩溃日志
- 安装动态库并管理应用程序数据
⚡ 高级功能
- 其他功能包括:
- 位置模拟
- 媒体注入
- URL 方案处理
- 联系人数据库管理
- 钥匙串操作
有关详细使用方法,请参阅安装指南和支持的命令部分。您可以通过直接 MCP 集成或作为独立库使用此服务器。
查看架构部分以了解组件如何协同工作以实现 iOS 模拟器的自然语言控制。
📋 要求
- macOS :iOS 模拟器支持所需
- Node.js :v14.0.0 或更高版本
- Homebrew :安装依赖项所需
- XCode :已安装 iOS 模拟器
🚀 安装
安装此服务器的最简单方法是通过 Cline:
- 只需询问克莱恩:
- Cline 将自动处理安装过程,包括依赖项管理和配置。
或者,您可以手动安装:
安装过程将自动:
- 检查您是否正在运行 macOS
- 通过 Homebrew 安装 idb-companion
- 在虚拟环境中通过pip安装fb-idb
注意:使用服务器时,请确保虚拟环境保持激活状态。如果您关闭终端并稍后返回,则需要在运行npm start
之前使用source venv/bin/activate
命令重新激活虚拟环境。
🔌 MCP 集成
要与 Claude 或其他 LLM 助手一起使用此服务器:
- 将服务器添加到 Claude Desktop 中的 MCP 设置中:
- LLM 现在可以使用自然语言命令来控制 iOS 模拟器:
📚 作为库使用
您还可以在自己的项目中将此包用作库:
🔰 基本用法
🚀 高级用法
您也可以直接使用各个组件:
🏗️ 项目结构
🎯 支持的命令
NLParser 支持以下自然语言命令:
🎮 模拟器管理
命令 | 描述 | 例子 |
---|---|---|
创建会话 | 创建一个新的模拟器会话 | “创建会话”、“创建 iPhone 12 模拟器” |
终止会话 | 终止当前会话 | “终止会话”,“关闭模拟器” |
列出模拟器 | 列出可用的模拟器 | “列出模拟器”、“显示模拟器” |
列出已启动的模拟器 | 列出正在运行的模拟器 | “列出已启动的模拟器”、“显示正在运行的模拟器” |
启动模拟器 | 通过 UDID 启动模拟器 | “启动模拟器 5A321B8F-4D85-4267-9F79-2F5C91D142C2” |
关机模拟器 | 关闭模拟器 | “关机模拟器 5A321B8F-4D85-4267-9F79-2F5C91D142C2” |
焦点模拟器 | 将模拟器窗口置于最前面 | “焦点模拟器”,“将模拟器置于前面” |
列出模拟器会话 | 列出活动的模拟器会话 | “列出模拟器会话”,“显示活动会话” |
📱 应用管理
命令 | 描述 | 例子 |
---|---|---|
安装应用程序 | 在模拟器上安装应用程序 | “安装应用程序/path/to/app.ipa” |
启动应用程序 | 在模拟器上启动应用程序 | “启动应用程序 com.example.app” |
终止应用程序 | 终止正在运行的应用程序 | “终止应用程序 com.example.app” |
卸载应用程序 | 卸载应用程序 | “卸载应用程序 com.example.app” |
列出应用程序 | 列出已安装的应用程序 | “列出应用程序”、“显示已安装的应用程序” |
检查应用程序是否已安装 | 检查应用程序是否已安装 | “应用程序 com.example.app 是否已安装” |
🖱️ UI交互
命令 | 描述 | 例子 |
---|---|---|
轻敲 | 点击特定坐标 | “点击 100,200” |
滑动 | 执行滑动手势 | “从 100、200 滑动到 300、400” |
按下按钮 | 按下设备按钮 | “按下 HOME 按钮”、“按下 SIRI 按钮” |
输入文本 | 类型文本 | “输入文本 Hello World” |
按下键 | 通过代码按键 | “按下 4 键” |
按键顺序 | 按下一系列按键 | “按下按键序列 4 5 6” |
♿ 可访问性
命令 | 描述 | 例子 |
---|---|---|
描述元素 | 列出所有可访问性元素 | “描述所有元素”、“显示可访问性元素” |
描述点 | 描述坐标处的元素 | “描述点 100、200”、“150、300 处是什么” |
📸 捕获和日志
命令 | 描述 | 例子 |
---|---|---|
截取屏幕截图 | 截取屏幕截图 | “截屏”、“捕获屏幕” |
录制视频 | 记录屏幕活动 | “录制视频/path/output.mp4” |
停止录制 | 停止视频录制 | “停止录制”、“停止视频录制” |
获取日志 | 检索系统或应用程序日志 | “获取日志”,“获取 com.example.app 的日志” |
🐛 调试
命令 | 描述 | 例子 |
---|---|---|
开始调试 | 启动调试会话 | “调试应用程序 com.example.app”,“开始调试 com.example.app” |
停止调试 | 停止调试会话 | “停止调试”,“终止调试会话” |
调试状态 | 获取调试会话状态 | “调试状态”,“显示调试信息” |
💥 崩溃日志
命令 | 描述 | 例子 |
---|---|---|
列出崩溃日志 | 列出可用的崩溃日志 | “列出崩溃日志”,“显示崩溃日志” |
显示崩溃日志 | 显示崩溃日志的内容 | “显示崩溃日志 crash_2023-01-01” |
删除崩溃日志 | 删除崩溃日志 | “删除崩溃日志”、“清除崩溃日志” |
🔧 附加命令
命令 | 描述 | 例子 |
---|---|---|
安装 dylib | 安装动态库 | “安装 dylib /path/to/library.dylib” |
打开 URL | 在模拟器中打开一个 URL | “打开网址https://example.com ” |
清除钥匙串 | 清除模拟器的钥匙串 | “清除钥匙串” |
设置位置 | 设置模拟器的位置 | “设置位置 37.7749, -122.4194” |
添加媒体 | 将媒体添加到相机胶卷 | “添加媒体/path/to/image.jpg” |
批准权限 | 批准应用程序权限 | “批准 com.example.app 照片相机权限” |
更新联系人 | 更新联系人数据库 | “更新联系人/path/to/contacts.sqlite” |
该接口支持idb CLI工具中可用的所有命令,为iOS模拟器自动化提供了一套全面的操作。
🔍 建筑
该服务器由三个主要组件组成:
- IDBManager :通过 idb 直接与 iOS 模拟器交互的低级组件。
- NLParser :解释自然语言指令并将其转换为结构化命令的组件。
- MCPOrchestrator :协调解析器和IDBManager之间交互的中央组件。
这些组件通过适配器连接:
- ParserToOrchestrator :将解析器结果转换为编排器命令。
- OrchestratorToIDB :将 Orchestrator 命令转换为 IDBManager 调用。
🔌 MCP 集成
要将此服务器与模型上下文协议一起使用:
- 将服务器添加到您的 MCP 设置:
- 连接到 LLM 应用程序中的服务器:
🙏 致谢
如果没有facebook/idb提供底层 iOS 模拟器控制功能,这个项目就不可能实现。我们衷心感谢 Facebook/Meta 团队以及所有 idb 项目的贡献者,感谢他们创建并维护了如此强大可靠的工具。
📄 许可证
根据 Apache-2.0 条款,此工具可作为开源工具使用。
This server cannot be installed
MCP 服务器使 LLM 能够通过自然语言命令与 iOS 模拟器进行交互。