{
  "markdown": "# Mock Screenshots MCP server\n\nAn [MCP](https://modelcontextprotocol.io) server that lets an AI agent compose a fake\nchat and get a deep link to the matching [Mock Screenshots](https://mockscreenshots.com)\ngenerator — pre-filled and ready to preview and download.\n\nOutput is **watermarked and clearly fictional**, intended for parody, education, design\nmockups and fiction. It is **not** for deception — see\n[the ethics policy](https://mockscreenshots.com/ethics).\n\n## Tools\n\n| Tool | What it does |\n|------|--------------|\n| `generate_fake_chat` | Compose a conversation (platform, messages, contact, status, device, dark) → returns a rendered, watermarked PNG (inline preview + hosted URL for download/share) plus a deep link to the generator. Supports `format: \"image\"` (default, returns preview+URL) or `\"link\"` (text-only URLs). |\n| `list_platforms` | Lists supported chat apps and their generator URLs. |\n| `list_devices` | Lists the iPhone/Android device frames. |\n\n### `generate_fake_chat` input\n\n```jsonc\n{\n  \"platform\": \"whatsapp\",            // imessage | whatsapp | whatsapp-group | instagram | telegram | messenger | snapchat\n  \"contact\": \"Mom\",                  // header name / username / group name\n  \"status\": \"typing…\",               // header status line (optional)\n  \"device\": \"galaxy-s24\",            // see list_devices (default iphone-16-pro)\n  \"dark\": true,                      // dark mode (optional)\n  \"format\": \"image\",                 // \"image\" (default) | \"link\" — see Screenshots section\n  \"messages\": [\n    {\n      \"text\": \"you home?\",\n      \"sender\": \"them\",\n      \"time\": \"19:01\",\n      \"image\": {\n        \"data\": \"<base64 PNG, JPEG, or WebP bytes>\",\n        \"mimeType\": \"image/png\",\n        \"alt\": \"A synthetic design mockup\"\n      }\n    },\n    { \"text\": \"5 mins!\", \"sender\": \"me\", \"time\": \"19:02\", \"ticks\": \"read\" }\n  ]\n}\n```\n\n`messages[].image` is optional and supported only for `whatsapp` and\n`whatsapp-group`, so existing text-only requests remain unchanged. Image-only messages\nare also supported. Attachments must be self-contained PNG, JPEG, or WebP bytes with a\nmatching file signature; SVG, remote URLs, malformed base64, and files over 2 MB are\nrejected. Alternative text is limited to 160 characters, trimmed, and defaults to `Attached image`.\nThe server also rejects more than 100 messages, message text over 4,000 characters, header\nmetadata over 256 characters, and aggregate text/image source data over 6,000 bytes before\nit decodes attachments or builds duplicate JSON/base64url state. The merged site endpoint\nlimits the complete base64url state to 8,000 characters, so the final encoded-state check\nremains authoritative and a smaller attachment may still be required after conversation\nmetadata is included.\n\n#### Attachment privacy and URL handling\n\n**Use only non-sensitive synthetic or already-public attachments.** Attachment bytes are\nstored as a data URL inside the base64url-encoded JSON state in both the hosted\n`GET /api/render?...&s=<state>` URL and the generator edit `?s=<state>` URL. Base64url is\nencoding, not encryption: anyone or any system with either URL can recover the attachment.\n\nTreat every attachment-bearing render or edit URL as sensitive. It may be retained in MCP\ntranscripts, client logs, browser history, proxy/CDN request logs, analytics/referrers, and\ncache keys. Do not use credentials, private user data, confidential screenshots, or private\nuploads as fixtures. The MCP's own preview request uses `cache: \"no-store\"` and\n`referrerPolicy: \"no-referrer\"` as defense in depth, but those client-side request settings\ncannot guarantee that the deployed endpoint, intermediaries, or a user-opened URL will not\nlog or cache the full GET URL. No attachment or URL logging is added by this MCP server.\n\nThis residual exposure is inherent in the currently deployed URL-state contract. Roll back\nattachment support by reverting the attachment commit, or avoid `messages[].image`; existing\ntext-only requests remain compatible and unchanged. A future opaque, expiring server-side\nstate token would require a separate site/API contract and is intentionally not invented here.\n\n### Screenshots\n\nReturns a **rendered, watermarked screenshot** server-side via the site's `GET /api/render` endpoint (Cloudflare Browser Rendering). Default output (`format: \"image\"`) includes:\n- **Inline preview image** (scaled, watermarked — displays immediately)\n- **Hosted full-res PNG URL** (download / share in DMs, always watermarked and clearly fictional)\n- **Deep edit link** to the generator, pre-filled with your conversation\n\nAlternately, use `format: \"link\"` for text-only output (just the URLs, no image preview).\n\n**Always watermarked:** Screenshots include a prominent \"FAKE\" watermark and cannot be disabled. This ensures they remain clearly fictional and non-deceptive for parody, education, design mockups and fiction — see [the ethics policy](https://mockscreenshots.com/ethics).\n\nAlso returns a URL like\n`https://mockscreenshots.com/fake-whatsapp-chat-generator?s=<state>` that opens the\ngenerator with the conversation loaded (for preview/tweaking before final export).\n\n## Run\n\n```bash\nnpm install\nnpm start           # stdio server\n```\n\n### Use with Claude Desktop / Claude Code\n\n```jsonc\n// claude_desktop_config.json  (or: claude mcp add)\n{\n  \"mcpServers\": {\n    \"mockscreenshots\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/mcp/server.mjs\"]\n    }\n  }\n}\n```\n\nOnce published to npm you can instead use `npx -y mockscreenshots-mcp`.\n\n## Publishing / distribution\n\n1. `npm publish` the `mockscreenshots-mcp` package.\n2. Register on `registry.modelcontextprotocol.io` using `server.json`.\n3. Submit to mcp.so, Smithery, PulseMCP, Glama, and open a PR to `awesome-mcp-servers`.\n\nEach listing is a genuine dofollow dev-domain link + agent discovery — the uncontested\ndistribution channel \n\n## How it works\n\nThe MCP server itself stays tiny and stateless: it builds URLs and encodes the\nconversation into a compact, URL-safe `?s=` parameter (also read by the generator on\nload, `src/lib/share.ts`), then fetches a preview from the site's `/api/render`\nendpoint, which does the actual (always-watermarked) server-side rendering via\nCloudflare Browser Rendering. This keeps the server dependency-light and keeps the\nhuman in the loop to preview, tweak and export.\n\nThe server never fetches a caller-supplied attachment URL. Preview responses are accepted\nonly when they are PNG data from the fixed Mock Screenshots endpoint. The response body is\nconsumed with a 10 MB streaming cap and the reader is cancelled immediately when that cap\nis crossed, even when `Content-Length` is absent or inaccurate. Endpoint errors, invalid\nresponses, and timeouts safely fall back to the hosted image/edit links while retaining the\nwatermark, ethics warning, and (when an attachment is present) attachment privacy warning.\n",
  "bytes": 6899,
  "sha": "1dd65a6754f76dd3be2da1a31114ca6a8a5042f2eab05978a27be7cb2a870873",
  "repo_slug": "gamercc-apps/mockscreenshots-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_gamercc_apps_mockscreenshots_m_4558017a/readme"
}