Bezelbub frames screenshots and screen recordings in Apple device bezels. As of this week it ships an MCP server, so Claude and any other MCP client can do that as part of a conversation: "frame this screenshot for the press kit" produces a framed PNG on disk, no app in sight.
Setup is two commands on a Mac:
brew install cwooddgr/tap/bezelbub
claude mcp add bezelbub -- npx -y @dgr_labs/bezelbub-mcp
Three tools: frame_image (screenshot in, framed PNG out), frame_video (recording in, framed MP4 out — or a transparent HEVC-with-alpha .mov with an optional WebM copy), and list_devices (the 38-device catalog, or "which devices fit this file?").
The server is thin on purpose
The MCP server is a small stdio adapter — every tool shells out to the bezelbub CLI in --json mode and passes the result through. It took an evening to write, and the reason is that the CLI was already built for non-interactive callers: nothing ever prompts, every input is a flag with a default, output is JSON, and failures use distinct exit codes with stderr messages that contain the fix — valid device ids, the device's color list, the nearest screen sizes. When an agent calls it wrong, the error tells it how to call it right, and the next call succeeds without a human stepping in.
That turned out to be the whole job. Most of the work of a good MCP server was already done in the CLI, and we suspect that generalizes: make the command line agent-friendly and the MCP layer becomes plumbing.
Video, locally
The mockup MCP servers we could find are static-image tools, and most are really App Store screenshot pipelines — captions, gradients, store-listing text. We didn't find one that frames screen recordings, so that's the gap this fills: hand it a .mov or .mp4 and it comes back framed, audio preserved, sized for wherever it's going. Combined with last night's transparent export, an agent can turn a raw screen recording into a device-framed video with a fully transparent background — the pair of files a web page needs — from one prompt.
It also runs entirely on your Mac. The engine is Core Graphics and AVFoundation, not a rendering API, so screen recordings — which tend to contain whatever was on your screen — never leave the machine.
Where to get it
The server is @dgr_labs/bezelbub-mcp on npm, listed in the official MCP registry as io.github.cwooddgr/bezelbub-mcp. It works with Claude Code, Claude Desktop, and any client that speaks stdio; it needs macOS 14+, Node 18+, and the CLI from Homebrew. Free, like the rest of Bezelbub.