Skip to main content
Glama

📱 iOS 模拟器的 MCP 服务器

MCP 服务器

模型上下文协议 (MCP) 服务器,使 LLM 能够通过自然语言命令与 iOS 模拟器交互。

ℹ️ 概述

这款 MCP 服务器在大型语言模型 (LLM) 和 iOS 模拟器之间架起了一座桥梁,通过自然语言命令提供全面的控制。它的功能如下:

有关详细使用方法,请参阅安装指南和支持的命令部分。您可以通过直接 MCP 集成或作为独立库使用此服务器。

查看架构部分以了解组件如何协同工作以实现 iOS 模拟器的自然语言控制。

演示

🎮 模拟器控制

  • 创建和管理模拟器会话

  • 启动、关闭和监控模拟器状态

  • 列出可用且正在运行的模拟器

  • 焦点模拟器窗口

📱 应用程序管理

  • 安装和管理 iOS 应用程序

  • 启动、终止和卸载应用程序

  • 监控应用状态并验证安装

  • 处理应用程序权限和配置

🖱️ UI 交互与测试

  • 与模拟器 UI 交互

  • 执行点击、滑动和按钮按下操作

  • 输入文本和按键序列

  • 访问可访问性元素以进行 UI 测试

  • 录制UI交互的视频

🛠️ 开发与调试

  • 捕获屏幕截图和系统日志

  • 实时调试应用程序

  • 监控和分析崩溃日志

  • 安装动态库并管理应用程序数据

⚡ 高级功能

  • 其他功能包括:

    • 位置模拟

    • 媒体注入

    • URL 方案处理

    • 联系人数据库管理

    • 钥匙串操作

有关详细使用方法,请参阅安装指南和支持的命令部分。您可以通过直接 MCP 集成或作为独立库使用此服务器。

查看架构部分以了解组件如何协同工作以实现 iOS 模拟器的自然语言控制。

Related MCP server: Moodle MCP Server

📋 要求

  • 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 条款,此工具可作为开源工具使用。

One-click Deploy
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/InditexTech/mcp-server-simulator-ios-idb'

If you have feedback or need assistance with the MCP directory API, please join our Discord server