dreambooth-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@dreambooth-mcphow did my Bandung booth do this week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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: Phase 1, not yet deployed. Streamable HTTP + stdio, eight read-only
tools, and account connection through the Studio's existing OAuth device flow.
Railway config is in place; the deploy waits on the mcp.dreamboothstudio.com
subdomain.
Design: docs/dreambooth-mcp-design.md
in the Studio repo.
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.
Related MCP server: Databricks MCP Server
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, every tool
npm run inspect:http # HTTP smoke: sessions, isolation, unknown-session 404Both 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.
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.
Tokens are held in memory, per MCP session. A restart means everyone reconnects, which is the right trade for v1: there is no credential store to protect, and the token is session-equivalent (one year, no scopes, no revocation). Hardening — scopes, a token registry, revocation, 30-day TTL — is Phase 3, before any public connector listing.
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.
Claude Desktop
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 (v1 read-only)
Tool | Wraps | Auth |
|
| Bearer |
|
| Bearer |
|
| none |
|
| Bearer |
|
| Bearer |
|
| Bearer |
|
| Bearer |
|
| Bearer |
That is the complete v1 read set.
get_project reports livenessTier, not the device's isOnline field.
isOnline is retained only for back-compat and collapses "quiet because it was
deliberately shut down" into "offline" — which is how a healthy fleet gets
reported as broken.
The first three needed no Studio change at all. The rest depend on Studio
work that has now landed: GET on /api/projects, /api/credits and
/api/wallet-transactions accepts Authorization: Bearer via
resolveAuthSession (POST/PUT/DELETE deliberately still do not), and
GET /api/me/revenue-summary is a new owner-scoped endpoint — /api/analytics/revenue
is superadmin-gated and returns 403 to an operator.
get_wallet_transactions and get_revenue_summary answer different questions
and their descriptions say so. The wallet ledger excludes cash and voucher
income entirely, so for an operator who takes cash it understates real revenue —
a model that reports it as "your earnings" is confidently wrong.
Identity is never an argument. No tool accepts a userId or email — the
operator is resolved server-side from the token, exactly as lib/ai-chat does in
the Studio. A tool that needs such an argument is designed wrong.
Rules for adding a tool
It wraps an existing Studio route. If no route fits, add a thin one in the Studio — do not reimplement the query here.
The description says when to call it, not just what it returns. The model picks tools by description alone.
Return the smallest useful shape.
get_gallery_statsreturns counts, not 12 media URLs, because the model does not need them and they cost context.Read-only tools carry
annotations: { readOnlyHint: true }so clients can auto-approve them. A write tool must not.Failures go back as
isErrorcontent with a sentence the model can relay — never a protocol error, which just makes clients retry.
Notes
stdout is the transport. A single
console.logcorrupts the stream and the client drops the connection with a parse error. Diagnostics go to stderr.Do not copy
dreambooth-whatsapp's habit of committing.env. Nothing secret belongs in it here, and the surest way to keep that true is to never start.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceEnables AI assistants like Claude to interact with Databricks workspaces through secure OAuth authentication. Supports custom prompts, tools for cluster management, SQL execution, and job operations via the Databricks SDK.19
- Flicense-qualityDmaintenanceEnables AI assistants like Claude to interact with Databricks workspaces through secure OAuth authentication. Supports custom prompts, tools for cluster management, SQL execution, and job operations via the Databricks SDK.
- FlicenseAquality-maintenanceEnables AI assistants to interact with HaloPSA data through secure OAuth2 authentication. Supports SQL queries against the HaloPSA database, API endpoint exploration, and direct API calls for comprehensive PSA data analysis and management.107
- Alicense-qualityDmaintenanceEnables AI assistants to interact with Databricks workspaces programmatically, providing comprehensive tools for cluster management, notebook operations, job orchestration, Unity Catalog data governance, user management, permissions control, and FinOps cost analytics.263MIT
Related MCP Connectors
Read-only bank access for your AI agent. Connects Claude, ChatGPT, Cursor, Gemini, Codex.
List, configure, chat with, analyse and embed your Echo AI assistants.
Boost posts and launch community growth campaigns from your AI assistant. OAuth, credit-billed.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Dreambooth-Studio/dreambooth-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server