iOS simulators MCP

by InditexTech
Verified

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:

  1. 只需询问克莱恩:
Add this mcp to cline https://github.com/InditexTech/mcp-server-simulator-ios-idb
  1. Cline 将自动处理安装过程,包括依赖项管理和配置。

或者,您可以手动安装:

# Clone the repository git clone https://github.com/InditexTech/mcp-server-simulator-ios-idb.git cd mcp-server-simulator-ios-idb # Create and activate Python virtual environment python3 -m venv venv source venv/bin/activate # On Unix/macOS # Install dependencies npm install # Build the project npm run build # Start the project npm start # Run tests npm test

安装过程将自动:

  1. 检查您是否正在运行 macOS
  2. 通过 Homebrew 安装 idb-companion
  3. 在虚拟环境中通过pip安装fb-idb

注意:使用服务器时,请确保虚拟环境保持激活状态。如果您关闭终端并稍后返回,则需要在运行npm start之前使用source venv/bin/activate命令重新激活虚拟环境。

🔌 MCP 集成

要与 Claude 或其他 LLM 助手一起使用此服务器:

  1. 将服务器添加到 Claude Desktop 中的 MCP 设置中:
{ "mcpServers": { "ios-simulator": { "command": "node", "args": ["/path/to/mcp-server-simulator-ios-idb/dist/index.js"], "env": {} } } }
  1. 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() { // Create an instance of the MCP server const { orchestrator } = createMCPServer(); // Process natural language commands // Create a simulator session const sessionResult = await orchestrator.processInstruction('create session'); console.log(`Session created: ${sessionResult.data}`); // Interact with the simulator await orchestrator.processInstruction('tap at 100, 200'); // Capture a screenshot 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'; // Create instances const idbManager = new IDBManager(); const parser = new NLParser(); const orchestrator = new MCPOrchestrator(parser, idbManager); // Use the components directly const sessionId = await idbManager.createSimulatorSession({ deviceName: 'iPhone 12', platformVersion: '15.0' }); await idbManager.tap(sessionId, 100, 200);

🏗️ 项目结构

mcp-server-simulator-ios-idb/ ├── src/ # Source code │ ├── adapters/ # Adapter components │ ├── idb/ # IDB manager implementation │ ├── mcp/ # MCP server implementation │ ├── orchestrator/ # Command orchestrator │ ├── parser/ # Natural language parser │ └── index.ts # Main entry point ├── types/ # TypeScript type definitions ├── scripts/ # Installation scripts ├── package.json # Project configuration └── tsconfig.json # TypeScript configuration

🎯 支持的命令

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模拟器自动化提供了一套全面的操作。

🔍 建筑

该服务器由三个主要组件组成:

  1. IDBManager :通过 idb 直接与 iOS 模拟器交互的低级组件。
  2. NLParser :解释自然语言指令并将其转换为结构化命令的组件。
  3. MCPOrchestrator :协调解析器和IDBManager之间交互的中央组件。

这些组件通过适配器连接:

  • ParserToOrchestrator :将解析器结果转换为编排器命令。
  • OrchestratorToIDB :将 Orchestrator 命令转换为 IDBManager 调用。

🔌 MCP 集成

要将此服务器与模型上下文协议一起使用:

  1. 将服务器添加到您的 MCP 设置:
{ "mcpServers": { "ios-simulator": { "command": "node", "args": ["/path/to/mcp-server-simulator-ios-idb/dist/index.js"], "env": {} } } }
  1. 连接到 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 条款,此工具可作为开源工具使用。

ID: lpriwa3d78