{"_id":"@dgr_labs/bezelbub-mcp","_rev":"3-bfbd6d3ef217a586db9c2057efc44b28","name":"@dgr_labs/bezelbub-mcp","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@dgr_labs/bezelbub-mcp","version":"0.1.0","keywords":["mcp","model-context-protocol","mcp-server","bezel","device-mockup","device-frame","screenshot","screen-recording","iphone","ipad","mac","app-store","hevc-alpha","transparent-video","macos"],"author":{"url":"https://dgrlabs.co","name":"DGR Labs"},"license":"MIT","_id":"@dgr_labs/bezelbub-mcp@0.1.0","maintainers":[{"name":"cwood_dgr","email":"cw@dgrlabs.co"}],"homepage":"https://github.com/cwooddgr/bezelbub#readme","bugs":{"url":"https://github.com/cwooddgr/bezelbub/issues"},"os":["darwin"],"bin":{"bezelbub-mcp":"dist/index.js"},"dist":{"shasum":"0bebb0e40a206c2d3a0fc0042b7f6a0cf4b0dc0a","tarball":"https://registry.npmjs.org/@dgr_labs/bezelbub-mcp/-/bezelbub-mcp-0.1.0.tgz","fileCount":6,"integrity":"sha512-qXuzsMakJkDTDy+uhX3MAqfNA+UrpKhGF4TeXPupg3vW/by2ZGlHAUiGWQxos3aIxYsBht9O6gxAv/bKEUlDug==","signatures":[{"sig":"MEUCIGhia7IAJf/Cmeld49Iy4ai29hJpDrWd8K+7Xcs+CAesAiEAtlcJFpp1P+hOTWVY+eyqko0hKRrBqA0KrPJRH1QbK1M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23197},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"c6ae6df418f754d33a801a79d3c4a6629ad49ae3","mcpName":"io.github.cwooddgr/bezelbub-mcp","scripts":{"test":"npm run build && node test/e2e.mjs","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"cwood_dgr","email":"cw@dgrlabs.co"},"repository":{"url":"git+https://github.com/cwooddgr/bezelbub.git","type":"git","directory":"bezelbub-mcp"},"_npmVersion":"11.17.0","description":"MCP server for Bezelbub: frame screenshots and screen recordings in Apple device bezels (iPhone, iPad, Mac, iMac, Apple TV device mockups), including transparent HEVC-alpha video export. macOS only.","directories":{},"_nodeVersion":"26.5.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/bezelbub-mcp_0.1.0_1784170550342_0.1687016245347146","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@dgr_labs/bezelbub-mcp","version":"0.2.0","keywords":["mcp","model-context-protocol","mcp-server","bezel","device-mockup","device-frame","screenshot","screen-recording","iphone","ipad","mac","app-store","hevc-alpha","transparent-video","macos"],"author":{"url":"https://dgrlabs.co","name":"DGR Labs"},"license":"MIT","_id":"@dgr_labs/bezelbub-mcp@0.2.0","maintainers":[{"name":"cwood_dgr","email":"cw@dgrlabs.co"}],"homepage":"https://github.com/cwooddgr/bezelbub#readme","bugs":{"url":"https://github.com/cwooddgr/bezelbub/issues"},"os":["darwin"],"bin":{"bezelbub-mcp":"dist/index.js"},"dist":{"shasum":"b96314494c4acf132dc6ab64db7be27ac4054a44","tarball":"https://registry.npmjs.org/@dgr_labs/bezelbub-mcp/-/bezelbub-mcp-0.2.0.tgz","fileCount":6,"integrity":"sha512-4L2UUk/xjiNsslnXGO+dIDtI4je7+7be9aXGkPPaKYjCFF4tv0BGGbnAraX9r7bZ/h4H2hkgdksbyJ7GbAUiYw==","signatures":[{"sig":"MEUCICUMhn6XvLePJ16Qg/dPrTgUEdm+Y3Plu1n6vCFv0HIhAiEAlgnhIY8Hr95iqippQnwd9iqgNDKPsIapoWxny1JcjIA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23502},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"2ea65f35448a3a90fcf156a9a3010a06f82be341","mcpName":"io.github.cwooddgr/bezelbub-mcp","scripts":{"test":"npm run build && node test/e2e.mjs","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"cwood_dgr","email":"cw@dgrlabs.co"},"repository":{"url":"git+https://github.com/cwooddgr/bezelbub.git","type":"git","directory":"bezelbub-mcp"},"_npmVersion":"11.17.0","description":"MCP server for Bezelbub: frame screenshots and screen recordings in Apple device bezels (iPhone, iPad, Mac, iMac, Apple TV device mockups), including transparent HEVC-alpha video export. macOS only.","directories":{},"_nodeVersion":"26.5.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/bezelbub-mcp_0.2.0_1789137403517_0.6729267411683371","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@dgr_labs/bezelbub-mcp","version":"0.2.1","mcpName":"io.github.cwooddgr/bezelbub-mcp","description":"MCP server for Bezelbub: frame screenshots and screen recordings in Apple device bezels (iPhone, iPad, Mac, iMac, Apple TV device mockups), including transparent HEVC-alpha video export. macOS only.","type":"module","bin":{"bezelbub-mcp":"dist/index.js"},"main":"dist/index.js","scripts":{"build":"tsc","prepublishOnly":"npm run build","test":"npm run build && node test/e2e.mjs"},"engines":{"node":">=18"},"os":["darwin"],"keywords":["mcp","model-context-protocol","mcp-server","bezel","device-mockup","device-frame","screenshot","screen-recording","iphone","ipad","mac","app-store","hevc-alpha","transparent-video","macos"],"author":{"name":"DGR Labs","url":"https://dgrlabs.co"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/cwooddgr/bezelbub.git","directory":"bezelbub-mcp"},"dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","zod":"^4.4.3"},"devDependencies":{"@types/node":"^26.1.1","typescript":"^7.0.2"},"gitHead":"4c664382712391672479e0dc383165cec0655370","_id":"@dgr_labs/bezelbub-mcp@0.2.1","bugs":{"url":"https://github.com/cwooddgr/bezelbub/issues"},"homepage":"https://github.com/cwooddgr/bezelbub#readme","_nodeVersion":"26.5.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-Rgr1/+Wkilbvu4SfcweWZVt76ldIzs5VT5rFhl1suM//gEfEuFvE9gNj8GHoNgiurM0filo0CZ/ShsYS2+V18w==","shasum":"4aa5ff8b3acc6f154e6d17a4425923de026853d1","tarball":"https://registry.npmjs.org/@dgr_labs/bezelbub-mcp/-/bezelbub-mcp-0.2.1.tgz","fileCount":6,"unpackedSize":23688,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDURpZbiuHy8LO65Ki82yKQkZYQk/BmElqDYQMLdIsy9wIger8FVQaa4fu8glX94tb94H9ImAlV5jWiLyZg/ZVxbZk="}]},"_npmUser":{"name":"cwood_dgr","email":"cw@dgrlabs.co"},"directories":{},"maintainers":[{"name":"cwood_dgr","email":"cw@dgrlabs.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bezelbub-mcp_0.2.1_1789137608368_0.6256478820228251"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-16T02:55:50.192Z","modified":"2026-09-11T14:40:08.696Z","0.1.0":"2026-07-16T02:55:50.482Z","0.2.0":"2026-09-11T14:36:43.664Z","0.2.1":"2026-09-11T14:40:08.494Z"},"bugs":{"url":"https://github.com/cwooddgr/bezelbub/issues"},"author":{"name":"DGR Labs","url":"https://dgrlabs.co"},"license":"MIT","homepage":"https://github.com/cwooddgr/bezelbub#readme","keywords":["mcp","model-context-protocol","mcp-server","bezel","device-mockup","device-frame","screenshot","screen-recording","iphone","ipad","mac","app-store","hevc-alpha","transparent-video","macos"],"repository":{"type":"git","url":"git+https://github.com/cwooddgr/bezelbub.git","directory":"bezelbub-mcp"},"description":"MCP server for Bezelbub: frame screenshots and screen recordings in Apple device bezels (iPhone, iPad, Mac, iMac, Apple TV device mockups), including transparent HEVC-alpha video export. macOS only.","maintainers":[{"name":"cwood_dgr","email":"cw@dgrlabs.co"}],"readme":"# @dgr_labs/bezelbub-mcp\n\nMCP (Model Context Protocol) server for [Bezelbub](https://dgrlabs.co): frame\nscreenshots and screen recordings in realistic Apple device bezels — iPhone,\niPad, MacBook, iMac, and Apple TV device mockups — straight from an AI\nassistant. Supports transparent HEVC-with-alpha video export (with an optional\nVP9/WebM copy for Chrome/Firefox).\n\nThe server is a thin stdio adapter over the `bezelbub` CLI: every tool shells\nout to the CLI in `--json` mode, and the CLI's exit codes and suggestion-rich\nstderr are surfaced as MCP tool errors.\n\n> **macOS only.** The Bezelbub engine is a macOS-native binary (Core Graphics /\n> AVFoundation), so this server runs only on a Mac. The npm package declares\n> `\"os\": [\"darwin\"]` and will refuse to install elsewhere.\n\n## Prerequisites\n\n- macOS 14+\n- Node.js 18+\n- The `bezelbub` CLI:\n\n```sh\nbrew install cwooddgr/tap/bezelbub\n```\n\nThe server finds the CLI via the `BEZELBUB_CLI_PATH` environment variable if\nset, otherwise on `PATH` (plus the standard Homebrew locations\n`/opt/homebrew/bin` and `/usr/local/bin`, since GUI apps launch MCP servers\nwith a minimal `PATH`).\n\n## Setup\n\n### Claude Code\n\n```sh\nclaude mcp add bezelbub -- npx -y @dgr_labs/bezelbub-mcp\n```\n\n### Claude Desktop\n\nOpen the config file (Claude menu › Settings… › Developer › Edit Config), which\nlives at `~/Library/Application Support/Claude/claude_desktop_config.json`, and\nadd:\n\n```json\n{\n  \"mcpServers\": {\n    \"bezelbub\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@dgr_labs/bezelbub-mcp\"]\n    }\n  }\n}\n```\n\nThen restart Claude Desktop.\n\n### Desktop Extension (.mcpb)\n\nThe repo includes a `manifest.json` conforming to the\n[MCPB](https://github.com/modelcontextprotocol/mcpb) spec. To build a\none-click-installable bundle:\n\n```sh\nnpm ci && npm run build\nnpx @anthropic-ai/mcpb pack\n```\n\n## Tools\n\n### `frame_image`\n\nFrame a screenshot in a device bezel; writes a framed PNG.\n\n| Parameter | Required | Description |\n|---|---|---|\n| `input_path` | yes | Absolute path to a PNG/JPEG/HEIC screenshot |\n| `device` | no | Device id (e.g. `iphone17pro`); auto-detected from pixel size when omitted |\n| `color` | no | Bezel color name (e.g. `Cosmic Orange`); device default when omitted |\n| `orientation` | no | `portrait` \\| `landscape` \\| `auto` (default) |\n| `background` | no | Hex color (`#FFFFFF`, `#RRGGBBAA`) or `transparent` (default) |\n| `output_size` | no | Width (`1920`), exact size (`1920x988`), or percentage (`50%`) |\n| `output_path` | no | Defaults to `<input>-framed.png` beside the input |\n\nReturns JSON: `{kind: \"image\", device, color, orientation, output, width, height}`.\n\n### `frame_video`\n\nFrame a screen recording (`.mov`/`.mp4`/`.m4v`) in a device bezel; writes a\nframed MP4 with audio preserved. `background: \"transparent\"` switches the\nexport to HEVC-with-alpha in a QuickTime `.mov` (plays in Safari and Apple\nframeworks only); `webm: true` additionally writes a VP9/WebM copy for\nChrome/Firefox (requires `ffmpeg` on `PATH`).\n\nSame parameters as `frame_image`, plus `webm` (boolean); `background` defaults\nto black for video. Returns JSON:\n`{kind: \"video\", transparent, output, webm?, device, color, orientation, width, height}`.\n\n### `list_devices`\n\nList the 45-device bezel catalog (ids, colors, screen pixel sizes). With\n`input_path` or `dimensions` (`\"1206x2622\"`), find which devices fit a given\nscreenshot, recording, or pixel size instead. Filtered results return\n`{width, height, matches, nearest}`; an empty `matches` array means no exact\nfit and `nearest` lists the closest devices by aspect ratio. Each device also\nlists its `captureSizes` (the pixel size of every macOS display-zoom setting,\nfor Macs and displays), which is how display captures are matched exactly.\n\n## Error handling\n\nCLI failures come back as MCP tool errors carrying the CLI's stderr — which\nalready includes concrete fixes (valid device ids, a device's color list,\nnearest screen sizes) — plus the documented meaning of the exit code (2 unknown\nor ambiguous device, 3 unknown color, 4 unreadable input, 5 composite/export\nfailed, 6 write failed, 7 ffmpeg missing for `--webm`).\n\n## Environment variables\n\n| Variable | Purpose |\n|---|---|\n| `BEZELBUB_CLI_PATH` | Explicit path to the `bezelbub` binary (overrides `PATH` lookup) |\n| `BEZELBUB_TIMEOUT_MS` | Per-call CLI timeout in milliseconds (default 600000; raise for long video exports) |\n\n## Development\n\n```sh\nnpm ci\nnpm run build      # tsc → dist/\nnpm test           # builds, then runs an end-to-end MCP-over-stdio test\n                   # (requires the bezelbub CLI; generates its own test image)\n```\n\n## License\n\nMIT © DGR Labs\n","readmeFilename":"README.md"}