phantom-touch
Allows automation of iOS simulators: screenshots, element inspection, gestures, app management, and clipboard-based text input that works with React Native controlled TextInput.
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., "@phantom-touchType 'hello@example.com' into the email field at (200, 450)"
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.
👻 phantom-touch
An MCP server for iOS simulator automation — with clipboard-based text input that works with React Native.
phantom-touch gives AI agents full control over iOS simulators: screenshots, element inspection, gestures, app management, and most importantly — reliable text input into React Native forms.
Quick Start
Claude Desktop / Cursor
Add to your MCP configuration:
{
"mcpServers": {
"phantom-touch": {
"command": "npx",
"args": ["-y", "phantom-touch"]
}
}
}That's it. No cloning, no building — just npx.
Related MCP server: app-screen-mcp
The Problem
Every existing iOS MCP tool fails at filling React Native TextInput components because:
HID keyboard events don't trigger
onChangeTextWebDriverAgent
setValuegets overwritten by React state
The Solution
phantom-touch uses a clipboard + paste strategy:
simctl pbcopy→ set simulator clipboardidb tap→ focus the fieldCmd+V→ paste triggersonChangeText✅
16 MCP Tools
Module | Tools |
Simulator |
|
App |
|
Screen |
|
Gesture |
|
Input ⭐ |
|
Prerequisites
macOS with Xcode installed
iOS Simulator
IDB (iOS Development Bridge):
brew install idb-companionNode.js 18+
Usage Examples
Once configured, ask your AI agent:
"Take a screenshot of the simulator"
"List all UI elements on screen"
"Tap the Create Account button at (200, 500)"
"Type 'hello@example.com' into the email field at (200, 450)"
"Open the deep link myapp://login"
Text Input Strategies
paste (default, recommended)
Uses clipboard + Cmd+V. Works with React Native controlled TextInput.
pt_type_text(text: "Hello", x: 200, y: 400, strategy: "paste")keyboard
Uses HID keyboard events. Faster but may fail with React Native.
pt_type_text(text: "Hello", x: 200, y: 400, strategy: "keyboard")Development
git clone https://github.com/hieudtr8/phantom-touch.git
cd phantom-touch
npm install
npm run build
npm run dev # Run in dev mode with tsxLicense
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- 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/hieudtr8/phantom-touch'
If you have feedback or need assistance with the MCP directory API, please join our Discord server