Skip to main content
Glama
kapillamba4

app-store-screenshots-mcp

by kapillamba4
README.md
# app-store-screenshots-mcp

MCP server that turns **raw in-app screenshots** into **beautiful, store-ready marketing images** for the **iOS App Store** and **Google Play**.

## Creative split (same session)

| Who | Does what |
|-----|-----------|
| **Host AI agent (you)** | In **this session**: write titles/subtitles, generate backgrounds, generate clipart, choose layouts & alignment, pick brand colors |
| **This MCP server** | Device frames, composite layers, typography render, exact pixel export |

The server does **not** invent marketing art. Call `get_session_design_guide` first, generate assets with your image tools, then compose.

## Features

- **Session design guide** — prompts + plan for backgrounds, clipart, copy, alignment
- **AI clipart overlays** — transparent PNGs with position/rotate/opacity
- **AI-directed layout** — presets + `custom` with `devicePlacement` / `captionStyle`
- iPhone mockup + CSS Android frame
- Exact App Store / Play sizes, opaque PNG, batch + `manifest.json`

## Install

```bash
npm install
npx playwright install chromium
npm run build
```

### Grok (`~/.grok/config.toml`)

```toml
[mcp_servers.app-store-screenshots]
command = "node"
args = ["/absolute/path/to/app-store-screenshots-mcp/dist/index.js"]
startup_timeout_sec = 60
tool_timeout_sec = 300
```

## Tools

| Tool | Purpose |
|------|---------|
| `get_session_design_guide` | **Start here** — per-slide AI prompts, copy rules, layout plan |
| `list_export_sizes` | Size ids and dimensions |
| `list_layouts` | Layout templates including `custom` |
| `generate_screenshot` | Compose one slide |
| `generate_screenshot_set` | Compose 1–10 slides + manifest |

## Same-session agent workflow

1. **Guide** — `get_session_design_guide({ appName, features, styleDirection, brandColors, platform })`
2. **Copy** — write headline + optional subheadline per slide (from guide rules)
3. **Backgrounds** — image-gen one portrait BG per slide (guide `promptTemplate`; **no text/phone/UI**)
4. **Clipart** — image-gen transparent decorative PNGs; place with `clipart[]`
5. **Alignment** — pick layout or `custom` + `devicePlacement` / `captionStyle`
6. **Compose** — `generate_screenshot_set` with absolute paths
7. **Ship** — deliver numbered PNGs to the user

### Example compose payload

```json
{
  "platform": "ios",
  "sizes": ["ios-6.9"],
  "outputDir": "/tmp/store-shots",
  "brand": {
    "textColor": "#FFFFFF",
    "accentColor": "#A5B4FC",
    "fontFamily": "Inter, system-ui, sans-serif"
  },
  "slides": [
    {
      "appScreenshot": "/path/to/home.png",
      "backgroundImage": "/path/to/session/bg-01.png",
      "headline": "Track every\ncoffee you buy",
      "subheadline": "A home for every bag",
      "label": "Brew Log",
      "layout": "hero",
      "captionStyle": { "align": "center", "textShadow": true },
      "clipart": [
        {
          "path": "/path/to/session/clipart-01.png",
          "xPercent": 70,
          "yPercent": 16,
          "widthPercent": 24,
          "rotateDeg": -10,
          "opacity": 0.95
        }
      ]
    },
    {
      "appScreenshot": "/path/to/detail.png",
      "backgroundImage": "/path/to/session/bg-02.png",
      "headline": "Never waste\na great bag",
      "layout": "custom",
      "devicePlacement": {
        "widthPercent": 80,
        "leftPercent": 15,
        "bottomPercent": -8,
        "rotateDeg": 3
      },
      "captionStyle": {
        "position": "top",
        "align": "left",
        "offsetTopPercent": 6,
        "offsetXPercent": 8,
        "textShadow": true
      }
    }
  ]
}
```

## Export sizes

| Id | Platform | Pixels |
|----|----------|--------|
| `ios-6.9` (primary) | iOS | 1320×2868 |
| `ios-6.5` | iOS | 1284×2778 |
| `ios-6.3` | iOS | 1206×2622 |
| `ios-6.1` | iOS | 1125×2436 |
| `play-phone` (primary) | Android | 1080×1920 |
| `play-phone-tall` | Android | 1080×2340 |

## Development

```bash
npm test
npm run build
```

## License

MIT

TDQS

A4.1/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a distinct purpose: generating single or multiple screenshots, retrieving a design guide, listing export sizes, and listing layout templates. No overlapping functionality, making selection unambiguous.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case (e.g., generate_screenshot, get_session_design_guide). The naming is predictable and uniform across the set.

Tool Count5/5

With 5 tools, the set is appropriately scoped for the domain of generating app store screenshots. Each tool fills a necessary role without redundancy or deficiency.

Completeness5/5

The tool set covers the full workflow: planning via design guide, configuration via export sizes and layouts, and execution via single or batch screenshot generation. No obvious gaps for the intended purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues