README.md•3.52 kB
# MCP iOS Simulator Screenshot
A server that captures screenshots from iOS Simulator using the Model Context Protocol (MCP).
## Overview
This project implements an MCP protocol server that captures the current screen of the iOS Simulator and saves it to a specified directory.
## Setup
### Cline and Roo Code
For Cline and Roo Code, the basic format is:
```json
{
  "mcpServers": {
    "mcp-ios-simulator-screenshot": {
      "command": "npx",
      "args": ["-y", "mcp-ios-simulator-screenshot"]
    }
  }
}
```
If you clone the repository, you can use the following configuration:
```json
{
  "mcpServers": {
    "mcp-ios-simulator-screenshot": {
      "command": "node",
      "args": ["/path/to/mcp-ios-simulator-screenshot/build/index.js"]
    }
  }
}
```
### Cursor, Claude Desktop
For Cursor and Claude Desktop, you need to specify the `--output-dir` and the output directory:
```json
{
  "mcpServers": {
    "mcp-ios-simulator-screenshot": {
      "command": "npx",
      "args": [
        "mcp-ios-simulator-screenshot",
        "--output-dir",
        "/path/to/your/output/directory"
      ]
    }
  }
}
```
## MCP Tool Parameters
### get_screenshot
Captures a screenshot from iOS Simulator and saves it to the specified directory.
| Parameter             | Type    | Description                                           | Default Value |
| --------------------- | ------- | ----------------------------------------------------- | ------------- |
| output_filename       | string  | Output filename                                       | timestamp.png |
| output_directory_name | string  | Subdirectory name for screenshots                     | .screenshots  |
| resize                | boolean | Whether to resize the image to approximately VGA size | true          |
| max_width             | integer | Maximum width for resizing (pixels)                   | 640           |
| device_id             | string  | Specify a simulator device                            | booted device |
## Output Format
On success:
```json
{
  "success": true,
  "message": "iOS Simulator screenshot saved successfully",
  "filePath": ".screenshots/simulator_2025-04-10T16-51-16-755Z.png",
  "metadata": {
    "width": 1170,
    "height": 2532,
    "format": "png",
    "size": 382946,
    "timestamp": "2025-04-10T16:51:16.755Z"
  },
  "serverConfig": {
    "commandLineArgs": {
      "outputDir": "/Users/username/Desktop" // Only included when --output-dir is specified
    }
  }
}
```
Note: The `serverConfig.commandLineArgs.outputDir` field is only included in the response when the `--output-dir` parameter is specified when starting the server.
```json
{
  "success": false,
  "message": "Error capturing iOS Simulator screenshot: [error message]",
  "error": {
    "code": "ENOENT",
    "command": "xcrun simctl io booted screenshot --type=png -",
    "stderr": "No matching devices found."
  }
}
```
## Troubleshooting
- **If you cannot capture screenshots**:
  - Check if iOS Simulator is running
  - Check if Xcode Command Line Tools are installed
  - Check if the `xcrun simctl io booted screenshot` command can be executed directly
- **If permission errors occur**:
  - Check if you have write permissions for the output directory
## Requirements
- Node.js 16.0.0 or higher
- macOS (iOS Simulator required)
- Xcode Command Line Tools
## Technology Stack
- TypeScript
- Node.js
- MCP SDK (@modelcontextprotocol/sdk)
## License
MIT
## Other Languages
- [日本語](README.ja.md)