codex-tldraw
Generates tldraw board diagrams from repository analysis, appending workflow diagrams to .tldr files for viewing in tldraw.
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., "@codex-tldrawDiagram the current repository's product workflow."
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.
codex-tldraw-mcp
A Codex stdio MCP server that generates repo-local tldraw diagrams and checks trackable code graphs for drift.

Quick Start
Add the server to Codex:
codex mcp add codex-tldraw -- npx -y codex-tldraw-mcpThen ask Codex to diagram the current repo:
Use codex-tldraw to diagram this repo.Or ask for a diagram directly:
Use codex-tldraw to draw a password reset state machine.Create a trackable JavaScript or TypeScript module graph:
Use codex-tldraw to create a code graph for this repo.After the code changes, compare it with the saved graph:
Use codex-tldraw to preview code graph drift, then mark stale elements.The default output is:
<repo>/boards/main.tldrOpen the generated board in a tldraw-compatible viewer.
Related MCP server: mcp-codex-dev
What You Get
A repo-local
.tldrboard that stays with the project it explains.A user-facing product workflow inferred from package metadata and source text.
A prompt-driven offline canvas API for drawing workflows, state machines, plans, and architecture sketches that are not tied to repo scanning.
A trackable JavaScript and TypeScript module/import graph with drift detection.
Red markers for stale nodes and edges, orange markers for changed modules, and a report of new elements.
tldraw steps and arrows laid out left to right.
Non-destructive updates: existing boards get the next diagram appended to the right.
MCP resources for listing boards and reading board summaries.
For a handwriting font app, the workflow may be inferred as:
User writes alphabet on paper -> User takes a photo of the paper -> User uploads the image -> AI generates a font -> User downloads a .ttf fileManual Configuration
If you prefer editing Codex MCP config directly:
[mcp_servers.codex-tldraw]
command = "npx"
args = ["-y", "codex-tldraw-mcp"]Tools
diagram_repo: scans a repo and appends a product workflow diagram to<repo>/boards/<boardName>.tldr.draw_canvas: appends a prompt-provided workflow, state machine, architecture sketch, or plan to<repo>/boards/<boardName>.tldr.diagram_code_graph: scans repository-local JavaScript and TypeScript modules and appends a trackable import graph.compare_code_graph: previews drift or marks changed and stale elements on an existing trackable code graph.list_boards: lists boards under a repo'sboards/directory.read_board_summary: summarizes generated diagrams and shape counts.
Each tool accepts an optional repoPath. Relative paths are resolved from the MCP server working directory.
Board resources list and read boards from the most recent repoPath used by a tool call. Before any tool call, resources default to the MCP server working directory.
Code Graph Drift
diagram_code_graph stores stable repository-relative identities and fingerprints in MCP-owned shape metadata. Each source module becomes a node. Static imports, dynamic imports, re-exports, and CommonJS require calls between repository modules become edges.
Run compare_code_graph after the repository changes. Preview mode is the default and does not write the board:
Compare the current code with the newest code graph on boards/main.tldr.To update the board, ask Codex to apply the drift markers or pass applyMarkers: true. The comparison uses four states:
unchanged: the stored identity and fingerprint still match.changed: the module still exists, but its exports or local import relationships changed.stale: the board contains an element that no longer exists in the current code graph.new: the current graph contains an element that is absent from the board.
Stale elements become red and dashed. Changed modules become orange and dashed. New elements appear in the tool result; v0.4.0 does not insert or rearrange them. Re-running the comparison restores the original generated style when code matches again.
The comparison changes only MCP-generated graph styling and metadata. It preserves positions, sizes, labels, manual shapes, and other diagrams on the board, and it restores each element's prior color when drift clears. Boards created by diagram_repo, draw_canvas, or an older release do not contain trackable code-graph metadata; create a graph with diagram_code_graph before comparing drift.
The v0.4.0 scanner supports .js, .jsx, .mjs, .cjs, .ts, .tsx, .mts, and .cts modules. It reports unresolved relative imports and counts external imports without drawing external packages. It models module/import relationships, not runtime call graphs.
Prompt-Driven Diagrams
draw_canvas does not scan source files. The current repository is only the storage location for the generated board.
Example prompts:
Use codex-tldraw to draw the auth flow:
Visitor opens login -> chooses email or SSO -> completes MFA -> lands in dashboard.Use codex-tldraw to make a state machine for password reset:
Idle -> Reset requested -> Email sent -> Token verified -> Password updated.Use codex-tldraw to append an architecture diagram for this plan:
Web app calls API gateway, API gateway calls worker queue, worker writes generated files to object storage.Feedback
This project is early and feedback is useful. Please open an issue if:
The generated workflow misses the real product flow.
A board does not open in your tldraw-compatible viewer.
Code graph drift reports an incorrect module or import relationship.
You have a messy repo where a PM and engineer need a clearer shared map.
Use the GitHub issue templates for bugs, feature requests, and real-world examples.
Why This Exists
This project is snapshot-only. It does not control a live browser canvas or provide live collaboration. It writes board files to the repository being diagrammed so a tldraw-compatible viewer can open them later.
The official tldraw MCP App is designed for hosts that can render an interactive tldraw canvas inside the chat context. In Codex Desktop, tool discovery worked in testing, and the tldraw search tool returned Editor API details, shape types, and helpers. The live exec path did not work: every call timed out after 30 seconds, including a read-only call to count the current page shapes.
That failure mode suggested a host compatibility gap, not a tldraw file format problem. Codex can reliably call local stdio MCP tools and inspect generated files, but it does not currently provide the same embedded interactive MCP App canvas path used by hosts such as Cursor.
This server is the Codex-first fallback. Instead of trying to drive a live canvas, it generates .tldr snapshots on disk through a normal stdio MCP tool call. The result is less interactive, but it works reliably in Codex and keeps the generated board with the repository it explains.
Security
This is a local filesystem tool. It reads source files from repoPath and writes .tldr files under repoPath/boards.
To restrict access to specific directories, set TLDRAW_MCP_ALLOWED_ROOTS to a path-delimited allowlist:
[mcp_servers.codex-tldraw]
command = "npx"
args = ["-y", "codex-tldraw-mcp"]
env = { TLDRAW_MCP_ALLOWED_ROOTS = "/Users/me/dev:/Users/me/work" }When the allowlist is set, repoPath must resolve inside one of those roots.
Generated .tldr files do not store absolute local repository paths in shape metadata. Trackable code graphs store repository-relative source paths.
Local Development
This repo uses Bun for development:
bun install
bun run build
bun run smokeRun the server from source:
bun run devUse a local build in Codex:
[mcp_servers.codex-tldraw]
command = "node"
args = ["/absolute/path/to/codex-tldraw-mcp/dist/index.js"]Publish
Build, test, and inspect the package contents:
bun install --frozen-lockfile
bun run build
bun run smoke
bun run check:packagePublishing is handled by .github/workflows/publish-npm.yml when a GitHub Release is published. The npm trusted publisher must allow jananadiw/codex-tldraw-mcp, workflow publish-npm.yml, with no GitHub environment and the publish action enabled. The workflow uses GitHub OIDC and does not require an npm token.
Use the workflow's dry_run dispatch option to validate a release without publishing it.
The package includes MCP Registry metadata:
package.jsondeclaresmcpName.server.jsondescribes the npm stdio package.
After the workflow publishes and the npm package version is available, authenticate and publish the registry metadata:
mcp-publisher login github
mcp-publisher publishVerify the registry entry:
curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.jananadiw/codex-tldraw-mcp"This server cannot be installed
Maintenance
Related MCP Servers
- AlicenseAqualityDmaintenanceA minimal MCP server for AI-driven canvas manipulation and visualization using tldraw. It enables AI clients to programmatically create, update, and manage shapes, flowcharts, and frames on a live interactive canvas.Last updated91MIT
- AlicenseAqualityFmaintenanceAn MCP server that integrates Codex CLI into Claude Code workflows for code writing, execution, and review with session management. It features real-time progress monitoring via a local HTTP dashboard and supports detailed configuration for various coding tools.Last updated631165MIT
- FlicenseAqualityBmaintenanceMinimal MCP server for editing tldraw .tldr files via JSON manipulation. Headless, no browser needed.Last updated181
- AlicenseBqualityBmaintenanceMCP server that enables LLMs to create and edit draw.io diagrams using high-level intent commands, with automatic layout and styling.Last updated4243MIT
Related MCP Connectors
MCP server for generating rough-draft project plans from natural-language prompts.
Official Miro MCP server - Supports context to code and creating diagrams, docs, and data tables.
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
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/jananadiw/codex-tldraw-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server