iOS Screenshot MCP Server
This server enables automated interaction with iOS devices and simulators via Appium, allowing AI clients to visually inspect and control iOS apps.
📸 Take Screenshots: Capture the current screen of an iOS device or simulator and save it as an image file, with configurable device, app, and Appium server settings.
👆 Click UI Elements: Tap on specific UI elements identified by their accessibility ID, enabling automated navigation and interaction within apps.
🌳 Dump UI Element Tree: Retrieve the full UI element hierarchy of the current screen in XML format, useful for inspecting app structure and identifying elements for automation.
Key details:
Connects to a locally running Appium server (
http://127.0.0.1:4723by default)Supports both Stdio and SSE modes for MCP-compatible clients
Shares a single Appium session across all tools to avoid redundant connections
Compatible with real iOS devices and simulators via the XCUITest framework
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@iOS Screenshot MCP ServerTake a screenshot of the iPhone 16 Pro Max home screen"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
iOS Appium MCP Server
基于 Appium 的 iOS 设备自动化测试 MCP Server,支持屏幕截图、元素点击和 UI 树获取,可用于 Trae 等支持 MCP 协议的 AI 客户端。
安装依赖
uv syncRelated MCP server: SilbercueSwift
运行方式
方式一:Stdio 模式(推荐用于 Trae)
uv run python mcp_server.py --stdio方式二:SSE 模式(用于远程连接)
uv run python mcp_server.py服务器将在 http://localhost:8000 运行。
Trae MCP 配置
Stdio 模式(推荐)
将以下 JSON 配置添加到 Trae 的 MCP Servers 配置中:
{
"name": "iOS Screenshot MCP",
"type": "stdio",
"command": "uv run python mcp_server.py --stdio",
"cwd": "~/mcp-servers/ios-playwright-mcp",
"enabled": true
}SSE 模式
先启动服务器:
cd ~/mcp-servers/ios-playwright-mcp
uv run python mcp_server.py将以下 JSON 配置添加到 Trae 的 MCP Servers 配置中:
{
"name": "iOS Screenshot MCP",
"type": "sse",
"url": "http://localhost:8000/mcp/sse",
"enabled": true
}Claude code MCP 配置
"mcpServers": {
"ios-playwright": {
"name": "ios-playwright",
"type": "stdio",
"command": "bash",
"args": [
"-c",
"source ~/mcp-servers/ios-playwright-mcp/.venv/bin/activate && uv run python ~/mcp-servers/ios-playwright-mcp/mcp_server.py --stdio"
],
"cwd": "~/mcp-servers/ios-playwright-mcp/"
}
}工具说明
take_ios_screenshot_tool
截取 iOS 设备屏幕并保存为图片文件。
参数:
参数 | 类型 | 默认值 | 说明 |
platform_name | str | iOS | 平台名称 |
automation_name | str | XCUITest | 自动化框架名称 |
device_name | str | iPhone 16 Pro Max | 设备名称 |
udid | str | 32EFED52-E30A-4CC8-AAE9-525B5A3A5B6A | 设备唯一标识符 |
bundle_id | str | com.xue.Demo01 | 应用 Bundle ID |
appium_server_url | str | Appium 服务器地址 | |
output_path | str | screen.png | 截图保存路径 |
返回值:
截图文件的完整路径。
element_click_tool
通过 accessibility_id 点击 iOS 设备上的元素。
参数:
参数 | 类型 | 默认值 | 说明 |
accessibility_id | str | - | 元素的 accessibility identifier(必填) |
platform_name | str | iOS | 平台名称 |
automation_name | str | XCUITest | 自动化框架名称 |
device_name | str | iPhone 16 Pro Max | 设备名称 |
udid | str | 32EFED52-E30A-4CC8-AAE9-525B5A3A5B6A | 设备唯一标识符 |
bundle_id | str | com.xue.Demo01 | 应用 Bundle ID |
appium_server_url | str | Appium 服务器地址 |
返回值:
操作结果消息。
dump_ui_element_tool
获取 iOS 设备当前屏幕的完整 UI 元素树(XML 格式)。
参数:
参数 | 类型 | 默认值 | 说明 |
platform_name | str | iOS | 平台名称 |
automation_name | str | XCUITest | 自动化框架名称 |
device_name | str | iPhone 16 Pro Max | 设备名称 |
udid | str | 32EFED52-E30A-4CC8-AAE9-525B5A3A5B6A | 设备唯一标识符 |
bundle_id | str | com.xue.Demo01 | 应用 Bundle ID |
appium_server_url | str | Appium 服务器地址 |
返回值:
UI 元素树的 XML 字符串。
前置条件
调用截图工具前需要确保:
Appium Server 已启动在
http://127.0.0.1:4723目标设备/模拟器已连接
指定的应用(
bundle_id)已安装在设备上
文件结构
.
├── mcp_server.py # MCP Server 主文件
├── screenshot_service.py # Appium 服务模块(会话管理、截图、点击、UI树)
├── main.py # 原始截图脚本
├── pyproject.toml # 项目配置
└── README.md # 项目说明会话管理
所有工具共享同一个 Appium 会话,避免重复建立连接。会话在首次调用任一工具时创建,保持活跃状态直到服务器停止。
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/xuxueyong1/ios-playwright-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server