Shotter
Shotter
MCP (Model Context Protocol) server for iOS Simulator automation. Provides tools for AI assistants to navigate iOS apps, interact with UI elements, and capture screenshots.
Features
MCP Integration: Works with Claude Desktop, Claude Code, and other MCP-compatible clients
Device Management: List, select, and boot iOS Simulator devices
UI Automation: Tap, swipe, type, and navigate iOS apps
Screenshot Capture: Visual analysis and high-quality screenshot saving
Workflow Support: Load and execute YAML-defined navigation workflows
Installation
npm install
npm run buildConfiguration
Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"shotter": {
"command": "node",
"args": ["/path/to/shotter/dist/server.js"]
}
}
}Claude Code
Add to your project's .mcp.json or global settings:
{
"mcpServers": {
"shotter": {
"command": "node",
"args": ["/path/to/shotter/dist/server.js"]
}
}
}Available Tools
Device Management
Tool | Description |
| List available iOS simulators with names, UDIDs, and states |
| Boot a simulator and set it as active (fuzzy name matching) |
| Launch an app by bundle ID on the active device |
UI Interaction
Tool | Description |
| Capture screenshot for visual analysis |
| Get accessibility info with coordinates for all UI elements |
| Tap at specific coordinates |
| Swipe gesture (for scrolling and navigation) |
| Type text into focused field |
| Save high-quality screenshot to a file |
Workflow
Tool | Description |
| Load and parse a workflow YAML file |
| List available workflow files in a directory |
Available Prompts
Prompt | Description |
| System prompt with iOS Simulator navigation strategies |
| Format a workflow step with goal and hints for execution |
Usage Examples
Once configured, ask your AI assistant to:
"Select iPhone 16 Pro and launch the Settings app"
"Take a screenshot of the current screen"
"Tap on the Wi-Fi option in Settings"
"Navigate to Privacy settings and take a screenshot"Workflow Format
Workflows define multi-step navigation sequences:
name: "My App Screenshots"
description: "Capture key screens from my app"
bundleId: "com.example.myapp"
devices:
- "iPhone 16 Pro"
- "iPad Pro"
maxIterations: 20
outputDir: "./screenshots"
steps:
- goal: "Navigate to settings"
hints:
- "Look for a gear icon or Settings tab"
screenshot: "settings.png"
- goal: "Open the profile screen"
screenshot: "profile.png"YAML Fields
Field | Required | Description |
| Yes | Workflow name |
| No | Workflow description |
| Yes | App bundle identifier |
| Yes | List of simulator device names (fuzzy matched) |
| No | Script to run before steps for each device |
| No | Max iterations per step (default: 20) |
| No | Screenshot output directory (default: ./screenshots) |
| Yes | List of navigation steps |
Step Fields
Field | Required | Description |
| Yes | What to accomplish |
| No | Hints to help navigate |
| No | Filename to save screenshot after step completes |
Requirements
macOS with Xcode installed
iOS Simulator
Node.js 18+
Facebook IDB (
brew install idb-companion)
Development
npm run dev # Watch mode
npm run build # Compile TypeScriptHow It Works
Shotter acts as an MCP server that:
Manages iOS Simulator device lifecycle (boot, select)
Proxies UI commands to
ios-simulator-mcpfor screen interactionProvides navigation prompts optimized for AI assistants
Supports workflow files for repeatable multi-step automation
The AI assistant uses ui_view to see the screen, makes decisions about what to tap or type, and verifies actions succeeded before continuing.
License
ISC
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/nathanstitt/shotter'
If you have feedback or need assistance with the MCP directory API, please join our Discord server