📱 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
local-only server
The server can only run on the client's local machine because it depends on local resources.
MCP 服务器使 LLM 能够通过自然语言命令与 iOS 模拟器进行交互。
Related MCP Servers
- -securityFlicense-qualityAn MCP server to control iOS Simulators.Last updated -4122JavaScript
- AsecurityAlicenseAqualityEnables interaction with iOS simulators by providing tools to inspect UI elements, control UI interactions, and manage simulators through natural language commands.Last updated -6198466JavaScriptMIT License
- -securityAlicense-qualityA bridge between iOS simulators and the Model Context Protocol, enabling programmatic control of iOS simulators through standardized communication interfaces.Last updated -25TypeScriptMIT License
- -securityFlicense-qualityA customized MCP server that enables integration between LLM applications and documentation sources, providing AI-assisted access to LangGraph and Model Context Protocol documentation.Last updated -1Python