这是一个为iOS模拟器实现模型上下文协议(MCP)的服务器,基于appium-ios-simulator,并使用MCP TypeScript SDK。
<a href="https://glama.ai/mcp/servers/@atom2ueki/mcp-server-ios-simulator"> <img width="380" height="200" src="https://gips1.baidu.com/it/u=4140685877,3451246185&fm=3081&app=3081&f=PNG?w=760&h=400" alt="iOS模拟器MCP服务器" /> </a>该项目提供了一个连接iOS模拟器与模型上下文协议的桥梁,允许标准化地与iOS模拟器实例进行通信。它实现了对iOS模拟器的程序化控制,并利用MCP协议在不同环境中保持一致的接口。该服务器使用标准I/O作为传输机制,使其非常适合与Claude Desktop和其他兼容MCP的客户端集成。

演示如何使用Claude AI Desktop启动iOS模拟器
服务器由三个主要组件构成:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ MCP协议实现 │ │ 标准I/O │ │ 模拟器管理 │
│ │◄────┤ 传输层 │◄────┤ 层 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
▲ ▲
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ MCP客户端 │ │ iOS模拟器 │
│ (例如Claude) │ │ │
└─────────────────┘ └─────────────────┘
要通过Smithery自动安装Claude Desktop的iOS模拟器控制服务器:
npx -y @smithery/cli install @atom2ueki/mcp-server-ios-simulator --client claude
# 克隆仓库
git clone https://github.com/atom2ueki/mcp-server-ios-simulator.git
cd mcp-server-ios-simulator
# 安装依赖
npm install
配置通过src/config.ts文件处理:
const config = {
simulator: {
defaultDevice: process.env.SIMULATOR_DEFAULT_DEVICE || 'iPhone 16',
defaultOS: process.env.SIMULATOR_DEFAULT_OS || '18.2',
timeout: parseInt(process.env.SIMULATOR_TIMEOUT || '30000', 10),
}
};
可以通过设置环境变量来自定义这些设置:
SIMULATOR_DEFAULT_DEVICE=iPhone 16
SIMULATOR_DEFAULT_OS=18.2
SIMULATOR_TIMEOUT=30000
# 构建项目
npm run build
# 启动服务器
npm start
服务器提供了两种不同的方式来控制iOS模拟器:
这些工具直接与模拟器UDID工作,不需要维护会话:
list-available-simulators - 列出所有可用的模拟器及其UDIDboot-simulator-by-udid - 使用其UDID直接启动模拟器shutdown-simulator-by-udid - 使用其UDID直接关闭模拟器list-booted-simulators - 列出所有当前已启动的模拟器当您只需要直接启动、使用和关闭模拟器时,请使用此方法。
这些工具使用一个跟踪模拟器的自定义会话ID的会话层:
list-simulator-sessions - 列出所有活动的模拟器会话create-simulator-session - 创建新的模拟器会话terminate-simulator-session - 终止会话(关闭模拟器并清理)create-and-boot-simulator - 创建新的模拟器会话并启动它boot-simulator - 为现有会话启动模拟器shutdown-simulator - 为现有会话关闭模拟器当您需要跟踪模拟器元数据、通过自定义ID引用模拟器或使用更高级的管理功能时,请使用此方法。
install-app - 在模拟器上安装应用程序launch-app - 在模拟器上启动应用程序terminate-app - 终止模拟器上运行的应用程序take-screenshot - 捕获模拟器屏幕截图tap-coordinate - 在指定坐标执行点击操作配置Claude Desktop以使用此服务器作为MCP工具:
{
"mcpServers": {
"simulator": {
"command": "node",
"args": [
"/path/to/your/mcp-server-ios-simulator/dist/index.js"
]
}
}
}
/path/to/your替换为您实际安装此仓库的位置使用提供的工具直接从Claude Desktop控制iOS模拟器:
直接UDID方法(推荐):
首先,让Claude列出所有可用的模拟器:
"显示所有可用的iOS模拟器"
然后使用UDID启动特定模拟器:
"启动具有UDID 5272EA61-5796-4372-86FE-3B33831D5CC1的iOS模拟器"
结束时,使用相同的UDID关闭它:
"关闭具有UDID 5272EA61-5796-4372-86FE-3B33831D5CC1的模拟器"
直接UDID方法对于大多数用例来说更简单可靠。
基于会话的方法(高级): 只有在需要会话跟踪的高级功能时才使用这种方法:
"为iPhone 16 Pro创建一个新的iOS 18.2模拟器会话"
"为会话abc-123启动模拟器"
"为会话abc-123捕获模拟器的屏幕截图"
"终止会话abc-123"
src/
├── simulator/ # 模拟器管理层
├── mcp/ # MCP协议实现
├── bridge/ # 桥接组件
├── utils/ # 包括日志在内的实用函数
├── config.ts # 配置处理
└── index.ts # 入口点
# 安装开发依赖
npm install
# 运行TypeScript编译器
npm run build
本项目根据MIT许可证发布 - 详情见LICENSE文件。