cd /news/developer-tools/show-hn-broll-an-mcp-server-that-giv… · home topics developer-tools article
[ARTICLE · art-56378] src=github.com ↗ pub= topic=developer-tools verified=true sentiment=· neutral

Show HN: Broll – an MCP server that gives coding agents a content studio

Broll, an MCP server for coding agents, launches as an open-source tool that lets developers generate media, render videos and carousels, and publish content through a draft-first outbox using their own API keys. The tool integrates with Claude Code and Codex, offering deterministic rendering and platform validation before posting.

read4 min views1 publishedJul 12, 2026
Show HN: Broll – an MCP server that gives coding agents a content studio
Image: source

The content studio MCP for coding agents. broll gives Claude Code, Codex, and any MCP client real hands for content work: generate media with your own API keys, render videos and carousels deterministically with code, and publish through a draft-first outbox.

The model plans. Code renders. Nothing posts without confirmation.

Every developer running a coding agent hits the same wall: the agent can write the marketing plan, but it can't make the carousel, cut the video, or post it. Existing tools are credit-metered schedulers built for social media managers. broll is built for developers:

BYO keys, no markup. Image/video generation uses yourOPENAI_API_KEY

/GEMINI_API_KEY

directly. broll never proxies your inference or resells credits. A built-in mock provider keeps every workflow runnable before you add any keys.Deterministic rendering. Videos and slides are compiled from declarative plans into exact ffmpeg/sharp invocations. Same plan + same inputs = same output. When AI output drifts, the fix is code — so layout, fonts, captions, and branding live in code.Draft-first publishing. Posts are reviewable JSON files in an outbox.publish_post

requiresconfirm: true

, validates per-platform rules (char limits, media counts, file sizes) before anything leaves the machine, and reports per-platform results. Theexport

platform always works: it writes a ready-to-post bundle.

Requires Node 20+ and ffmpeg (brew install ffmpeg

).

cd broll
npm install && npm run build

Register with Claude Code (or use the checked-in .mcp.json

when working inside this repo):

claude mcp add broll -- node /path/to/broll/dist/index.js

Optional environment:

Variable Purpose
OPENAI_API_KEY
gpt-image-1 image generation
GEMINI_API_KEY
Imagen images + Veo video generation
BLUESKY_IDENTIFIER / BLUESKY_APP_PASSWORD
live Bluesky posting (use an app password)
MASTODON_ACCESS_TOKEN (+ optional MASTODON_INSTANCE )
live Mastodon posting — no app review, any instance
X_API_KEY / X_API_SECRET / X_ACCESS_TOKEN / X_ACCESS_TOKEN_SECRET
live X posting (free API tier works)
BROLL_HOME
workspace location (default ~/.broll )
BROLL_FFMPEG / BROLL_FFPROBE
explicit binary paths

Brand kit: drop a broll.config.json

next to where the server runs (see this repo's for an example) — name, handle, colors, font, logo. Every render picks it up automatically.

Tool What it does
broll_status
Workspace, ffmpeg, provider + platform readiness. Call first.
generate_image / generate_video
BYO-key generation → workspace assets (mock fallback when keyless)
import_asset / list_assets / probe_asset
Bring in and inspect media
render_video
Declarative RenderPlan → mp4: clips (video/image/color), trims, cover/contain fits, burned-in titles + timed captions, music bed, 9:16 / 1:1 / 4:5 / 16:9
render_carousel
Branded slide sets (the Instagram/LinkedIn format): kicker, headline, body, accent bar, page numbers, watermark — layout is 100% code
extract_frame
Pull a PNG frame so the agent can visually QA its own render
create_post_draft
Text + media + platforms → validated, reviewable draft in the outbox
list_drafts / publish_post
Inspect the outbox; publish with explicit confirm: true
npm run smoke

drives the real server through a real MCP client: generates a background, renders a 3-slide carousel and a 9:16 teaser video with captions, extracts a QA frame, then drafts and "publishes" an export bundle — all into ./.broll/

.

The local server you're looking at stays MIT and free. broll cloud adds the parts a local server can't do well: the app-review-walled platforms (Instagram, LinkedIn, TikTok) through broll's own approved credentials, schedules that run while your laptop is closed, and a swipe-to-approve inbox on your phone. ~$29/mo when it ships.

** Join the waitlist → 👍 issue #1** — subscribers get the launch note; comments set the platform build order.

  • Nothing is published without a draft file on disk first. publish_post

hard-requiresconfirm: true

— agents are instructed to obtain the user's explicit go-ahead.- Constraint violations block publishing; they never auto-truncate your text.

  • Keys are read from your environment and sent only to their own vendor's API.

Early but real: 96 tests including real-ffmpeg integration renders and a full MCP round trip.

  • Bluesky video upload
  • X chunked video upload
  • LinkedIn adapter (needs app review)
  • Mastodon adapter
  • YouTube Shorts via user OAuth
  • Ken Burns / crossfade transitions
  • Word-level caption timing from transcripts

npx broll-mcp

distribution

npm test          # unit + integration (real ffmpeg)
npm run typecheck
npm run smoke     # end-to-end artifact check

MIT.

── more in #developer-tools 4 stories · sorted by recency
── more on @broll 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/show-hn-broll-an-mcp…] indexed:0 read:4min 2026-07-12 ·