A side-by-side look at the Distribea MCP and Dreambooth Studio MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Distribea MCP for multimedia process work as a local process; choose Dreambooth Studio for multimedia process over a hosted endpoint. You can also run both side by side in one mcpServers block.
DISTRIBEA_MCP_KEY.make_images, bring_alive, generate_image.DREAMBOOTH_API_URL, ALLOWED_HOSTS.connect_account, connection_status, get_sessions.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Multimedia Process | Multimedia Process |
| Quality signal | 57/100 · Good | 57/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Remote HTTP/SSE |
| Auth | Not declared | Not declared |
| Pricing | Paid service | Not declared |
| Required env vars | DISTRIBEA_MCP_KEY | DREAMBOOTH_API_URLALLOWED_HOSTS |
| Verified owner | Community listing | Community listing |
| GitHub stars | 1 | 0 |
| Directory activity | 2 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 21 | 22 |
| Full listing | View Distribea MCP | View Dreambooth Studio |
make_images⭐ THE flagship one-call tool. page_path → dresses that page; no page_path → scans the WHOLE project. Finds every placeholder/stock slot (placehold.co, picsum, unsplash, pexels…), locks/infers the style automatically, generates every image IN PARALLEL (recurring characters/products auto-used), saves optimised WebP and patches src+alt in the code. REVIEW/TESTIMONIAL sections are detected automatically: their avatars come out as ultra-real casual smartphone selfies (UGC look — car/bedroom/living-room backdrop, real skin), each reviewer keeps the SAME face across THIS site; your other sites are independent by default (set cross_site_unique:true to also keep reviewer faces distinct across ALL your sites). rebrand:true targets EXISTING real images instead: first call lists them for FREE, then apply:true regenerates them all in place (code untouched, originals kept as *.original).bring_aliveMake an EXISTING site feel alive with on-brand imagery. Two things at once: (1) ADDS images where sections have none (hero, testimonials with ONE face per reviewer, team/about, key benefits, gallery — sized to the real layout), and (2) by DEFAULT REPLACES every existing image with an on-brand one (stock photos, old pictures…). page_path = one page; OMIT page_path = the WHOLE site. WORKFLOW: call it once for a FREE proposal (new spots + the list of existing images that will be replaced, 0 credits); show it, ask the user which to KEEP; then call AGAIN with apply:true to place + fill the new spots AND replace the existing images in one go. Spare specific images with keep:["filename"]; pass replace_existing:false to only ADD images and leave existing ones untouched. Everything is reversible with undo:true.generate_imageGenerate ONE website image for a SPECIFIC spot AND wire it straight into the page — DESTINATION = a page (placed in code), NOT a file on disk. Coherent with the locked style (and optionally a recurring character/product). Generation is tied to a placement: pass page_path + leave a placeholder (<img src="https://placehold.co/…">) where you want it; the image replaces that placeholder. NO page / NO placeholder = NOTHING is generated and NOTHING is billed (never produces an orphan image). Subjects mentioning a customer review/testimonial/avatar automatically switch to the UGC mode: ultra-real casual smartphone selfie of an everyday person (unique per site, same reviewer = same face). For a whole page or project, prefer make_images. CONTEXT: when you are building or editing a website (pages, components, placeholders), THIS or make_images is the default — that is the page-building job. If the user instead wants a downloadable image FILE to keep/reuse (an ad, a social/marketing visual, "download/save the png", a named model with no page), use generate_with_model. If it is unclear whether the image goes IN a page or is a downloaded FILE, ask one short question first.list_modelsReturns the catalog of image models to choose from: id, name, what it's best at, quality tiers, formats, max images per call, and an indicative price in credits. Call this BEFORE generate_with_model when the user wants to pick a specific model or compare options/prices. Image only for now.generate_with_modelStandalone image generator — DESTINATION = a FILE on the user's disk, never a website page. Use it for downloadable assets the user keeps or reuses elsewhere: ads, social posts, marketing/promo visuals, thumbnails, a reusable hero or logo, or any 'generate then download / save to a folder' request (often with a named model like Flux Pro / Seedream, or a png/jpg format). DESTINATION ALWAYS WINS: if the image must appear ON a website page — or you are MID-BUILD of a site, filling placeholders / dressing pages — use generate_image (one spot) or make_images (whole page), EVEN IF a model is named. If it is genuinely unclear whether the user wants the image IN a page or as a downloaded FILE, ASK one short question before generating — do NOT guess. Downloads a NATIVE png/jpg (never WebP) into a tidy folder, at the regular SITE price; nothing is placed into any page. Get model ids from list_models. DEFAULT when the user names NO model: nano-banana-pro at 2K. ORIENTATION: if the user didn't state one, ASK 'portrait or landscape?' before generating, then pass the matching format (16:9 = landscape, 9:16 = portrait). (Same idea as Higgsfield: pick a model, dial settings, download the file.)list_video_modelsReturns the catalog of VIDEO models to choose from: id, name, what it's best at, durations (seconds), resolutions, aspect ratios, and an indicative price in credits (for the default duration; longer clips cost more). Call this BEFORE generate_video when the user wants to pick a specific video model or compare options/prices.generate_videoStandalone VIDEO generator — DESTINATION = an mp4 FILE on the user's disk. Pick a specific video model + settings (duration, resolution, aspect ratio) and DOWNLOAD the result as a native mp4 into a tidy folder, billed at the regular SITE price. Video takes several MINUTES and needs a PAID plan (no free video). Use it for ads, social clips, b-roll, promos to download — never to place into a website page. If the call says the video is still rendering, run it again with the SAME settings in ~1 min to pick it up (no double charge). Get valid model ids + options from list_video_models. DEFAULT when the user names NO model: grok-imagine-video, 6s, 720p. ORIENTATION: if the user didn't state one, ASK 'vertical or horizontal?' before generating, then pass the matching format (16:9 = horizontal, 9:16 = vertical).list_music_modelsReturns the catalog of MUSIC models (id, name, indicative price in credits). Call this BEFORE generate_music when the user wants to pick a specific music model or compare prices.generate_musicStandalone MUSIC generator — DESTINATION = an audio FILE on the user's disk (mp3), downloaded into a tidy folder, billed at the SITE price. Needs a PAID plan (no free audio). Use it for background tracks, jingles, b-roll music to download — never placed into a page. Describe the music (style, mood, instruments) in `subject`. If it says still rendering, run again with the SAME settings to pick it up (no double charge). Get model ids from list_music_models. DEFAULT when the user names NO model: minimax-music.list_voice_modelsReturns the catalog of VOICE-OVER models: id, name, supported languages, number of voices, a few sample voice ids, and an indicative price per 500 characters. Call this BEFORE generate_voice to pick a model + a voice id + a language.generate_voiceStandalone VOICE-OVER generator — DESTINATION = an audio FILE on the user's disk (mp3), downloaded into a tidy folder, billed at the SITE price (per character). Needs a PAID plan (no free audio). Use it for narration, ads, IVR, video voice-overs to download — never placed into a page. Pass the script in `text`, plus a voice id and language from list_voice_models (a default voice is picked if you omit it). If it says still rendering, run again with the SAME settings to pick it up (no double charge). DEFAULT when the user names NO model: elevenlabs-multilingual-v2 with the Roger voice.blog_coverAUTONOMOUS TRIGGER — call this when an EDITORIAL ARTICLE still LACKS a cover/hero image (a brand-new post, or one left with a placeholder/stock image), even if the user never mentions an image. GUARDRAIL against noise: fire it ONCE per article, only when the cover is missing; if the article already has a real cover, leave it — do NOT regenerate; a pure text/typo/SEO edit is NOT a trigger; never re-run a successful call or 'improve' a cover on your own — only on the user's explicit request (each call bills the subscriber). Recognise the article by MEANING, not by tags: any standalone piece written to be READ — a headline + a body of prose on one topic (blog post, news, guide, tutorial, case study, magazine/journal piece) — in ANY language, on ANY stack (markdown/MDX, a headless CMS like WordPress/Sanity/Contentful, or a custom DB-driven route). Folders/routes (/blog, /posts, /articles, /news, /journal, /actualités, /magazine, /guides), markdown/MDX frontmatter, or an <article> element are only NON-EXHAUSTIVE hints — none is required: if it simply reads like an article, it qualifies (a marketing/landing/product page does NOT — that keeps make_images). You already hold the article you are working on → pass its own title + text as article_text (or article_url for a public link, or article_file for a local md/mdx/html/txt file). It generates the COVER, driven by the ARTICLE'S OWN specific subject (never a generic trade photo), kept visually coherent with the site's locked style (palette, light, medium), adapted to the site's country (driving side, architecture, currency), with NO recurring face/logo/product stamped on by default (every article gets a DIFFERENT scene — no 'same baker's face on every post'). Default = the cover ONLY at 16:9; set illustrations:N to also get N in-article images. Delivers an optimised WebP + ALT, ready to host. To DELIBERATELY feature a locked character/product, pass character/product. If the site has no locked style it infers one from the project; if it still lacks the trade/brand it tells you what to provide.connect_accountConnect this conversation to the person's Dreambooth Studio account. The answer's status says what happened. already_connected: an account is connected; nothing to do. awaiting_approval: it returns a link the person opens in their own browser to sign in with Google and approve. A Google account with the same email as an existing Dreambooth account connects that account. Ask them to open it and say when they are done; do not call this tool again while waiting. use_client_sign_in: this client connects accounts through its own app or connector settings, where they can sign in with an email and password or with Google, so no link is returned. Ask them to connect Dreambooth there (the client also asks by itself when a tool needs an account), then repeat their question. Either way, someone who has no Dreambooth account yet gets one when they sign in. Call this when another tool reports that no account is connected, or when someone asks to connect or switch accounts.connection_statusWhether this conversation currently has a Dreambooth account connected, and which one. Call this if you are unsure whether to run connect_account first. Cheap and read-only — it does not contact Dreambooth.get_sessionsList the photo sessions recorded on this operator's booths, with totals. Call this when the operator asks how busy a booth has been, how many sessions ran in a period, or wants to inspect individual sessions. Supports date ranges, per-booth filtering, payment status and payment channel. For money totals rather than session counts, use get_revenue_summary instead.get_gallery_statsHow much media this operator's booths have produced: total, still active, and expired past the retention window. Call this when the operator asks how many photos or videos a booth has taken, or whether media is being lost to retention. Returns counts only, not the media itself.search_docsSearch the Dreambooth Studio documentation and FAQ. Call this before answering any question about the product, hardware, printing, booth setup, guest payments, or troubleshooting — answer from the docs rather than from memory. Pages about Dreambooth's own plans and billing come back as a link only: share the link, and do not quote prices, plans or trials in the conversation. Works without a connected account.list_projectsList the photobooth projects this operator owns, with id, name, public link slug, whether it is active, and its currency. Call this first whenever the operator names a booth — you need the project id to filter any other tool by booth. Does not return booth designs or page layouts.get_projectFull detail for a single booth: its name, public link, currency, screen size, and the live status of the device running it — whether it is online, when it was last seen, app version, and camera/printer/internet state. Call this when the operator asks about one specific booth, or whether a booth is working. Get the project id from list_projects first.get_revenue_summaryBusiness revenue from this operator's photobooth sessions across EVERY payment channel — gateway payments, cash vouchers (cash collected at the booth) and discount vouchers — grouped by month or day and by currency, with extra-print revenue and AI-effect purchases reported separately. Use this for any question about income, revenue or omzet. It is also the right tool when wallet earnings look too small: cash and voucher money never reaches the wallet ledger, so for operators who take cash the wallet figure legitimately understates income.get_creditsThis operator's remaining AI credit balance and their current subscription plan, including when it ends. Call this when they ask how many credits are left, whether they can still run AI effects, or what plan they are on. Credits are separate from wallet money — do not confuse the two.get_wallet_transactionsThis operator's wallet ledger: gateway earnings, withdrawals and refunds, newest first. Use for questions about the wallet, payouts or withdrawals. Do NOT use it to answer 'how much did I earn' — the wallet excludes cash and voucher income entirely, so for operators who take cash it understates real revenue. Use get_revenue_summary for income.create_filterCreate a new photo filter on this operator's account from a description of the look they want — 'warm and slightly faded', 'high contrast black and white'. Translate the description into the adjustment numbers yourself; the ranges are in the schema. Call this only when the operator asks for a filter to be CREATED. It does not change an existing filter, and there is no tool that does — to edit or delete one, send them to the dashboard. Creating the same filter twice makes two filters, so do not retry a call that may have gone through.duplicate_projectCopy one of this operator's existing booths, with all of its settings, into a new one. Use it when they want another booth 'like' one they already run — a second location, a one-off event, a variant to experiment on. Call list_projects first to get the project id; the operator will name the booth, not its id. The copy is named after the original and is not published at the original's public address, so it is safe to make and they can rename it in the dashboard. To design a NEW booth from a description, use start_booth instead of this; there is no tool that edits or deletes a booth that already exists.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"distribea-mcp": {
"command": "npx",
"args": [
"-y",
"distribea-mcp@latest"
],
"env": {
"DISTRIBEA_MCP_KEY": "YOUR_DISTRIBEA_MCP_KEY_HERE"
}
}
}
}
{
"mcpServers": {
"dreambooth-studio": {
"url": "https://mcp.dreamboothstudio.com/mcp"
}
}
}