deco Studio

Self-hostable MCP gateway that puts agents, tool connections and model routing behind one endpoint

Official · deco CMS TypeScript Remote (hosted) · Streamable HTTPLocal · Streamable HTTP AI and MLDeveloper toolsDevOps and monitoring

78 popularity score ★ 416 ↓ 15k/wk

Connect your client

Remote (hosted)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "deco-studio": {
      "url": "https://studio.decocms.com/api/<ORG_SLUG>/mcp/gateway/<AGENT_ID>"
    }
  }
}
Claude (desktop and web)Settings → Connectors → Add custom connector
https://studio.decocms.com/api/<ORG_SLUG>/mcp/gateway/<AGENT_ID>
VS Code.vscode/mcp.json
{
  "servers": {
    "deco-studio": {
      "type": "http",
      "url": "https://studio.decocms.com/api/<ORG_SLUG>/mcp/gateway/<AGENT_ID>"
    }
  }
}
Local (once it is running)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

Claude CodeTerminal
claude mcp add --transport http deco-studio 'http://localhost:3000/api/<ORG_SLUG>/mcp/gateway/<AGENT_ID>'
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "deco-studio": {
      "url": "http://localhost:3000/api/<ORG_SLUG>/mcp/gateway/<AGENT_ID>"
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "deco-studio": {
      "type": "http",
      "url": "http://localhost:3000/api/<ORG_SLUG>/mcp/gateway/<AGENT_ID>"
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.deco-studio]
url = "http://localhost:3000/api/<ORG_SLUG>/mcp/gateway/<AGENT_ID>"
Gemini CLITerminal
gemini mcp add --scope user --transport http deco-studio 'http://localhost:3000/api/<ORG_SLUG>/mcp/gateway/<AGENT_ID>'

Settings 12

Set together: secrets
BETTER_AUTH_SECRET secret Optional: Auth signing secret; keep it stable across restarts and set it for anything shared (Compose falls back to a placeholder).
ENCRYPTION_KEY secret Optional: Credential-vault key; keep it stable across restarts, or stored tokens cannot be read.
DATABASE_URL secret Optional: PostgreSQL connection; Compose points it at its own postgres service. Default postgresql://postgres:postgres@localhost:5432/postgres.
NATS_URL Optional: NATS connection, comma-separated for several; NATS_USER and NATS_PASSWORD (together) or NATS_CREDS add auth. Default nats://localhost:4222.
PORT Optional: API listener port; Compose maps it on 127.0.0.1. Default 3000.
BASE_URL Optional: Public origin used in generated URLs.
DATA_DIR Optional: Runtime files and local telemetry; /app/data in the image. Default ~/deco.
CLICKHOUSE_URL Optional: Optional ClickHouse endpoint for monitoring and analytics. For monitoring.
Set together: object-storage
S3_ENDPOINT Optional: S3-compatible object storage endpoint; S3_FORCE_PATH_STYLE defaults to true and must be false for AWS S3.
S3_BUCKET Optional: Object storage bucket.
S3_ACCESS_KEY_ID secret Optional: Object storage access key.
S3_SECRET_ACCESS_KEY secret Optional: Object storage secret key.

What it does

deco Studio is a control plane for an organisation's AI use. You register other MCP servers in it once (GitHub, Slack, Postgres or any MCP server), and their tokens are kept in an encrypted vault. You then decide which tools each agent, role or organisation may call. MCP clients such as Cursor, Claude or VS Code connect to Studio instead of to each server. Each agent you publish there is its own MCP endpoint, and every model and tool call is logged with tokens, cost, latency and errors.

Studio also exposes its own management tools over MCP: organisations and members, connections, virtual MCPs, agents' threads, automations, a task board, API keys, secrets, AI provider keys, repositories and change requests, Jira, object storage and monitoring. The tool registry at v4.519.0 (apps/api/src/tools/index.ts) lists 245 of them, and DATABASES_RUN_SQL is no longer among them. A comment in that file calls the full set about 200 tools, enough to crowd a client's context. Agent endpoints ('virtual MCPs') can instead expose all tools, a narrowed selection, or load tools on demand in a sandbox.

Since v4.519.0 Studio is no longer a single process with an embedded PostgreSQL. The npm package decocms (program deco) still exists, but its README says the CLI no longer starts a local runtime. You run the released image (ghcr.io/decocms/studio/studio) with Docker Compose, which brings PostgreSQL, NATS and MinIO object storage, or install the Helm chart on Kubernetes. The maker also runs a hosted copy at studio.decocms.com. Models are chosen per agent, through OpenRouter or direct Anthropic, OpenAI, Google or other compatible providers. Engineers can also link their own Claude Code or Codex session for coding work.

What it needs

To run it yourselfDocker
Runs onmacOS, Windows, Linux
deco StudioYour own instanceSign up on your own instance (the first user becomes organisation owner), or use the hosted studio.decocms.com
OpenRouter or a model provider (Anthropic, OpenAI, Google)Paid planA provider key for the models your agents call
Also
  • Docker Compose v2.20 or later (the example uses include)
  • PostgreSQL, NATS and S3-compatible object storage (Compose starts all three)

Clone the repository and run `docker compose -f selfhost/examples/docker-compose/compose.yaml up`. Copy selfhost/examples/docker-compose/.env.example to .env first if you want to change settings. Then open http://localhost:3000 and sign up. Create an organisation and an agent, and point your client at that agent's endpoint. For production, the Helm chart (oci://ghcr.io/decocms/chart-deco-studio) expects a PostgreSQL you provide, plus NATS, and ClickHouse with an OTel Collector for traces and analytics.

Limits

  • Not covered Serves MCP over HTTP only, with no stdio mode: a client connects to the URL of a running Studio.
  • Limit The npm deco CLI no longer starts PostgreSQL, NATS or object storage; run released Studio with Docker Compose or Helm.
  • Limit The unscoped /mcp/... and /mcp/self routes still answer but log a deprecation; use the /api/<org>/mcp/... paths.
  • Limit The Compose example falls back to placeholder BETTER_AUTH_SECRET and ENCRYPTION_KEY values; set stable ones for anything shared.
  • Not covered The Compose example publishes Studio on 127.0.0.1 only (port 3000 by default); exposing it to others needs your own proxy or config.
  • Limit S3_FORCE_PATH_STYLE defaults to true for MinIO-style stores; set it to false for AWS S3.
  • Limit NATS_USER and NATS_PASSWORD must be set together, and not alongside NATS_CREDS, or the server refuses to start.
  • Early release Spend caps, an agent marketplace and remote access from any browser are on the roadmap, not shipped.

It serves MCP over HTTP only and has no stdio mode: a client connects to a running Studio's URL. The unscoped /mcp/... and /mcp/self routes still work but log a deprecation; use the /api/<org>/mcp/... paths. BETTER_AUTH_SECRET and ENCRYPTION_KEY must be set explicitly in production. Cost spend caps, an agent marketplace and remote access from any browser are on its roadmap, not shipped. The desktop app is macOS on Apple Silicon only for now.

Who it suits

Suits a team that wants many MCP servers shared through one governed endpoint, with per-agent tool access, vaulted credentials, SSO, audit logs and cost tracking. It also suits anyone who wants agents published as endpoints other clients can call. A single developer who only needs one or two tools in one client will find it heavy. Self-hosting now means running Docker with PostgreSQL, NATS and object storage, so they should connect those servers directly instead. Choose the hosted studio.decocms.com to avoid running it, or self-host to keep everything on your own machines.

Tools 60 of 245

23 only read, 30 change things, 7 can delete or overwrite.

ORGANIZATION_CREATE changes
Create an organisation
ORGANIZATION_LIST
List your organisations
ORGANIZATION_SETTINGS_UPDATE changes
Change an organisation's settings
ORGANIZATION_MEMBER_ADD changes
Add a member to an organisation
ORGANIZATION_MEMBER_REMOVE deletes
Remove a member from an organisation
ORGANIZATION_MEMBER_UPDATE_ROLE changes
Change a member's role
COLLECTION_CONNECTIONS_CREATE changes
Register an MCP server as a connection
COLLECTION_CONNECTIONS_LIST
List registered connections
COLLECTION_CONNECTIONS_UPDATE changes
Edit a connection
COLLECTION_CONNECTIONS_DELETE deletes
Remove a connection
CONNECTION_TEST
Check that a connection answers
CONNECTION_TOOLS_SEARCH
Search the tools offered by connections
CONNECTION_TOOL_CALL changes
Call a tool on a connected server
COLLECTION_VIRTUAL_MCP_CREATE changes
Create a virtual MCP (agent endpoint)
COLLECTION_VIRTUAL_MCP_LIST
List virtual MCPs
COLLECTION_VIRTUAL_MCP_UPDATE changes
Edit a virtual MCP's tools and settings
COLLECTION_VIRTUAL_MCP_DELETE deletes
Delete a virtual MCP
COLLECTION_THREADS_LIST
List chat threads
COLLECTION_THREAD_MESSAGES_LIST
Read the messages of a thread
AUTOMATION_CREATE changes
Create a scheduled or triggered automation
AUTOMATION_LIST
List automations
AUTOMATION_TRIGGER_ADD changes
Attach a trigger to an automation
AUTOMATION_RUN changes
Run an automation now
AUTOMATION_DELETE deletes
Delete an automation
TASK_BOARD_ITEM_CREATE changes
Add a task to the board
TASK_BOARD_ITEM_LIST
List board tasks
TASK_BOARD_ITEM_UPDATE changes
Edit a board task
TASK_BOARD_COMMENT_CREATE changes
Comment on a board task
TASK_BOARD_SPRINT_CREATE changes
Create a sprint
TASK_BOARD_PROMOTE_TO_PRODUCTION changes
Promote a task's change to production
API_KEY_CREATE changes
Create a scoped API key
API_KEY_LIST
List API keys
API_KEY_DELETE deletes
Revoke an API key
SECRET_CREATE changes
Store a secret
SECRET_LIST
List stored secrets
AI_PROVIDERS_LIST
List supported AI providers
AI_PROVIDERS_LIST_MODELS
List a provider's models
AI_PROVIDER_KEY_CREATE changes
Save a model provider key
AI_PROVIDER_CREDITS
Show remaining gateway credit
MONITORING_LOGS_LIST
List logged model and tool calls
MONITORING_STATS
Summarise usage, errors and latency
THREAD_ANALYTICS_USAGE
Report token and cost usage
FILE_CONFIG_CREATE changes
Add an S3 bucket configuration for the organisation
LIST_OBJECTS
List files in object storage
PUT_PRESIGNED_URL changes
Get an upload URL for object storage
DELETE_OBJECT deletes
Delete a stored object
GIT_ACCOUNT_CONNECT_TOKEN changes
Link a git account with a token
REPOSITORY_LIST
List linked repositories
REPOSITORY_CREATE_FROM_TEMPLATE changes
Create a repository from a template
REPOSITORY_DELETE deletes
Delete a linked repository
CHANGE_REQUEST_OPEN changes
Open a change request
CHANGE_REQUEST_MERGE changes
Merge a change request
JIRA_ISSUE_SEARCH
Search Jira issues
JIRA_ISSUE_CREATE changes
Create a Jira issue
JIRA_COMMENT_ADD changes
Comment on a Jira issue
SANDBOX_START changes
Start an agent sandbox
WEB_SEARCH
Search the web
DEEP_RESEARCH
Run a multi-step research task
GENERATE_IMAGE changes
Generate an image
GLOBAL_SEARCH
Search across the organisation's items

Similar servers