Prototyp · Vorschau: alle Server aus der offiziellen Registry, alle 30 Minuten synchronisiert. Mit Google anmelden, um Bewertungen zu schreiben.Prototyp · alle 30 Min. aktualisiert
PopNx MCPMCP-Server für alle, die KI nutzen · in einfachen Worten erklärt

Dreambooth Studio

von Dreambooth-StudioVersion 0.1.0i★ 0iLäuft in der Cloud
Name in der Registrycom.dreamboothstudio/dreambooth

So installierst du es

What it does

Ask about your Dreambooth Studio photobooths: sessions, revenue, credits, projects, device status.

  • Connects Läuft in der Cloud
  • Account or key No key needed
  • Category Sonstiges

Installation

Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.

4/4 Prüfungen bestanden · Was du fragst, läuft über den Server des Anbieters (mcp.dreamboothstudio.com) · ✓ Befehle geprüft am 13. Nov. 2026

Zuerst: Welche KI nutzt du?

Wähle deine App, dann erscheinen die Schritte unten.

Klappt mit Claude · etwa 2 Min.

Kein Schlüssel, nichts zu installieren · Einmal auf claude.ai oder in der Desktop-App einrichten, dann im Chat nutzen · kostenlose Konten können 1 hinzufügen · bei Team/Enterprise fügt ein Owner ihn hinzu

  1. Öffne die Connectors-Seite von Claude

    CustomizeConnectors

    CustomizeConnectors1Add2https://…3Add4
  2. Klicke „Add“ → „Custom“ → „Web“ und fülle diese 2 Felder aus

    Kopiere jeden Wert in das gleichnamige Feld in Claude und klicke Continue

    Name · NameDreambooth Studio
    Remote MCP server URL · Adressehttps://mcp.dreamboothstudio.com/mcp

    Klicke auf der von Claude erkannten Anmelde-Seite auf Continue · wähle bei Authentication, was der Anbieter angibt (Sign in now, Sign in when needed oder No sign in), dann Add

  3. Im Chat einschalten

    +ConnectorsDreambooth Studio

  4. Ausprobieren

    Nutze Dreambooth Studio und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn Claude sagt, dass es Dreambooth Studio nutzt, oder ein Werkzeug von Dreambooth Studio in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von Anthropic abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Klappt mit ChatGPT je nach Tarif

Volles MCP: ChatGPT Business, Enterprise oder Edu im Web · Pro: verbindet mit Lese-/Abrufrechten, Werkzeuge, die Daten ändern, gehen evtl. nicht · Plus: in der Doku nicht bestätigt; siehst du auf der Plugins-Seite eine Option für eigene MCP-Server, kannst du es versuchen · nur Web

  1. In ChatGPT im Web die Seite zum Hinzufügen von MCP öffnen

    Plugins+Add custom MCP server

    ChatGPTPlugins1+2https://…3Create4
  2. Name und Adresse eintragen

    Namen eingeben, Adresse unter Connection einfügen, Risikohinweis abhaken und Create as a plugin klicken

    Name · NameDreambooth Studio
    Connection · Adressehttps://mcp.dreamboothstudio.com/mcp
  3. Dreambooth Studio im Chat auswählen

    Neuen Chat öffnen und vor dem Tippen Dreambooth Studio aus deinen Plugins wählen

  4. Ausprobieren

    Nutze Dreambooth Studio und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn ChatGPT sagt, dass es Dreambooth Studio nutzt, oder ein Werkzeug von Dreambooth Studio in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von OpenAI abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Klappt mit Claude Code · etwa 2 Min.

Kein Schlüssel, nichts zu installieren

  1. Terminal öffnen

    Mac: Command+Leertaste drücken und Terminal tippen · Windows: PowerShell öffnen

  2. Diesen Befehl einfügen und Enter drücken

    claude mcp add --transport http --scope user dreambooth https://mcp.dreamboothstudio.com/mcp
  3. /mcp in Claude Code eingeben

    Dreambooth Studio sollte in der Liste als verbunden erscheinen

  4. Ausprobieren

    Nutze Dreambooth Studio und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn Claude Code sagt, dass es Dreambooth Studio nutzt, oder ein Werkzeug von Dreambooth Studio in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von Anthropic abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Klappt mit Cursor · etwa 2 Min.

Kein Schlüssel, nichts zu installieren

  1. Mit diesem Button Cursor öffnen

    In Cursor öffnen

    Cursor fragt nach einer Bestätigung; klicke Install

  2. KI-Chat in Cursor im Agent-Modus öffnen

  3. Ausprobieren

    Nutze Dreambooth Studio und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn Cursor sagt, dass es Dreambooth Studio nutzt, oder ein Werkzeug von Dreambooth Studio in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von Cursor abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Klappt mit VS Code · etwa 2 Min.

Kein Schlüssel, nichts zu installieren

  1. Mit diesem Button VS Code öffnen

    In VS Code öffnen

    VS Code fragt nach einer Bestätigung; klicke Install

  2. KI-Chat in VS Code im Agent-Modus öffnen

  3. Ausprobieren

    Nutze Dreambooth Studio und sag mir, was du für mich tun kannst; zeig mir dann eine Sache

    ✓ Wenn VS Code sagt, dass es Dreambooth Studio nutzt, oder ein Werkzeug von Dreambooth Studio in der Antwort zeigt, bist du verbunden

Menünamen am 11. Nov. 2026 mit der Hilfe von VS Code abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen

Andere Apps mit MCP, etwa Windsurf, Zed oder Gemini CLI, fügen Server unterschiedlich hinzu. Sieh in der App-Liste nach

Alle Apps mit MCP ansehen →

Adresse für Apps, die über das Web verbinden

Adressehttps://mcp.dreamboothstudio.com/mcp

JSON-Einstellungen stehen unten unter „Für Entwickler“

Hängst du fest? Frag Leute, die Dreambooth Studio nutzen💬 Diskussion →
Für Entwickler: Terminal-Befehle und JSON-Einstellungen

Über das Web

Claude Code

claude mcp add --transport http --scope user dreambooth https://mcp.dreamboothstudio.com/mcp

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "dreambooth": {
      "url": "https://mcp.dreamboothstudio.com/mcp"
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "dreambooth": {
      "type": "http",
      "url": "https://mcp.dreamboothstudio.com/mcp"
    }
  }
}

Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.

Auf einen Blick

Downloads pro Wochei
Nicht auf npm/PyPI
Bestätigte Domain
✓ dreamboothstudio.com
Lizenzi
Keine Lizenz angegeben
Verbindung
Läuft in der Cloud
Transport
streamable-http
Neueste Versioni
0.1.0
Kategoriei
Sonstiges
In der Registry veröffentlichti
11. Aug. 2026
Code zuletzt geänderti
12. Nov. 2026
Entwickler
Dreambooth-Studio
Registry-Status
Aktiv

Welche Apps ihn nutzen können

Basierend darauf, wie sich dieser Server verbindet, und auf der eigenen Doku jeder App, geprüft am 10. Nov. 2026.

Verbinden sich über das Internet in

ClaudeChatGPTGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast

Alle Apps, mit Vor- und Nachteilen →

Was er kann

Tool-Namen und -Beschreibungen genau so, wie der Server sie am 10. Nov. 2026 gemeldet hat. Geschrieben hat sie der Entwickler, nicht wir; wir zeigen sie als reinen Text.

  • connect_account

    Connect 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

  • connection_status

    Whether 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_sessions

    List 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 c

  • get_gallery_stats

    How 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_docs

    Search 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 b

  • list_projects

    List 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_project

    Full 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

  • get_revenue_summary

    Business 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 separa

  • get_credits

    This 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

  • get_wallet_transactions

    This 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

  • create_filter

    Create 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 operat

  • duplicate_project

    Copy 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 wi

  • start_frame

    Start designing a new photo frame for this operator's booths from a description of the look they want — 'batik motifs in warm gold', 'minimal Scandinavian, lots of white space'. It opens a design thread and makes the FIRST version. It returns immediately with a job id; call check

  • refine_frame

    Ask for a changed version of a frame in an existing design thread — 'darker', 'less ornament', 'make the flowers smaller', 'more gold'. Call it with the threadId that check_generation returned for start_frame, and ONLY when the operator asks for a change: every call spends part o

  • check_generation

    Report on background work started by start_frame, refine_frame, start_booth, refine_booth or create_booth. Always pass the jobId that the start/refine/create call returned — keep it for the rest of the conversation, because an id keeps working for the full 15 minutes even if the

  • save_frame

    Save one generation from a design thread as a real frame in this operator's frame list, with its photo windows cut out. Call it only when the operator has chosen a result — pass the threadId and generationId that check_generation returned for it. This CREATES a frame: saving the

  • preview_filter

    Show what a filter would look like BEFORE creating it: the Studio renders its sample photo (or the operator's own preview photo, if they set one in the dashboard) through the exact pipeline the booth uses, and returns an image URL. Free and read-only — call it whenever the operat

  • start_booth

    Design a complete photobooth (a 'booth') for this operator from a description — the Studio designs the welcome screen for phone and laptop, the in-booth background, the colour theme, the capture mode, a title and a link name, exactly as dreambooth.app/new does. Before calling, ga

  • refine_booth

    Change a booth draft from start_booth, using the draftId check_generation returned. what='welcome' redraws the welcome screen from an instruction ('warmer colours', 'bigger headline', 'less clutter') while keeping the design; add orientation 'phone' or 'laptop' to redraw only tha

  • create_booth

    Create the booth from a finished draft — the step that makes something real, live at its public link. Call it only after the operator has seen the draft via check_generation and agreed to create it; the title and link name (slug) default to the draft's unless the operator chose o

  • get_booth_draft

    Read a booth draft by its draftId — the same summary check_generation gives for a finished design, plus everything the draft has been given since (settings, chosen frames, filters, AI effect). Use it when the job from start_booth is no longer tracked, to show the draft again befo

  • update_booth_draft

    Change a booth draft without a redraw: its title, link name, welcome button text, colours, capture mode, language, which frames and filters it carries, its AI effect, and the page settings the dashboard editor offers (photo count, countdown, timeouts, GIF/recording, retake, check

Basischecksi

Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 14. Nov. 2026

  • ✓ Bestanden

    Entwickler passt zum Repo

    Der Registry-Name wurde über die Domain dreamboothstudio.com bestätigt (die Registry prüft, wem die Domain gehört)

  • ✓ Bestanden

    Wird noch gepflegt

    Code zuletzt geändert: vorgestern

  • – Nicht zutreffend

    Hat eine Lizenz

    Nicht relevant: Cloud-Server des Inhabers von dreamboothstudio.com; du führst keinen Code aus dem Repo aus

  • ✓ Bestanden

    Endpunkt antwortet

    Antwort in 389 ms (HTTP 200)

  • – Nicht zutreffend

    Anmeldung mit OAuth

    Keine Anmeldung nötig

  • ✓ Bestanden

    Keine versteckten Anweisungen in Tool-Beschreibungen

    Wir haben 22 Tool-Beschreibungen gelesen und keine versteckten Anweisungen an die KI gefunden

Diskussion

Fragen, Tipps teilen oder melden, dass etwas nicht geht. Sortiert nach „hilfreich“.

Noch keine Beiträge. Stell die erste Frage oder teile einen Tipp.

Beiträge hier stammen von Nutzern, nicht vom PopNx-Team.

Mit Google anmelden, um zu posten

Nutzerbewertungen

Noch keine Bewertungen

Mit Google anmelden, um zu bewerten

Im Vergleich mit anderen in Sonstigesi

  • Mehr Sterne als 0 % der anderen 19697 Server in dieser Kategorie
  • Neuer in der Registry veröffentlicht als 18 % der anderen 19697 Server in dieser Kategorie
  • Basischecks gleich gut wie oder besser als bei 100 % der anderen 19697 Server in dieser Kategorie

Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.

Häufige Fragen

Ist Dreambooth Studio sicher?

Er hat 4 von 4 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.

Welche Schlüssel oder Codes braucht er?

Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.

Läuft er auf meinem Computer oder in der Cloud?

Er läuft in der Cloud des Entwicklers. Du verbindest dich übers Internet, ohne etwas zu installieren, aber was du sendest, läuft über die Server des Entwicklers.

Wird er noch gepflegt?

Das GitHub-Repo wurde zuletzt vorgestern geändert, und die neueste Version (0.1.0) kam vor 3 Monaten in die Registry.

Welche Apps können ihn nutzen?

Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Er verbindet sich per URL und funktioniert daher auch in Apps mit Remote-MCP, etwa ChatGPT im Web (volles MCP ab Business; Pro nur lesend).

Was kann ich stattdessen nutzen?

In derselben Kategorie: World Monitor, Claude Flow, Windmill

Andere in derselben Kategorie

Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.

So liest du eine Karte:↓ Downloads pro Wochei★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti

World Monitor

Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 97 tools.

von koala73Weit verbreitet★ 90.571Aktualisiert gestern

Läuft in der Cloud✓ vom Dienst · worldmonitor.app

Claude Flow

AI orchestration with hive-mind swarms, neural networks, and 87 MCP tools for enterprise dev.

von ruvnetWeit verbreitet↓ 13.513/Wo.★ 81.591Aktualisiert vor 14 Monaten

Läuft auf deinem Computer

Windmill

Run Windmill scripts and flows and manage jobs, schedules, resources and variables.

von windmill-labsWeit verbreitet★ 18.572Aktualisiert vorgestern

Läuft in der Cloud

README vom Entwickler

README öffnen

Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.

dreambooth-mcp

MCP server for Dreambooth Studio. Lets ChatGPT, Claude and Gemini answer an operator's questions about their own booths — "how did my Bandung booth do this week?" — by wrapping the Studio API the dashboard already uses.

Status: live at `https://mcp.dreamboothstudio.com/mcp` (server 0.3.0). Streamable HTTP + stdio, 23 tools — 13 read-only, 9 that create or edit something, and connect_account. Listed in the official MCP Registry as com.dreamboothstudio/dreambooth v0.1.0 (registry versions are immutable, so that entry stays at 0.1.0).

Ten tools are always registered, on stdio and on every HTTP session:

connect_accountstarts the device flow
readconnection_status · get_sessions · get_gallery_stats · search_docs
readlist_projects · get_project · get_revenue_summary · get_credits · get_wallet_transactions

session_info is an eleventh, registered only when MCP_DIAGNOSTICS=1.

Twelve more, listed on every connection (see below for what guards them):

createscreate_booth · start_booth · refine_booth · create_filter · duplicate_project
createsstart_frame · refine_frame · save_frame
editsupdate_booth_draft
readget_booth_draft · check_generation · preview_filter

Phase 3 hardening has since landed, on the OAuth path: the Studio runs a full OAuth 2.1 authorization server — PKCE S256 only, one-hour access tokens, 30-day refresh, dynamic client registration, RFC 8707 resource audience, RFC 7009 revocation, and a CSRF-bound consent screen that names the scopes being granted. This server is a protected resource in front of it (RFC 9728). Both discovery documents are live.

The device flow is the older path and keeps the older properties — its token is a year long, unscoped and unrevocable, so it must not be able to write. It cannot: the Studio refuses it with a 403 and a sentence naming the fix, exactly as it refuses a read-scoped OAuth token.

The tool list is the same on every connection. The twelve above used to be registered only when a request carried a bearer, which made tools/list answer 10 tools with no Authorization header and 22 with any string as one — the check was on the header's presence, not on anything in it. That is gone. An inventory that moves is unusable: the ChatGPT submission portal scans from the browser with no credential, so it could only ever see the read half while the submission declared all 22, and any client caching a pre-sign-in list keeps offering ten tools to an operator who has connected an account. What guards these tools now is what always decided the outcome anyway — AUTH_REQUIRED_TOOLS turns an uncredentialled call into the 401 that *starts* the OAuth flow, and the Studio's 403 answers a token without booths:write. There is no feature flag in this — an earlier version of this README described one, and it was removed; deploy order is what guards a new tool. See Connecting an account.

Design: docs/dreambooth-mcp-design.md in the Studio repo. Inline cards in ChatGPT: docs/apps-sdk-widgets-plan.md.


What it does not do

This service holds no database, no business logic, and no aggregations. Every tool wraps a route the Studio already exposes, so there is exactly one implementation of "what is this operator's revenue" and it lives in the Studio. The moment an aggregation is copied in here, it becomes a second source of truth that drifts silently — which is how you end up with three different revenue numbers and no way to tell which is right.

Also permanently out of scope: withdrawals, payout accounts, MFA/step-up, subscription token regeneration, and anything under /api/admin.

Run it

npm install

cp .env.example .env

npm run dev # Streamable HTTP on PORT (default 8080) npm run dev:stdio # stdio, for Claude Desktop

npm run build npm run inspect # stdio smoke: handshake, tools/list, widgets, every tool npm run inspect:http # HTTP smoke: sessions, isolation, unknown-session 404 npm run preview # writes each widget state to .preview/ to open in a browser

inspect:http runs dist/, so npm run build first or you are testing the last build rather than your change.

Both smokes run without a token. search_docs needs no auth, and the authed tools must come back with a readable message naming connect_account rather than crashing — that failure path is part of what the checks verify.

Connecting an account

There is no token to configure, in either transport. The operator asks their assistant to connect; connect_account starts the device flow the Studio already runs for the Electron booth and returns a Google link for them to open (Google only: the Studio builds an accounts.google.com URL). A client that signs in through its own connector settings (a request with no session and no credential) gets use_client_sign_in and no link instead; that sign-in is the Studio's login page, which takes an email and password as well as Google. The tool returns immediately and polls in the background — a tool call that blocks for minutes reads as a hung server to every MCP client, and by the time they ask their next question the token is in place.

That includes local development. A pasted token would be a session-equivalent credential (one year, no scopes, no revocation) sitting in a file on disk, and in HTTP mode it would authenticate every incoming session as that one account. Approving in a browser after a restart takes about fifteen seconds; that is the whole cost of not having it.

Device-flow tokens are held in memory, per MCP session. A restart means everyone reconnects, which is the right trade for that path: there is no credential store to protect. The token itself is session-equivalent — one year, no scopes, no revocation — and that has not changed.

What changed is that it is no longer the only way in. A client that arrives with its own Authorization: Bearer is on the OAuth path, where the token expires in an hour, carries a scope the operator approved by name, and can be revoked at /api/oauth/revoke. Nothing is stored here on that path at all: the credential belongs to the request that carried it and is never written into a session, where a later request quoting the same session id could read it.

The two credentials are deliberately not equivalent in what they may do. The Studio refuses a non-GET from a device-flow token on any route that opted into connector writes — the weaker credential must not inherit access granted to the stronger one. Everything the booth fleet POSTs with that token is untouched. The write tools are still *listed* on a device-flow session, because the tool list must not depend on the credential; calling one there returns the Studio's 403 and its sentence, which tells the operator what to do instead.

Reading is unchanged on both: a session that never connects an account can read nothing but search_docs.

Deploy

Railway, following the dreambooth-whatsapp recipe: railway.json with npm run build / npm start, healthcheck on /health, restart ON_FAILURE. No Dockerfile, no CI, and no volume — this service is stateless.

Set DREAMBOOTH_API_URL and ALLOWED_HOSTS. There is no token to configure. Leave MCP_DIAGNOSTICS unset in production — see the tools section. OPENAI_APPS_CHALLENGE is set only while a directory submission is in flight — see docs/chatgpt-listing.md.

ALLOWED_HOSTS must list both public hostnames:

ALLOWED_HOSTS=mcp.dreamboothstudio.com,dreambooth-mcp-production.up.railway.app

Railway keeps serving its generated hostname after a custom domain is attached, and DNS-rebinding protection is an allow-list, not a filter — naming only one host makes the other return 400 on /mcp. /health keeps answering ok either way, because it is registered ahead of the transport, so the healthcheck cannot tell you this broke. Leaving the variable empty disables the protection entirely rather than allowing everything through some safer path.

Publishing to the registry

server.json is the registry manifest. Entries cannot be unpublished and each version is immutable — a changed URL or a fixed typo means publishing a new version, never editing the old one.

./mcp-publisher validate server.json    # checks against the live registry, publishes nothing

./mcp-publisher login dns --domain dreamboothstudio.com --private-key "$(openssl pkey -in key.pem -noout -text | grep -A3 priv: | tail -n +2 | tr -d ' :\n')" ./mcp-publisher publish

Always validate first; it is the only step in that sequence you can take back.

The com.dreamboothstudio namespace is proved by a TXT record on the apex (dreamboothstudio.com, not the mcp subdomain), signed by key.pem. That file is gitignored and lives on one machine. Losing it is recoverable — generate a new Ed25519 pair and replace the TXT record. Leaking it is not: this repo is public, and whoever holds it can publish under com.dreamboothstudio/* permanently.

Connecting a client

The hosted server needs no install. In any client that accepts a remote MCP server, point it at:

https://mcp.dreamboothstudio.com/mcp
Claude Desktop

For running a local checkout — against a preview Studio, or a branch. To use the deployed server, add the URL above instead; there is nothing to clone.

Add to claude_desktop_config.json. --stdio is required — the entry point defaults to HTTP, and without it Claude Desktop starts a web server and waits forever for a reply on stdin.

{

"mcpServers": { "dreambooth": { "command": "npx", "args": ["tsx", "src/index.ts", "--stdio"], "cwd": "/absolute/path/to/dreambooth-mcp", "env": { "DREAMBOOTH_API_URL": "https://dreamboothstudio.com" } } } }

Tools

ToolWrapsAuth
get_sessionsGET /api/sessionsBearer
get_gallery_statsGET /api/galleryBearer
search_docs/docs-search-index-{locale}.jsonnone
list_projectsGET /api/projectsBearer
get_projectGET /api/projects?id= + GET /api/device-monitoringBearer
get_revenue_summaryGET /api/me/revenue-summaryBearer
get_creditsGET /api/creditsBearer
get_wallet_transactionsGET /api/wallet-transactionsBearer

That is the complete read set. Two more wrap a route that creates something:

ToolWrapsAuth
create_filterPOST /api/filtersBearer + booths:write
duplicate_projectPOST /api/projects?duplicateBearer + booths:write
start_framePOST /api/ai/frames/start, then POST /api/ai/threads/{id}/messagesBearer + booths:write
refine_framePOST /api/ai/threads/{id}/messagesBearer + booths:write
check_generationnothing — reads this processBearer
save_framePOST /api/ai/frames/from-generationBearer + booths:write
preview_filterGET /api/filters/previewBearer (read is enough)
start_boothPOST /api/onboarding/generateBearer + booths:write
refine_boothPOST /api/onboarding/generate (regen, or a rebuild)Bearer + booths:write
create_boothGET /api/onboarding/draft → GET by-slug?checkOnly → POST /api/onboarding/draft-frames → GET /api/onboarding/frames + /catalog (+ /api/ai-effects/catalog) → POST /api/projects/onboarding → GET by-slugBearer + booths:write
get_booth_draftGET /api/onboarding/draftBearer (read is enough)

| update_booth_draft | PATCH /api/onboarding/draft (+ `/api/

Nur der Anfang wird gezeigt; den Rest findest du im Repo