
Doop MCP Server: Design on a Shared Canvas from Claude, Cursor and Codex
Lets Claude, Cursor, Codex and other assistants design screens on a live shared canvas that you and your team watch in the browser.
Doop is an open-source design canvas, and this is its own MCP server. Your assistant creates frames of real HTML, streams designs in live, takes screenshots to check its work, and reads and answers comments. You sign in with your Doop account the first time, on the hosted doop.design or on a copy you run yourself. Know before you use it that it can replace and delete frames, and that its tool descriptions tell the assistant which tools to call first.
Good for
- Designers who want an AI agent sketching beside them on a shared canvas
- Developers using Claude Code or Cursor to produce UI drafts and clickable prototypes
- Teams who want to review agent designs live and leave comments the agent answers
- People who prefer to self-host their design tool
Works in
14 should work
Tap an app to see how to set it up and any known problems.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Install Doop MCP
Claude Code
- 1
Copy this prompt.
Add the Doop MCP server to Claude Code. Run this command: claude mcp add --transport http doop https://doop.design/mcp Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Sign-in with the vendor account (OAuth).
Read-only mode: No read-only mode is documented.
The hosted address is https://doop.design/mcp and signs you in with your Doop account the first time. Self-hosted entries use the README's local development address, http://localhost:4300/mcp, and need Doop running on your machine. Headless clients such as n8n can send an agent key from Settings, under Agent keys, as an Authorization bearer header. ChatGPT and the Claude web connector need a public HTTPS address, so localhost does not work there.
Built from the package data we hold. Not yet tested by us.
Tools
Reads the Doop agent playbook
Returns the agent guide with the streaming workflow, frame sizing, design rules and etiquette on a shared canvas. Its description tells the assistant to load it once before using the other tools.
Try: “Load the Doop guide before you start.”
Read ·
get_guideShows which Doop account you are signed in as
Returns the account id and display name behind the connection, so the assistant knows whose canvases it is touching.
Try: “Which Doop account am I connected as?”
Read ·
get_profilePosts a live one-line status on the canvas
Broadcasts what the assistant is working on so everyone viewing the canvas sees it next to its name. Clearing it with an empty string removes it.
Try: “Show "Sketching the pricing page" while you work.”
Write ·
set_statusLists the canvases you can open
Lists your canvases, including those in shared workspaces.
Try: “List my Doop canvases.”
Read ·
list_canvasesCreates a new canvas
Creates a design canvas and returns its id for the shareable link. It can be created inside a shared workspace.
Try: “Create a canvas for the travel app redesign.”
Write ·
create_canvasShows a canvas layout
Returns every frame's position, size and metadata, plus pinned references and pages.
Try: “What frames are on canvas abc123?”
Read ·
get_canvasCreates, renames, reorders or deletes pages
Sends the full ordered page list to change a canvas's pages. A page that still holds frames cannot be deleted. It is marked destructive.
Try: “Add a page called Onboarding after Home.”
Delete ·
set_canvas_pagesAdds a new frame with HTML
Adds a frame (an artboard that renders real HTML) to the canvas, placed automatically if you give no position.
Try: “Create a 390 by 844 frame for the mobile itinerary.”
Write ·
create_frameReads a frame including its HTML
Returns a frame with its full HTML content.
Try: “Show me the HTML of the booking card frame.”
Read ·
get_frameStreams a design into a frame in sections
Adds HTML a section at a time so people watching see the design build up live. The first chunk replaces the frame's content. It is marked destructive.
Try: “Build the pricing section in frame 3, one section at a time.”
Write ·
append_frame_htmlReplaces a frame's design in one go
Swaps a frame's whole HTML at once, shown live to everyone on the canvas.
Try: “Replace the hero frame with this version.”
Write ·
set_frame_htmlFinds and replaces exact text in a frame
Makes a targeted find-and-replace edit in a frame's HTML, which morphs into the render in place.
Try: “Change the button label from Sign up to Get started.”
Write ·
edit_frame_htmlRenames, moves or resizes a frame
Changes a frame's name, position or size without touching its design.
Try: “Move the landing frame to the right of the pricing frame.”
Write ·
update_frameDeletes a frame
Removes a frame from its canvas. It is marked destructive.
Try: “Delete the old checkout frame.”
Delete ·
delete_frameLists earlier versions of a frame
Lists the states of a frame that a replace, stream or restore overwrote, with who made them and when.
Try: “Show the version history of the hero frame.”
Read ·
list_frame_versionsBrings back an earlier frame version
Restores a frame's HTML and size to an earlier version. The design it replaces is saved as a version first. Marked destructive.
Try: “Restore the hero frame to the version from this morning.”
Write ·
restore_frame_versionTakes a screenshot of a frame
Renders a frame headlessly and returns a PNG so the assistant can see its own design and fix it.
Try: “Screenshot the pricing frame and tell me what looks off.”
Read ·
get_frame_screenshotExports a frame as an image or PDF
Returns PNG or JPG links that re-render when the design changes, or a vector PDF.
Try: “Export the landing frame as a PDF.”
Read ·
export_frameShows the clickable prototype wiring
Lists each page's start frame and every click, hover or key interaction, flagging links to missing frames.
Try: “What happens when someone clicks Book now?”
Read ·
get_prototypeSets where a prototype starts
Chooses the frame a page's clickable prototype opens on.
Try: “Make the Welcome frame the start of the flow.”
Write ·
set_prototype_startFetches and claims open feedback requests
Fetches human feedback requests on a canvas and assigns them to the assistant, for agents that poll a canvas.
Try: “Check the canvas for feedback and address it.”
Write ·
get_feedbackReads comments on a canvas
Returns element and canvas comments with replies, author and resolution state, newest first. Reading does not claim them.
Try: “What comments are open on the pricing frame?”
Read ·
get_commentsReplies in a comment thread
Posts a reply inside an element comment thread. An @mention of a Doop role counts as a new task for the built-in agent.
Try: “Reply that the contrast is fixed.”
Write ·
reply_to_commentMarks a comment thread resolved
Resolves a thread. For a thread that @mentioned the built-in agent, it also records the exchange as a design decision.
Try: “Resolve the comment about the button color.”
Write ·
resolve_commentLists a canvas's style guides
Lists brand rules and style recipes on a canvas with one-line summaries.
Try: “Which style guides does this canvas have?”
Read ·
list_guidelinesReads one style guide in full
Returns the rules every frame on the canvas should follow.
Try: “Read the brand guidelines before you design.”
Read ·
get_guidelinesWrites or revises a style guide
Saves a versioned style guide for the canvas. It is marked destructive.
Try: “Add a guideline: use 8px spacing.”
Write ·
set_guidelinesReads a pinned style reference
Returns the HTML of a frame a person pinned as a "more like this" example.
Try: “Read the pinned reference and match its style.”
Read ·
get_referenceRecords a design decision
Saves a style choice your human made, such as "rounder corners", so later agents follow it.
Try: “Remember that we dropped the italic serif.”
Write ·
save_decisionSearches stock photos
Searches Pexels for free stock photos and returns thumbnails to pick from.
Try: “Find a photo of a mountain lake for the hero.”
Network ·
search_imagesSearches open-source icons
Searches over 200,000 Iconify icons and returns hotlinkable SVG links.
Try: “Find a shopping cart icon.”
Network ·
search_iconsFinds company logos
Looks up a company's vector logo by brand name or domain, using Brandfetch.
Try: “Get the Stripe logo.”
Network ·
search_logosBrowses background styles
Lists curated hero and section backgrounds as thumbnails with palette colors and ready-to-paste CSS.
Try: “Show background options for a dark hero.”
Read ·
list_backgroundsSearches real landing pages for ideas
Searches a curated gallery of real sites by category, with thumbnails, palette, fonts and a mood line. Its description calls this the required first step when writing a brief.
Try: “Find dark fintech dashboard inspiration.”
Network ·
search_inspirationGenerates an image
Generates an image with the model chosen in your Doop settings and returns an asset link.
Try: “Generate a soft gradient hero image.”
Write ·
generate_imageUploads an image to the canvas
Stores an image (up to 5 MB) from a link, a one-time local upload URL or inline data, and returns a permanent public link. A local file needs the assistant to run a curl command in your shell.
Try: “Upload this logo from https://example.com/logo.png.”
Write ·
upload_assetLooks at a public web page
Reads a public page and returns a desktop screenshot and visible text without changing the canvas.
Try: “Look at stripe.com and describe its layout.”
Network ·
view_websiteImports a web page as an editable frame
Fetches one public URL and places it on the canvas as an editable HTML snapshot.
Try: “Import the Linear homepage as a reference frame.”
Write ·
import_webpageLists your Linear tickets
Read only. Lists open Linear tickets through your Linear connection in Doop, newest first. Needs Linear connected on the Integrations page.
Try: “Show my open Linear tickets.”
Network ·
list_linear_issuesReads one Linear ticket
Read only. Returns a ticket and its description by id or identifier such as ENG-123.
Try: “Read ENG-123 and design the screen it describes.”
Network ·
get_linear_issue
Read from the source code
Permissions
high risk · 5 things to watch
High risk
The assistant can replace, restore and delete frames and style guides on canvases you can edit, and it fetches images and web pages from the internet. Use it on canvases you can afford to change, and check the version history if a design is overwritten.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
It can delete frames and overwrite designs
Tools delete frames and pages and replace a frame's HTML. Frame versions are kept, so check the history and use restore before assuming work is gone. github.com
It acts as you on every canvas you can edit
The assistant works under your account and has your access to canvases and workspaces. Connect it only to an assistant you trust with them. github.com
Tool descriptions steer the assistant
The guide tool is described as something to load once before using the others, and the inspiration search is called the required first step when writing a brief. Expect the assistant to call them first. github.com
Uploads can need a local command
For a local file, the upload tool returns a curl command the assistant runs in your shell. Review it before it runs. github.com
Linear tickets are treated as outside text
The Linear tools are read-only, and ticket text is described as source material, not instructions that override you. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | No read-only mode is documented. About half of the tools only read, but frame, guideline and canvas tools change data. |
|---|---|
| Talks to | doop.design (or your own Doop server). Pexels, Iconify, Brandfetch and public web pages, via the Doop server |
| Sign-in and keys | OAuth sign-in in the browser; your AI app stores the token. Headless clients can use an agent key from Settings, sent as a bearer header. |
| Scopes |
|
Questions
Is Doop official?
Yes. The MCP server is built into Doop's own repo (kgoedecke/doop) and also runs on the hosted doop.design. It is licensed AGPL-3.0.
What is the Doop MCP server URL?
https://doop.design/mcp for the hosted version, from the repo's plugin config. If you run Doop yourself, the README uses http://localhost:4300/mcp in local development.
Does it need an API key?
No for most apps. You sign in with your Doop account in the browser through OAuth. Headless tools such as n8n or CI use an agent key from Settings sent as a bearer header.
Which apps does it work with?
The README names Claude Code, Claude, Codex, ChatGPT, Cursor and OpenCode, and any other MCP client over OAuth or an agent key. ChatGPT and the Claude web connector need a public HTTPS address, not localhost.
Can I self-host it?
Yes. Clone the repo and run bun run dev, or use docker compose up for the production build. The MCP endpoint then sits on your own server.
Can it run read-only?
No. No read-only mode is documented. Many tools only read, but others create, replace and delete frames.
Can it delete my designs?
It can delete frames and pages and replace a frame's design. Earlier frame versions are kept and can be brought back with the restore tool, but deleted frames may not come back.
Do I need a built-in Doop Agent or my own model?
No. The assistant you connect does the designing. The built-in Doop Agent is a separate option that runs on a model account you connect in Settings.
Does the tool list match a release?
Yes. The 40 tools match the v0.12.0 release: 38 are registered in server/mcp.ts and 2 Linear tools come from the Linear extension. The mcp.ts file is identical on main.
Do the Linear tools work out of the box?
No. list_linear_issues and get_linear_issue need Linear connected to your Doop account on the Integrations page first. Both are read-only.
Information
updated Nov 2, 2026
- Publisher
- Official
- Transport
- Streamable HTTP
- Auth
- OAuth
- License
- AGPL-3.0
- Last commit
- Oct 31, 2026
- Open issues
- 25
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 6Hide
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com