
iOS simulators MCP
一个 MCP 服务器,它使大型语言模型能够通过自然语言命令与 iOS 模拟器进行交互。
README
📱 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:
Add this mcp to cline https://github.com/InditexTech/mcp-server-simulator-ios-idb
- Cline 将自动处理安装过程,包括依赖项管理和配置。
或者,您可以手动安装它:
# 克隆存储库
git clone https://github.com/InditexTech/mcp-server-simulator-ios-idb.git
cd mcp-server-simulator-ios-idb
# 创建并激活 Python 虚拟环境
python3 -m venv venv
source venv/bin/activate # 在 Unix/macOS 上
# 安装依赖项
npm install
# 构建项目
npm run build
# 启动项目
npm start
# 运行测试
npm test
安装过程将自动执行以下操作:
- 检查您是否正在运行 macOS
- 通过 Homebrew 安装 idb-companion
- 通过 pip 在虚拟环境中安装 fb-idb
注意:请确保在使用服务器时保持虚拟环境处于激活状态。 如果您关闭终端并在稍后返回,则需要在运行 npm start
之前使用 source venv/bin/activate
命令重新激活虚拟环境。
🔌 MCP 集成
要将此服务器与 Claude 或其他 LLM 助手一起使用:
- 将服务器添加到 Claude Desktop 中的 MCP 设置:
{
"mcpServers": {
"ios-simulator": {
"command": "node",
"args": ["/path/to/mcp-server-simulator-ios-idb/dist/index.js"],
"env": {}
}
}
}
- LLM 现在可以使用自然语言命令来控制 iOS 模拟器:
create a simulator session with iPhone 14
install app /path/to/my-app.ipa
launch app com.example.myapp
tap at 100, 200
take a screenshot
📚 作为库使用
您也可以在自己的项目中使用此软件包作为库:
🔰 基本用法
import { createMCPServer } from 'mcp-server-simulator-ios-idb';
async function main() {
// 创建 MCP 服务器的实例
const { orchestrator } = createMCPServer();
// 处理自然语言命令
// 创建一个模拟器会话
const sessionResult = await orchestrator.processInstruction('create session');
console.log(`Session created: ${sessionResult.data}`);
// 与模拟器交互
await orchestrator.processInstruction('tap at 100, 200');
// 捕获屏幕截图
const screenshotResult = await orchestrator.processInstruction('take screenshot');
console.log(`Screenshot saved at: ${screenshotResult.data}`);
}
main().catch(console.error);
🚀 高级用法
您也可以直接使用各个组件:
import {
IDBManager,
NLParser,
MCPOrchestrator,
ParserToOrchestrator,
OrchestratorToIDB
} from 'mcp-server-simulator-ios-idb';
// 创建实例
const idbManager = new IDBManager();
const parser = new NLParser();
const orchestrator = new MCPOrchestrator(parser, idbManager);
// 直接使用组件
const sessionId = await idbManager.createSimulatorSession({
deviceName: 'iPhone 12',
platformVersion: '15.0'
});
await idbManager.tap(sessionId, 100, 200);
🏗️ 项目结构
mcp-server-simulator-ios-idb/
├── src/ # 源代码
│ ├── adapters/ # 适配器组件
│ ├── idb/ # IDB 管理器实现
│ ├── mcp/ # MCP 服务器实现
│ ├── orchestrator/ # 命令协调器
│ ├── parser/ # 自然语言解析器
│ └── index.ts # 主入口点
├── types/ # TypeScript 类型定义
├── scripts/ # 安装脚本
├── package.json # 项目配置
└── tsconfig.json # TypeScript 配置
🎯 支持的命令
NLParser 支持以下自然语言命令:
🎮 模拟器管理
命令 | 描述 | 示例 |
---|---|---|
创建会话 | 创建一个新的模拟器会话 | "create session", "create simulator iPhone 12" |
终止会话 | 终止当前会话 | "terminate session", "close simulator" |
列出模拟器 | 列出可用的模拟器 | "list simulators", "show simulators" |
列出已启动的模拟器 | 列出正在运行的模拟器 | "list booted simulators", "show running simulators" |
启动模拟器 | 通过 UDID 启动模拟器 | "boot simulator 5A321B8F-4D85-4267-9F79-2F5C91D142C2" |
关闭模拟器 | 关闭模拟器 | "shutdown simulator 5A321B8F-4D85-4267-9F79-2F5C91D142C2" |
聚焦模拟器 | 将模拟器窗口置于前台 | "focus simulator", "bring simulator to front" |
列出模拟器会话 | 列出活动的模拟器会话 | "list simulator sessions", "show active sessions" |
📱 应用程序管理
命令 | 描述 | 示例 |
---|---|---|
安装应用程序 | 在模拟器上安装应用程序 | "install app /path/to/app.ipa" |
启动应用程序 | 在模拟器上启动应用程序 | "launch app com.example.app" |
终止应用程序 | 终止正在运行的应用程序 | "terminate app com.example.app" |
卸载应用程序 | 卸载应用程序 | "uninstall app com.example.app" |
列出应用程序 | 列出已安装的应用程序 | "list apps", "show installed apps" |
检查应用程序是否已安装 | 检查应用程序是否已安装 | "is app com.example.app installed" |
🖱️ UI 交互
命令 | 描述 | 示例 |
---|---|---|
点击 | 点击特定坐标 | "tap at 100, 200" |
滑动 | 执行滑动操作 | "swipe from 100, 200 to 300, 400" |
按下按钮 | 按下设备按钮 | "press button HOME", "press button SIRI" |
输入文本 | 输入文本 | "input text Hello World" |
按下按键 | 通过代码按下按键 | "press key 4" |
按下按键序列 | 按下按键序列 | "press key sequence 4 5 6" |
♿ 辅助功能
命令 | 描述 | 示例 |
---|---|---|
描述元素 | 列出所有辅助功能元素 | "describe all elements", "show accessibility elements" |
描述点 | 描述坐标处的元素 | "describe point 100, 200", "what's at 150, 300" |
📸 捕获和日志
命令 | 描述 | 示例 |
---|---|---|
截取屏幕截图 | 截取屏幕截图 | "take screenshot", "capture screen" |
录制视频 | 录制屏幕活动 | "record video /path/output.mp4" |
停止录制 | 停止视频录制 | "stop recording", "stop video recording" |
获取日志 | 检索系统或应用程序日志 | "get logs", "get logs for com.example.app" |
🐛 调试
命令 | 描述 | 示例 |
---|---|---|
启动调试 | 启动调试会话 | "debug app com.example.app", "start debug com.example.app" |
停止调试 | 停止调试会话 | "stop debug", "terminate debug session" |
调试状态 | 获取调试会话状态 | "debug status", "show debug info" |
💥 崩溃日志
命令 | 描述 | 示例 |
---|---|---|
列出崩溃日志 | 列出可用的崩溃日志 | "list crash logs", "show crash logs" |
显示崩溃日志 | 显示崩溃日志的内容 | "show crash log crash_2023-01-01" |
删除崩溃日志 | 删除崩溃日志 | "delete crash logs", "clear crash logs" |
🔧 其他命令
命令 | 描述 | 示例 |
---|---|---|
安装 dylib | 安装动态库 | "install dylib /path/to/library.dylib" |
打开 URL | 在模拟器中打开 URL | "open url https://example.com" |
清除钥匙串 | 清除模拟器的钥匙串 | "clear keychain" |
设置位置 | 设置模拟器的位置 | "set location 37.7749, -122.4194" |
添加媒体 | 将媒体添加到相机胶卷 | "add media /path/to/image.jpg" |
批准权限 | 批准应用程序权限 | "approve permissions com.example.app photos camera" |
更新联系人 | 更新联系人数据库 | "update contacts /path/to/contacts.sqlite" |
该接口支持 idb CLI 工具中提供的所有命令,为 iOS 模拟器自动化提供了一套全面的操作。
🔍 架构
该服务器由三个主要组件组成:
- IDBManager: 低级组件,通过 idb 直接与 iOS 模拟器交互。
- NLParser: 组件,解释自然语言指令并将其转换为结构化命令。
- MCPOrchestrator: 中心组件,协调解析器和 IDBManager 之间的交互。
这些组件通过适配器连接:
- ParserToOrchestrator: 将解析器结果转换为协调器命令。
- OrchestratorToIDB: 将协调器命令转换为 IDBManager 调用。
🔌 MCP 集成
要将此服务器与模型上下文协议一起使用:
- 将服务器添加到您的 MCP 设置:
{
"mcpServers": {
"ios-simulator": {
"command": "node",
"args": ["/path/to/mcp-server-simulator-ios-idb/dist/index.js"],
"env": {}
}
}
}
- 在您的 LLM 应用程序中连接到服务器:
const result = await useMcpTool({
serverName: "ios-simulator",
toolName: "process-instruction",
arguments: {
instruction: "create simulator session"
}
});
🙏 鸣谢
如果没有 facebook/idb,这个项目是不可能实现的,它提供了底层的 iOS 模拟器控制功能。 我们向 Facebook/Meta 团队以及 idb 项目的所有贡献者表示衷心的感谢,感谢他们创建和维护如此强大而可靠的工具。
📄 许可证
此工具根据 Apache-2.0 的条款作为开源提供。
推荐服务器

Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。