tldraw MCP for Claude Code: What Works and What Doesn’t

tldraw MCP for Claude Code: What Works and What Doesn’t

The tldraw MCP is a hosted server that promises to let an AI agent draw on a live tldraw canvas. We added it to Claude Code, asked Claude to draw a small login flow, and checked what came back. The server connected without any sign-in, but we never got to see a canvas, and this guide explains why.

This guide is part of our Claude Code tutorials. Find more servers in our MCP servers directory.

Tested with Claude Code v2.1.322 on November 11, 2026. The server is hosted at https://tldraw-mcp-app.tldraw.workers.dev/mcp, so there is no package to pin.

It comes from the apps/mcp-app folder of github.com/tldraw/tldraw, and we read that folder at commit b80eb94. Its server.json lists version 0.1.0.

The server connected and accepted our drawing code, but Claude Code only ever got back a canvas ID, never the shapes.

Quick Summary: What We Tested

QuestionAnswer
What is it?A hosted MCP server from the tldraw project with a canvas widget and drawing tools
Does it need an account?No. /mcp showed it as connected with “Auth: not signed in”
What did we run?Adding the server, listing its tools, and three drawing and read-back attempts
What did we see?Each exec call returned only {"canvasId": "..."}. We never saw a rendered canvas
Context cost1,322 tokens for the tool definitions, as measured for our directory
Our verdictConnects easily, but in the terminal we could not confirm that anything was drawn

One honest note. We tested only Claude Code in a terminal. The server is built for apps that can show a widget, and we did not test those.

What the tldraw MCP Is and Why It Exists

tldraw is an infinite canvas library for React that many apps use for whiteboards and diagrams. The tldraw team also ships an MCP app that exposes a canvas to AI agents. Its README says it follows the MCP app specification, so it works in clients that support that spec.

MCP is the Model Context Protocol, a standard way to give Claude extra tools. If it is new to you, our MCP guide explains it. Our plugins guide shows how plugins can bundle such servers.

The README describes two parts. A server runs on Cloudflare Workers and keeps canvas snapshots.

A widget is a React app that renders the full canvas inside the host app’s frame.

When the AI calls exec, the widget picks up the code, runs it against the live editor, and reports back.

That design matters for this test. The canvas is not drawn by the server. It is drawn by a widget that must be shown by the app you are chatting in, and a terminal is not that kind of app.

The Six Tools Claude Code Sees

After we added the server, /mcp showed six tools. The README names the roles of five of them, and the two with names starting with an underscore are described as helpers for the widget.

ToolWhat the README says it does
searchQueries the editor API spec so Claude can find methods and shape types
execRuns JavaScript against the live editor in the widget
_exec_callbackApp-only tool the widget uses to return the result of an exec call
read_checkpoint, save_checkpointApp-only tools the widget uses to keep canvas snapshots
_get_canvas_stateA helper listed in /mcp; the README does not describe it

So in practice Claude has two tools it can use on its own: search and exec. Our directory measured the cost of the definitions at 1,322 tokens, which is small.

Claude Code /mcp tools list for the tldraw server showing six tools, three marked read-only
The tools list in /mcp: six tools, three labeled read-only

Is the tldraw MCP Safe to Add?

Before adding any server, ask what it can do and where your data goes. This one is hosted, so anything Claude sends in an exec or search call goes to a Cloudflare Worker run by the tldraw team. Do not draw confidential material on it.

The README says each session is stored in a Durable Object with up to 50 canvas snapshots, and that it deletes itself after seven days without a save. We did not verify that behavior, we only read it.

The /mcp screen labeled three of the six tools as read-only. exec is not labeled read-only, which makes sense because it changes a canvas. The apps/mcp-app folder contains an MIT license file.

We never touched our normal setup. The server was added at local scope inside a throwaway demo folder and removed after the test. The MCP docs explain scopes in detail.

How to Add the tldraw MCP to Claude Code

The project’s README lists a hosted URL, and our directory shows the matching install line. We used local scope so the server only exists in one folder.

claude mcp add --scope local --transport http tldraw https://tldraw-mcp-app.tldraw.workers.dev/mcp

Claude Code printed that it added the server to the local config for the project folder. Then we started claude in that folder and ran /mcp.

Claude Code /mcp detail screen showing the tldraw server connected with Auth not signed in
The server shows as connected and “not signed in”, so no account was needed

No sign-in prompt, no key, and no extra install. If you want the general steps for any server, the MCP quickstart covers them.

What the exec Tool Says It Does

The exec description is worth reading. It says the code runs in the widget, with access to the live editor object. It also tells Claude to use search first and to omit canvasId to create a new canvas.

Claude Code tool detail for tldraw exec with the line about code running in the widget highlighted
The exec description says the code runs in the widget, not on the server

That one sentence explains everything that came next. The tool does not run your drawing code on the server and hand back a picture. It passes the code to a widget and waits for the widget to answer.

Flow diagram: Claude Code sends drawing code to the exec tool, which relies on a canvas widget in an MCP app host, and the reply is only a canvas ID
How a drawing request travels, and where our test stopped

Test 1: Draw a Login Flow

We made a tiny notes file in a demo folder that described a flow: User, Login page, Check password, Dashboard. Then we asked Claude to read it and draw four boxes joined by arrows on a new canvas.

Read notes.md, then use the tldraw MCP to draw that login flow as four boxes joined by arrows on a new canvas. Keep your answer short and tell me exactly what the tool returned.

Claude wrote a short script with a loop that created four rectangles and three arrows, then called exec. It did not call search first, even though the tool description suggests it. The script ended by returning the list of shapes on the page.

Expanded Claude Code transcript showing the exec call and a result containing only canvasId
The raw result of the exec call: a canvas ID and nothing else

The tool returned only {"canvasId": "2dzgrgq2"}. The list of shapes that Claude’s code asked for never came back.

Claude Code answer saying the tool returned only a canvas ID and it cannot confirm the shapes rendered
Claude reported that it could not confirm the boxes or arrows

To its credit, Claude said so plainly. It told us it had not seen the canvas and could not say the four boxes and three arrows rendered correctly.

Test 2: Use search, Then Draw One Rectangle

We simplified the task in a fresh session. We asked Claude to call search, then exec on a new canvas, to create one rectangle labeled Hello and return the list of shapes.

The search call worked. It returned the spec for a rectangle shape, with properties such as w, h, x, y and text. That is the useful half of this server: Claude can look up how to build shapes.

The exec call again returned only a new canvas ID. Claude summarized it well: the rectangle should be on the canvas, but the tool did not confirm it.

Test 3: Read an Existing Canvas Back

The exec description says you can pass an earlier canvasId to keep editing that canvas. So we tried the simplest possible read: pass the ID from Test 2 and return the number of shapes.

Call the tldraw exec tool with canvasId n8vcvmp6 and the code: return editor.getCurrentPageShapes().length. Show me the exact raw result or error, in under 5 lines.
Claude Code transcript where exec on an existing canvas returns only the canvas ID and no shape count
Reading an existing canvas gave an echo of the ID, with no count and no error

The result was the canvas ID again. There was no count and no error message. Three runs in a row gave us the same thing.

Why We Never Saw a Canvas

We can only say what we observed.

The README says the code runs in a widget that the host app shows inside a frame. Claude Code is a terminal, and the Claude Code docs we read do not describe showing MCP app widgets. We saw no widget and no link to a canvas anywhere in the session.

Our best explanation is that no widget was there to run the code and answer back. We cannot prove that from the outside, so treat it as a likely reason and not a confirmed one. What we can confirm is the behavior: accepted calls, a canvas ID, and no shapes.

The README does list a setup for Claude Desktop through its custom connector flow, and it notes that adding a custom connector is not available on the free plan. We did not test that route, so we cannot tell you how the canvas looks there.

Who Should Add the tldraw MCP to Claude Code?

Your situationOur advice
You work in the Claude Code terminal and want a diagram you can seeSkip it for now. We could not confirm any drawing
You only want Claude to look up tldraw editor methodsThe search tool worked, though the tldraw docs may serve you better
You use an app that shows MCP app widgetsThat is the case the server is built for. Test it there, because we did not
You need a diagram inside a terminal workflowAsk Claude for a text diagram in Markdown or an HTML file instead

Common Mistakes

  • Trusting Claude’s summary of a drawing it never saw. Ask what the tool actually returned.
  • Adding the server at user scope for a quick test. Use --scope local so it stays in one folder.
  • Sending private diagrams to a hosted server without checking who runs it.
  • Forgetting to remove it afterward with claude mcp remove tldraw.

Pro Tips

  • End your drawing code with a return, as we did, so you can see right away whether results come back.
  • Ask Claude to quote the raw tool result. It is a quick way to catch a silent failure.
  • Use /mcp to confirm status and see which tools are read-only before you allow a server in a session.

Try It Yourself

Run this in a throwaway folder and see what your own setup returns. Compare it with our result, and remove the server when you are done.

claude mcp add --scope local --transport http tldraw https://tldraw-mcp-app.tldraw.workers.dev/mcp
claude
# inside Claude Code:
Use the tldraw search tool, then the exec tool on a new canvas, to create one rectangle labeled Hello and return the list of shapes. Tell me exactly what each tool returned.
# when finished:
claude mcp remove tldraw

Cheat Sheet

Cheat sheet card with the commands to add, check and remove the tldraw MCP and its main tools
The commands and tools from this guide on one card

Frequently Asked Questions

Does the tldraw MCP need an account or API key?

No. In our test, /mcp showed it connected with “Auth: not signed in”, and we entered no key.

Can Claude Code show the tldraw canvas?

Not in our test. Every exec call returned only a canvas ID, and we saw no canvas in the terminal.

Did Claude actually draw the shapes?

We cannot say. Claude’s code was accepted without an error, but nothing came back to confirm shapes were created.

Does it send my data to a server?

Yes. It is hosted on a Cloudflare Worker, so your drawing code goes to it. Avoid confidential content.

How do I remove it?

Run claude mcp remove tldraw from the same folder where you added it at local scope.

Conclusion

The tldraw MCP is easy to add, needs no account, and its search tool returned useful editor details. But in Claude Code, our three exec tests returned only a canvas ID, so we could not confirm that a single shape was drawn. The server is built around a widget that an app has to show, and a terminal did not give us one. If you want to see a live canvas, try a client that supports MCP app widgets and test it yourself, and for terminal work ask Claude for a text diagram instead.

Next, browse more tested add-ons in our skills directory, or read the Claude overview.

Newsletter

New AI tools in your inbox

The best new tools and the AI news that matters, in one short email. Unsubscribe any time.

Free · No spam · Unsubscribe any time

✓ Looks like you’re subscribed

Loading Google’s sign-up form…

Looks like you’re already subscribed

Thanks for reading! New AI tools and the AI news that matters will land in your inbox.

Not subscribed yet? Refresh the page to load the sign-up form.

The sign-up form couldn’t load. If you use an ad or content blocker, allow news.google.com and reload the page.

Free instant check before you pay. Takes a few seconds.

Scroll to Top