Deploy Doory MCP

Let Claude and Cursor create and edit designs in your Doory

Deploy Doory MCP

Just deployed

/app/media

/var/lib/postgresql/data

Deploy and Host self hosted Doory MCP (Self-Hosted Design MCP Server) on Railway

This template deploys Doory with its MCP endpoint at /mcp on your Railway domain, so Claude or Cursor can create, fill and export designs with a bearer token you issue yourself.

About Hosting Doory MCP open-source software on Railway (self hosted Doory MCP server for AI design assistants template)

Running Doory MCP on Railway keeps your templates, comments, version history and uploaded images in a Postgres 18 database and media volume inside your own Railway project.

Why Deploy Doory MCP, the Canva alternative on Railway (Railway Free Trial)

Canva keeps your templates and comments on its servers, reachable by an assistant only through its connector. Your templates and history stay yours, and MCP_CALLS_PER_MINUTE caps how hard an assistant can push.

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Doory MCP on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.

Railway vs Other Hosting Providers and VPS for Doory MCP self hosting

Railway deploys Doory and Postgres 18 from one template, while other providers give you a bare machine to configure. Compare the trade-offs before you let an AI assistant touch your designs.

ProviderWhat You Get with RailwayWhat You Get with the Other Provider
DigitalOceanA deployed Doory container, Postgres 18 and a public HTTPS domain for /mcp.A Droplet where you install Docker, manage TLS and set MCP_ENABLED yourself.
AWSOne template that provisions the service, database and variables together.Full control over VPC and IAM, with more wiring before an MCP client can connect.
HetznerManaged deploys, healthchecks and restarts handled by the platform.Low-cost servers where you own OS patching, backups and the proxy in front of /mcp.

Pick the option that matches how much infrastructure time you want to spend.

Common Use Cases for hosted Doory MCP

  • Filling a product card template from a spreadsheet: Have your assistant create one design per row with bulk create. Each run is capped by BULK_FILL_MAX_ROWS (default 100), so split large catalogs into batches.
  • Exporting social graphics as PNG: Once edits are done, the assistant can call export_design to produce PNG files. Server-side export must be switched on first.
  • Uploading brand images from a URL: Use upload_image_from_url to copy a logo or product photo into the media library. Confirm URL image copying is enabled first.
  • Reviewing comments before acting: Comments reach an AI agent labelled as untrusted, so read what it proposes before any change is applied.
  • Revoking a scoped token after a contractor project: Give each outside collaborator their own limited token with an expiry date. When the project ends, revoke it on the AI assistants settings page so it stops working immediately.

Dependencies for Doory MCP Docker hosted on Railway

Doory MCP runs as one combined container, so the stack is small. The MCP endpoint shares the Doory service's domain, so Redis and the standalone mcp service are not needed here.

Deployment Dependencies for Managed Doory MCP Service (Django + realtime server + PostgreSQL 18)

The Doory service listens on port 8080 and is the only public entry point, so the MCP endpoint lives at your domain under /mcp once MCP_ENABLED=true is set.

Implementation Details for Doory MCP (Using Doory official docker image)

The image runs tini as PID 1, with nginx on 8080 proxying to gunicorn and uvicorn on loopback.

How does Doory MCP compare against other ways to let AI assistants edit design templates

Doory MCP vs Canva MCP (Canva Alternative)

  • Where Canva MCP wins: It connects Canva's own library to AI assistants with no server to run.
  • Where Doory MCP differs: It runs in your Railway project, so templates, comments and version history stay on your servers.
  • Control: You set token permissions, expiry and MCP_CALLS_PER_MINUTE yourself.

Doory MCP vs Figma MCP (Figma Alternative)

  • Where Figma MCP wins: It gives assistants deep access to existing Figma files, which suits teams already in Figma.
  • Where Doory MCP differs: It targets fill-and-export work on templates, such as filling product cards from a spreadsheet.
  • Data location: Design files and comments sit in your own PostgreSQL database.

Doory MCP vs Adobe Express (Adobe Express Alternative)

  • Where Adobe Express wins: It is a polished hosted app with a large template library and nothing to manage.
  • Where Doory MCP differs: An assistant edits through a bearer token you control, not a manual editor session.
  • Ownership: Doory is open source under the Attribution Assurance License, so you can inspect the code you deploy.

Doory MCP vs Penpot MCP (Penpot Alternative)

  • Where Penpot MCP wins: Penpot is a mature open-source design platform suited to full design-tool workflows.
  • Where Doory MCP differs: It focuses on templates for posters and social posts, with fill, bulk create and export tools.
  • Operational fit: It ships as one combined container plus Postgres 18 on Railway.

How to use Doory MCP (the OSS Self-Hosted Design MCP Server)?

  1. In the Railway project, open the Doory service and add the variable MCP_ENABLED=true, then redeploy. The template does not set this for you.
  2. Confirm the endpoint at https://your-domain/mcp, using your public Railway domain.
  3. Sign in to Doory and open Settings / AI assistants (MCP). Choose permissions, set an expiry of up to a year, confirm with your password, and copy the token. It is shown once, so save it now.
  4. In Claude or Cursor, add a server with URL https://your-domain/mcp and the header Authorization: Bearer your-token. A JSON entry looks like this:
{"type": "http", "url": "https://your-domain/mcp", "headers": {"Authorization": "Bearer doory_..."}}
  1. Set MCP_CALLS_PER_MINUTE (default 120, where 0 means no limit) on the Doory service if you need a different cap. Lower it while testing so a runaway assistant cannot flood your template with edits.

How to self host Doory MCP on other VPS Services (Doory self hosting guide)

Clone the Repository

Start on a Linux VPS with Docker and a domain pointing at it. Clone the upstream project, which is licensed under the Attribution Assurance License, so keep the credit in place.

git clone https://github.com/shaongitbd/doory.git
cd doory

Install Dependencies

Install Docker and the Compose plugin, then confirm both work.

docker --version
docker compose version

Configure Environment Variables

Copy the example env file and set your domain. Set MCP_ENABLED=true to switch on the MCP endpoint, and keep DJANGO_SECRET_KEY stable, because changing it revokes existing MCP tokens.

cp .env.example .env
# set in .env:
# SITE_URL=https://your-domain
# DJANGO_ALLOWED_HOSTS=your-domain
# MCP_ENABLED=true
# MCP_CALLS_PER_MINUTE=120

Start the Doory MCP Application

Bring the stack up in the background, then check the MCP route on your domain at https://your-domain/mcp.

docker compose up -d --build
curl https://your-domain/mcp

On Railway the template wires the database, domain and variables together for you.

Official Pricing of Doory MCP (Doory pricing)

Doory MCP is free and open source under the Attribution Assurance License, so there is no paid plan to buy from the upstream project.

Doory MCP cloud vs self hosted comparison (Pricing, features, costs, and more)

Doory MCP has no official hosted pricing I can verify, so the real comparison is running the stack on Railway versus on a VPS you manage. The differences are the bill and how much upkeep you take on.

Monthly cost of self hosting Doory MCP on Railway

I can't quote an exact Railway figure from the facts I have. Check the Railway pricing page for current rates, then watch your first week of usage to see the real number.

System Requirements for Hosting Doory MCP on a VPS

On a VPS you supply the resources yourself. The single container needs enough memory for Django, the realtime server and Chromium used for server-side export. Size up if several assistants will fill designs at once.

Frequently Asked Questions (FAQs)

How do I turn on the MCP endpoint on Railway?

Add MCP_ENABLED=true to the Doory service and redeploy, since the template does not set it. Then open https://your-domain/mcp to confirm the endpoint responds.

How do I connect Claude or Cursor with a token?

Create a token under Settings / AI assistants (MCP) in Doory, set permissions and an expiry of up to a year, and confirm with your password.

Why does export_design fail or return a download link?

Exports need SERVER_IMAGE_EXPORT_ENABLED turned on, since upstream defaults it to false. AVIF, SVG, PDF and ZIP exports always come back as download links.

Why did my tokens stop working after changing DJANGO_SECRET_KEY?

Changing the secret key revokes existing MCP tokens. Keep the old key in DJANGO_SECRET_KEY_FALLBACKS when you rotate it to avoid this.

How do MCP_CALLS_PER_MINUTE and BULK_FILL_MAX_ROWS limit an assistant?

MCP_CALLS_PER_MINUTE caps calls per user per minute, defaulting to 120, and 0 removes the limit. BULK_FILL_MAX_ROWS caps the rows a single bulk create can process, defaulting to 100.

How do edits from an assistant show up in an open editor?

They appear within a few seconds rather than instantly, because Redis is left out of this template. Each edit also saves the prior state to version history, so you can roll back.


Template Content

More templates in this category

View Template
Rocky Linux
Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
50
View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
71
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
51