# CodePic MCP server

AI agent draws editable hand-drawn diagrams (flowchart, ER, architecture) via MCP, not static images

## Links
- Registry page: https://www.getdrio.com/mcp/io-github-abelce-codepic
- Repository: https://github.com/abelce/codepic-mcp

## Install
- Endpoint: https://codepic.cc/api/mcp/mcp
- Auth: Auth required by registry metadata

## Setup notes
- Remote header: Authorization (required; secret)
- The upstream registry signals required auth or secrets.
- Remote endpoint: https://codepic.cc/api/mcp/mcp
- Header: Authorization

## Tools
- get_shape_docs (Get Shape Docs) - Return the full CodePic shape reference — all element types, their fields, data payloads, and JSON examples. Call this before create_diagram or update_diagram whenever you need to use an unfamiliar shape type or set type-specific data fields (e.g. select options, triangle direction, callout tail). No authentication required. Endpoint: https://codepic.cc/api/mcp/mcp
- list_templates (List Templates) - List all available CodePic diagram templates. Use this ONLY when the user has explicitly asked to browse, list, or pick from templates (e.g. "show me templates", "列出模板"). Do NOT call this as a preparatory step when the user just described a diagram they want — in that case go straight to `create_diagram`. Discovering slugs here is only meaningful before a user-confirmed `create_from_template` call. Endpoint: https://codepic.cc/api/mcp/mcp
- create_from_template (Create from Template) - Create a new CodePic diagram from a predefined template. Requires API Key authentication. Returns a public view URL and edit URL.

**STRICT USAGE RULE — READ BEFORE CALLING:**
Only call this tool when the user has **explicitly** asked to use a template. Explicit signals include phrases like: "use a template", "from template", "用模板", "从模板创建", "list templates and pick one", or the user directly naming/selecting a template slug.

If the user merely describes a diagram they want (e.g. "draw an A/B test flowchart", "帮我画一个登录流程", "给我做一个系统架构图"), **DO NOT** call this tool. Call `create_diagram` instead and build the diagram from the user's description. Never silently substitute a template for a described diagram — the user will get a generic result that does not match what they asked for.

When responding to the user, present the returned URL as a clickable markdown link (e.g. `[Open in CodePic →](URL)`) so the user can click it directly in their AI client (Cursor / Claude / etc.). Endpoint: https://codepic.cc/api/mcp/mcp
- create_diagram (Create Diagram) - Create a custom CodePic hand-drawn style diagram by specifying nodes and edges. Requires API Key authentication. Returns a public view URL.

**THIS IS THE DEFAULT TOOL FOR ANY USER-DESCRIBED DIAGRAM.** Whenever the user describes a diagram they want ("draw an A/B test flowchart", "帮我画一个登录流程", "a system architecture with a load balancer and 3 servers", etc.), build it here from their description. Do NOT fall back to `create_from_template` / `list_templates` unless the user explicitly asked for a template.

When responding to the user, present the returned URL as a clickable markdown link (e.g. `[Open in CodePic →](URL)`) so the user can click it directly in their AI client (Cursor / Claude / etc.).

**Container nesting (IMPORTANT — use whenever possible):**
- Set `parentId` on a node to nest it inside another node. ANY node type can be a container.
- The parent automatically becomes draggable-as-a-group and users can keep dropping elements into it.
- Good container types: `frame` (clean group box), `rect`/`rounded-rect` (module boundary), `package` (UML package), `swimlane` (process lane).
- Use absolute canvas coordinates for all nodes — child coordinates are auto-converted to parent-relative.
- **Rule**: whenever 2+ nodes logically belong to the same module / component / region, create a container node first and set `parentId` on each child.

**Design tips for beautiful diagrams:**
- Use semantic types: `button-primary` for CTA buttons (auto blue), `diamond` for decisions
- Pick a color palette and apply it consistently — light fill + darker stroke of the same hue:
  • Blue:   fillColor #e3f2fd / #bbdefb, strokeColor #1565c0, fontColor #1565c0 (or #ffffff on dark fill)
  • Green:  fillColor #e8f5e9 / #c8e6c9, strokeColor #2e7d32, fontColor #1b5e20
  • Purple: fillColor #f3e5f5 / #e1bee7, strokeColor #6a1b9a, fontColor #4a148c
  • Neutral: fillColor #f8fafc / #f1f5f9, strokeColor #475569, fontColor #1e293b
- Each semantic group (decisions, processes, I/O) should share a fill color to create visual hierarchy
- Dark fill (e.g. #1565c0, #ef4444) → fontColor #ffffff; light fill → fontColor #111827 Endpoint: https://codepic.cc/api/mcp/mcp
- get_diagram (Get Diagram) - Fetch the current state of an existing CodePic diagram. Returns a compact summary of all elements with their IDs, types, positions, and parent-child relationships. Use this before update_diagram when you need to: add nested children to existing containers, make targeted edits to specific elements, or understand the current structure. Requires API Key authentication. Endpoint: https://codepic.cc/api/mcp/mcp
- update_diagram (Update Diagram) - Update an existing CodePic diagram. You can rename it, replace all nodes/edges, or add/remove individual nodes and edges. Requires API Key authentication.

When responding to the user, present the returned URL as a clickable markdown link (e.g. `[Open in CodePic →](URL)`) so the user can click it directly in their AI client (Cursor / Claude / etc.). Endpoint: https://codepic.cc/api/mcp/mcp

## Resources
Not captured

## Prompts
Not captured

## Metadata
- Owner: io.github.abelce
- Version: 1.0.0
- Runtime: Streamable Http
- Transports: HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Jun 16, 2026
- Source: https://registry.modelcontextprotocol.io
