@appscreenshotstudio/mcp 0.4.2 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -5
- package/dist/index.js +79 -24
- package/package.json +1 -1
- package/skills/appscreenshotstudio/SKILL.md +1 -1
package/README.md
CHANGED
|
@@ -148,6 +148,21 @@ Generate an AI background for a specific card. Uses project metadata (brand colo
|
|
|
148
148
|
|
|
149
149
|
**Costs 6 credits.**
|
|
150
150
|
|
|
151
|
+
### `generate-panoramic-background`
|
|
152
|
+
|
|
153
|
+
Generate one wide image and slice it across multiple cards so they read as a continuous scene in the App Store gallery. Use after a panoramic chat edit ("pano the background across cards 1-3") to fulfill the pending panoramic, or pass an explicit `prompt` / `pexels_query`.
|
|
154
|
+
|
|
155
|
+
| Parameter | Type | Required | Description |
|
|
156
|
+
|---|---|---|---|
|
|
157
|
+
| `project_id` | string | Yes | Project containing the cards |
|
|
158
|
+
| `prompt` | string | No | AI scene description (Gemini). Costs 6 credits. |
|
|
159
|
+
| `pexels_query` | string | No | Stock photo search query (Pexels). Free. |
|
|
160
|
+
| `card_indices` | number[] | No | Cards sharing the panoramic (0-based, min 2). Default: first 3. |
|
|
161
|
+
|
|
162
|
+
Omit both `prompt` and `pexels_query` to fulfill a panoramic already set up by `generate-screenshots` / `edit-screenshots`.
|
|
163
|
+
|
|
164
|
+
**Costs 6 credits (AI prompt) or free (Pexels query).**
|
|
165
|
+
|
|
151
166
|
### `list-devices`
|
|
152
167
|
|
|
153
168
|
Show all supported device specs. No API call needed.
|
|
@@ -169,6 +184,7 @@ Once installed, use `/appscreenshotstudio` in Claude Code or just ask "generate
|
|
|
169
184
|
| ID | Name | Size | Required |
|
|
170
185
|
|---|---|---|---|
|
|
171
186
|
| `iphone-6.9` | iPhone 16 Pro Max | 1260x2736 | App Store |
|
|
187
|
+
| `iphone-6.3` | iPhone 17 Pro | 1206x2622 | Optional |
|
|
172
188
|
| `ipad-13` | iPad Pro 13" | 2064x2752 | App Store |
|
|
173
189
|
| `android-phone` | Android Phone | 1080x2340 | Play Store |
|
|
174
190
|
| `android-tablet-10` | Android Tablet 7" | 1200x1920 | Play Store |
|
|
@@ -178,12 +194,13 @@ Once installed, use `/appscreenshotstudio` in Claude Code or just ask "generate
|
|
|
178
194
|
|
|
179
195
|
The AI generates professional screenshots using:
|
|
180
196
|
|
|
181
|
-
- **
|
|
197
|
+
- **94 shape types** (17 core + 77 decorative across 13 categories): nature (leaf, flower, tree), weather (cloud, sun, snowflake), celebration (sparkle, trophy, crown, confetti), social (chat-bubble, music-note), tech (rocket, code-bracket), health (dumbbell, flame), food (coffee-cup, pizza), travel (airplane, compass), finance (dollar-sign, piggy-bank), education (graduation-cap, lightbulb), pets (paw-print, cat-face), emoji (smiley, fire-emoji), abstract (swirl, infinity, gem)
|
|
182
198
|
- **Rich text**: per-word color, bold, italic, underline, highlight pills (colored backgrounds behind words), gradient fills, text stroke outlines, emoji
|
|
183
|
-
- **
|
|
184
|
-
- **
|
|
185
|
-
- **
|
|
186
|
-
- **
|
|
199
|
+
- **Compound trust signals**: statRow, laurelStat, starRating, quote, pressBanner, featureGrid, beforeAfterSplit, stepList — auto-positioned per layout
|
|
200
|
+
- **Frame color**: recolor the device frame — `natural` (default), `black`, `white`, `gold`. Requires Growth plan or higher.
|
|
201
|
+
- **Panoramics**: slice one wide image across cards (chat tags the cards, then `generate-panoramic-background` creates and slices the image) or stretch a foreground element across adjacent cards (`apply_element_span`). Gallery gutters are accounted for.
|
|
202
|
+
- **9 device perspectives**: flat, left-15, left-30, right-15, right-30, isometric, top-down, landscape-left, landscape-right
|
|
203
|
+
- **14 layouts**: `text-top-device-bottom`, `text-top-device-tilted`, `device-hero`, `social-proof`, `review-clip`, `screen-hero`, `lifestyle-hero`, `photo-device-hero`, `feature-grid`, `before-after`, `stats-hero`, `metric-badge`, `annotated-feature`, `step-flow`. The AI varies `deviceScale`, `deviceSide`, `textPosition`, and `textAlign` per card so a set never looks like duplicates.
|
|
187
204
|
|
|
188
205
|
## Workflow
|
|
189
206
|
|
package/dist/index.js
CHANGED
|
@@ -31,6 +31,7 @@ const API_KEY = process.env.APPSCREENSHOTSTUDIO_API_KEY;
|
|
|
31
31
|
// ⚠️ Keep in sync: lib/device-specs.ts, mcp-server/README.md, docs/api page, docs/mcp page
|
|
32
32
|
const DEVICES = [
|
|
33
33
|
{ id: 'iphone-6.9', name: 'iPhone 16 Pro Max', width: 1260, height: 2736, category: 'iphone', required: true },
|
|
34
|
+
{ id: 'iphone-6.3', name: 'iPhone 17 Pro', width: 1206, height: 2622, category: 'iphone', required: false },
|
|
34
35
|
{ id: 'ipad-13', name: 'iPad Pro 13"', width: 2064, height: 2752, category: 'ipad', required: true },
|
|
35
36
|
{ id: 'android-phone', name: 'Android Phone', width: 1080, height: 2340, category: 'android-phone', required: true },
|
|
36
37
|
{ id: 'android-tablet-10', name: 'Android Tablet 7"', width: 1200, height: 1920, category: 'android-tablet', required: true },
|
|
@@ -126,7 +127,7 @@ function buildDesignMessage(input) {
|
|
|
126
127
|
// ─── MCP Server ─────────────────────────────────────────────────────────────────
|
|
127
128
|
const server = new McpServer({
|
|
128
129
|
name: 'appscreenshotstudio',
|
|
129
|
-
version: '0.4.
|
|
130
|
+
version: '0.4.4',
|
|
130
131
|
});
|
|
131
132
|
// Tool 1: generate-screenshots
|
|
132
133
|
server.registerTool('generate-screenshots', {
|
|
@@ -137,25 +138,30 @@ IMPORTANT: Before calling this tool, research the user's codebase to populate th
|
|
|
137
138
|
|
|
138
139
|
The AI picks a narrative arc that fits the app's sell angle (trust-first for finance/health, visual-first for creative/lifestyle, problem-first for pain-relief apps, numbers-led for SaaS/analytics, community-first for social, feature-forward for multi-mode apps) and assigns a job to each card: HOOK → EDUCATE → PROVE → CONVERT.
|
|
139
140
|
|
|
140
|
-
|
|
141
|
+
14 layout types available per card:
|
|
141
142
|
- text-top-device-bottom: headline top, flat device bottom (feature/educate)
|
|
142
143
|
- text-top-device-tilted: headline left, tilted device right (or mirrored)
|
|
143
144
|
- device-hero: headline + large centered device, product-forward
|
|
144
|
-
- social-proof: stars + quote + laurel stat, device
|
|
145
|
-
-
|
|
146
|
-
-
|
|
145
|
+
- social-proof: stars + quote + laurel stat, no device (testimonial-led)
|
|
146
|
+
- review-clip: rating-statement headline + stars + quote + bottom-clipped device
|
|
147
|
+
- screen-hero: top-clipped device + centered headline + optional trust stat
|
|
148
|
+
- lifestyle-hero: full-bleed photo background + text overlay (no device)
|
|
149
|
+
- photo-device-hero: full-bleed photo background + headline overlay + flat device
|
|
150
|
+
- feature-grid: headline + 2×2 or 2×3 icon+label grid, no device
|
|
147
151
|
- before-after: dark before-half + bright after-half (transformation apps)
|
|
148
|
-
- text-bottom: headline anchored to lower third, cinematic
|
|
149
152
|
- stats-hero: giant centered stat(s), no device, numbers-led
|
|
153
|
+
- metric-badge: centered device + chunky "achievement card" floating over its screen
|
|
154
|
+
- annotated-feature: tilted device + side callout chip linked by a connector line
|
|
155
|
+
- step-flow: headline + 2-4 numbered step rows ("how it works"), no device
|
|
150
156
|
|
|
151
|
-
Each card can carry auto-positioned compound fields: statRow, laurelStat, pressBanner, starRating, quote,
|
|
157
|
+
Each card can carry auto-positioned compound fields: statRow, laurelStat, pressBanner, starRating, quote, featureGrid, beforeAfterSplit, stepList.
|
|
152
158
|
|
|
153
|
-
Panoramic backgrounds slice one wide AI-generated or Pexels image across multiple cards for cohesion. Panoramic element spans stretch a foreground image or device across adjacent cards.
|
|
159
|
+
Panoramic backgrounds slice one wide AI-generated or Pexels image across multiple cards for cohesion. Panoramic element spans stretch a foreground image or device across adjacent cards. Note: if the design comes back with a panoramic background, the chat only tags the cards; call generate-panoramic-background afterwards to actually create and slice the wide image.
|
|
154
160
|
|
|
155
161
|
Design features:
|
|
156
162
|
- Rich text with per-word color, weight, italic, underline, highlight pills, gradient fills, stroke outlines, and emoji
|
|
157
|
-
- Device perspective variants: flat, left-15/30, right-15/30, isometric, top-down,
|
|
158
|
-
-
|
|
163
|
+
- Device perspective variants: flat, left-15/30, right-15/30, isometric, top-down, landscape
|
|
164
|
+
- 77 decorative shapes across 13 categories (nature, weather, celebration, social, tech, health, food, travel, abstract, finance, education, pets, emoji), plus 17 core geometric shapes
|
|
159
165
|
- Laurel stats: wing-left + wing-right shapes flanking a hero number
|
|
160
166
|
|
|
161
167
|
App Store 60/40 rule enforced: minimum 60% of cards must show a device mockup, maximum 40% can be marketing-only.
|
|
@@ -268,23 +274,23 @@ What you can change:
|
|
|
268
274
|
- Text: headlines, subtitles, badge text, font size, font family (Inter, Poppins, Montserrat, DM Sans, Space Grotesk, etc.)
|
|
269
275
|
- Text styling: per-word color, bold, italic, underline, highlight pills (colored background behind words), gradient text, text stroke outlines
|
|
270
276
|
- Colors: brand palette, gradient backgrounds, accent colors, text colors
|
|
271
|
-
- Layouts (
|
|
272
|
-
- Layout params: deviceScale (small/medium/large), deviceSide (left/right), textPosition (above/below),
|
|
273
|
-
- Device mockups: perspective variants (flat, left-15, right-15, left-30, right-30, isometric, top-down,
|
|
277
|
+
- Layouts (14 types): text-top-device-bottom, text-top-device-tilted, device-hero, social-proof, review-clip, screen-hero, lifestyle-hero, photo-device-hero, feature-grid, before-after, stats-hero, metric-badge, annotated-feature, step-flow. The AI picks a narrative arc (HOOK → EDUCATE → PROVE → CONVERT) across the set.
|
|
278
|
+
- Layout params: deviceScale (small/medium/large), deviceSide (left/right), textPosition (above/below), textAlign (left/center)
|
|
279
|
+
- Device mockups: perspective variants (flat, left-15, right-15, left-30, right-30, isometric, top-down, landscape-left, landscape-right), 2D rotation, resize, reposition
|
|
280
|
+
- Frame color: recolor the device frame — "natural" (default), "black", "white", "gold". Examples: "make the iPhone gold", "black titanium finish", "white iPhone". Requires Growth plan or higher.
|
|
274
281
|
- Switch devices: "make this for Apple Watch" / "duplicate for Android tablet" clones the project at the target device's canvas size
|
|
275
282
|
- Add/remove cards: add a social proof card, remove card 3, add a marketing title card
|
|
276
|
-
- Compound fields (auto-positioned): statRow, laurelStat, pressBanner, starRating, quote,
|
|
277
|
-
- Panoramic backgrounds: one wide AI or Pexels image sliced across multiple cards ("pano the background across cards 1-3")
|
|
283
|
+
- Compound fields (auto-positioned): statRow, laurelStat, pressBanner, starRating, quote, featureGrid, beforeAfterSplit
|
|
284
|
+
- Panoramic backgrounds: one wide AI or Pexels image sliced across multiple cards ("pano the background across cards 1-3"). The edit only tags the cards; call generate-panoramic-background afterwards to create and slice the wide image.
|
|
278
285
|
- Panoramic element spans: stretch a foreground image, device-mockup, or shape across adjacent cards ("pano the device across cards 1-2")
|
|
279
|
-
- Floating elements: add/edit badges, star ratings
|
|
286
|
+
- Floating elements: add/edit badges, star ratings
|
|
280
287
|
- Shapes: glow orbs, waves, blobs, rounded rectangles, circles, custom SVG paths
|
|
281
|
-
- Decorative shapes:
|
|
288
|
+
- Decorative shapes: 77 library shapes — leaf, flower, cloud, sparkle, heart, rocket, trophy, crown, coffee-cup, airplane, dollar-sign, paw-print, wing-left/wing-right (for laurels), and many more
|
|
282
289
|
- Backgrounds: solid, subtle-gradient, rich-gradient, photo (Pexels), or ai-generated; change gradient colors/angle; set a backgroundPrompt for AI-generated
|
|
283
290
|
- Style: shadows, opacity, border radius, rotation, blur
|
|
284
291
|
|
|
285
292
|
What isn't supported (the AI will flag these in unsupportedAsks):
|
|
286
293
|
- Multiple devices side-by-side in a single card (e.g. iPhone + Watch in one scene) — each card renders one device. Use the duplicate-for-device workflow instead, or split across cards.
|
|
287
|
-
- Frame color selection (white/silver/space-black) — pick a frame style in the canvas device panel.
|
|
288
294
|
- Uploading a specific user-supplied screenshot into a mockup — use upload-screenshots tool first, then reference the uploaded project.
|
|
289
295
|
|
|
290
296
|
Example edit messages:
|
|
@@ -295,6 +301,7 @@ Example edit messages:
|
|
|
295
301
|
- "Pano the background photo across cards 1-3"
|
|
296
302
|
- "Stretch the device on card 1 across into card 2"
|
|
297
303
|
- "Make this project for Apple Watch"
|
|
304
|
+
- "Recolor the iPhone frame to gold across all cards"
|
|
298
305
|
- "Replace card 3 with a CTA card saying Download Free"
|
|
299
306
|
- "Switch card 2 to device-hero layout with statRow showing our three key metrics"
|
|
300
307
|
- "Add a before-after card showing the transformation"
|
|
@@ -303,8 +310,8 @@ Example edit messages:
|
|
|
303
310
|
inputSchema: z.object({
|
|
304
311
|
project_id: z.string().describe('Project ID from a previous generate-screenshots call'),
|
|
305
312
|
message: z.string().describe('What to change — use natural language'),
|
|
306
|
-
card_indices: z.array(z.number()).optional()
|
|
307
|
-
.describe('Target specific cards by index (0-based). e.g. [0] for card 1, [2,3] for cards 3-4. Omit to apply changes to all cards.'),
|
|
313
|
+
card_indices: z.array(z.number().int().min(0)).max(10).optional()
|
|
314
|
+
.describe('Target specific cards by index (0-based). e.g. [0] for card 1, [2,3] for cards 3-4. Max 10 indices. Omit to apply changes to all cards.'),
|
|
308
315
|
codebase_context: z.object({
|
|
309
316
|
readme_summary: z.string().optional(),
|
|
310
317
|
key_screens: z.array(z.string()).max(15).optional(),
|
|
@@ -423,8 +430,8 @@ Returns the canvas state with:
|
|
|
423
430
|
- cards[]: each card has an id, elements array, and optional background settings
|
|
424
431
|
- Each element has: type (text, device-mockup, shape, badge, image, star-rating), position (x, y), size (width, height), zIndex, and type-specific properties
|
|
425
432
|
- Text elements: fontFamily, fontSize, fontWeight, color, segments (for multi-color text with per-word color, bold, italic, underline, highlightColor)
|
|
426
|
-
- Device mockups: perspectiveVariant (flat, left-15, right-15, left-30, right-30, isometric, top-down,
|
|
427
|
-
- Shapes:
|
|
433
|
+
- Device mockups: perspectiveVariant (flat, left-15, right-15, left-30, right-30, isometric, top-down, landscape-left, landscape-right), screenshotImage (null if no upload)
|
|
434
|
+
- Shapes: 94 shape types (17 core + 77 decorative across 13 categories) — core shapes (circle, rectangle, rounded-rect, blob, wave, triangle, diamond, hexagon, ring, star, wing-left, wing-right, etc.) plus decorative library shapes (leaf, flower, cloud, sparkle, heart, rocket, trophy, crown, coffee-cup, airplane, dollar-sign, paw-print, and many more)
|
|
428
435
|
- projectMeta: globalVisualTheme, brandColors, mood, appCategory`,
|
|
429
436
|
inputSchema: z.object({
|
|
430
437
|
project_id: z.string().describe('Project ID to inspect'),
|
|
@@ -505,7 +512,55 @@ The generated image is cropped to exact device dimensions and set as the card's
|
|
|
505
512
|
}],
|
|
506
513
|
};
|
|
507
514
|
});
|
|
508
|
-
// Tool 7:
|
|
515
|
+
// Tool 7: generate-panoramic-background
|
|
516
|
+
server.registerTool('generate-panoramic-background', {
|
|
517
|
+
title: 'Generate Panoramic Background',
|
|
518
|
+
description: `Generate one wide background image and slice it across multiple cards so they read as a continuous scene when the App Store gallery scrolls. The store gallery gap is accounted for, so slices line up after Apple's gutter.
|
|
519
|
+
|
|
520
|
+
Two image sources:
|
|
521
|
+
- prompt: AI-generated via Gemini. Costs 6 credits.
|
|
522
|
+
- pexels_query: stock landscape photo from Pexels. Free.
|
|
523
|
+
|
|
524
|
+
If you omit both, the tool fulfills a panoramic the chat already set up: when generate-screenshots or edit-screenshots returns a design with a panoramic background (e.g. after "pano the background across cards 1-3"), the cards are tagged but the wide image isn't created yet. Calling this tool with just the project_id picks up that pending panoramic and generates it.
|
|
525
|
+
|
|
526
|
+
Good prompts describe a continuous scene, not objects or text:
|
|
527
|
+
- "Misty mountain range at dawn, soft pink-to-blue gradient sky"
|
|
528
|
+
- "Calm ocean horizon at golden hour with gentle waves"
|
|
529
|
+
- "Abstract flowing emerald and teal silk waves"`,
|
|
530
|
+
inputSchema: z.object({
|
|
531
|
+
project_id: z.string().describe('Project ID'),
|
|
532
|
+
prompt: z.string().optional()
|
|
533
|
+
.describe('AI scene description (Gemini, 6 credits). Describe one continuous landscape scene: no text, devices, or UI.'),
|
|
534
|
+
pexels_query: z.string().optional()
|
|
535
|
+
.describe('Stock photo search query (Pexels, free). e.g. "mountain sunrise", "ocean horizon". Provide either this or prompt, not both.'),
|
|
536
|
+
card_indices: z.array(z.number().int().min(0)).max(10).optional()
|
|
537
|
+
.describe('Which cards share the panoramic (0-based, min 2). Default: first 3 cards (the ones visible in the App Store gallery without scrolling).'),
|
|
538
|
+
}),
|
|
539
|
+
}, async ({ project_id, prompt, pexels_query, card_indices }) => {
|
|
540
|
+
const res = await apiCall('POST', `/api/v1/projects/${project_id}/generate-panoramic-background`, {
|
|
541
|
+
...(prompt ? { prompt } : {}),
|
|
542
|
+
...(pexels_query ? { pexels_query } : {}),
|
|
543
|
+
...(card_indices ? { card_indices } : {}),
|
|
544
|
+
});
|
|
545
|
+
if (!res.ok) {
|
|
546
|
+
return {
|
|
547
|
+
content: [{ type: 'text', text: `Panoramic background generation failed: ${JSON.stringify(res.data)}` }],
|
|
548
|
+
};
|
|
549
|
+
}
|
|
550
|
+
const data = res.data.data;
|
|
551
|
+
const creditsRemaining = res.data.credits_remaining;
|
|
552
|
+
return {
|
|
553
|
+
content: [{
|
|
554
|
+
type: 'text',
|
|
555
|
+
text: [
|
|
556
|
+
`Panoramic background generated and sliced across cards ${data.card_indices.map(i => i + 1).join(', ')}.`,
|
|
557
|
+
`Credits remaining: ${creditsRemaining}`,
|
|
558
|
+
`Project URL: ${API_BASE}/builder/${project_id}`,
|
|
559
|
+
].join('\n'),
|
|
560
|
+
}],
|
|
561
|
+
};
|
|
562
|
+
});
|
|
563
|
+
// Tool 8: prepare-screenshot-brief
|
|
509
564
|
server.registerTool('prepare-screenshot-brief', {
|
|
510
565
|
title: 'Prepare Screenshot Brief',
|
|
511
566
|
description: `Get a research checklist and strategy guide to prepare for screenshot generation. Call this BEFORE generate-screenshots to know what to look for in the codebase. Free — no API call or credits needed.
|
|
@@ -745,7 +800,7 @@ This tool helps you gather the right information so generate-screenshots produce
|
|
|
745
800
|
}],
|
|
746
801
|
};
|
|
747
802
|
});
|
|
748
|
-
// Tool
|
|
803
|
+
// Tool 9: upload-screenshots
|
|
749
804
|
server.registerTool('upload-screenshots', {
|
|
750
805
|
title: 'Upload App Screenshots',
|
|
751
806
|
description: `Upload local app screenshots (from Simulator, emulator, or screen captures) into the device mockups of an existing project. This lets you add real app UI into the device frames without leaving the terminal.
|
package/package.json
CHANGED
|
@@ -64,7 +64,7 @@ Call the `generate-screenshots` MCP tool with:
|
|
|
64
64
|
- `features`: top 3-5 features as array
|
|
65
65
|
- `brand_colors`: `{ primary, secondary?, accent? }` from theme files
|
|
66
66
|
- `mood`: user's chosen mood
|
|
67
|
-
- `device_id`: `"iphone-6.9"` (default), `"ipad-13"`, `"android-phone"`, `"android-tablet-10"`
|
|
67
|
+
- `device_id`: `"iphone-6.9"` (default), `"ipad-13"`, `"android-phone"`, `"android-tablet-10"`, `"apple-watch-ultra"`
|
|
68
68
|
- `count`: number of cards (3-10)
|
|
69
69
|
- `story_flow`: `"auto"` (default), `"hero-intro"`, `"problem-solution"`, `"benefit-first"`, etc.
|
|
70
70
|
- `codebase_context`: the full context object from Step 1
|