Is the Abelce Codepic MCP server down?

mcp-registry/io.github.abelce/codepic · v0.1.0

Also listed as glama/abelce/codepic

healthy
Last checked 2026-10-26 13:30 UTC · handshake 251ms

As of 2026-10-26 13:30 UTC, the Abelce Codepic MCP server is up with a Glimind reliability score of 100/100 (grade A). Over the last 30 days it answered 100% of Glimind's liveness checks. It had 1 outage in 90 days, with a median recovery of 2 minutes.

uptime (30d checks)
100%
checks observed
4,852
outages (90d)
1
tools
7

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

Install Abelce Codepic MCP server

Add to Cursor Add to VS Code

Claude Code

claude mcp add --transport http abelce-codepic-mcp-server https://codepic.cc/api/mcp/mcp

Claude Desktop · Windsurf · Cline (mcpServers JSON)

{
  "mcpServers": {
    "abelce-codepic-mcp-server": {
      "type": "http",
      "url": "https://codepic.cc/api/mcp/mcp"
    }
  }
}

Third-party server, listed as discovered. Review its source before installing.

Agent-readiness: C (77/100)

C (77/100): 0 error(s), 3 warning(s) across 7 tool(s); ~5,836 tokens of tool definitions.
Scores higher than 13% of 15,751 MCP servers Glimind has audited.
Its tool list costs an agent ~5,836 tokens per session — more than 60% of servers.
75 → 77 since 2026-10-17
no tool-poisoning patterns
Schemas100
Descriptions100
Safety hints0
Token cost76
Client compatibility70
Protocol100
Reliability100
Stability100

What to fix (4)

2 tool definition(s) exceed ~1,200 tokens each (largest: update_diagram, ~2,447).

Move long reference material out of descriptions (link a doc or expose a resource), drop repeated examples, and collapse large enums. Trimming these to ~600 tokens saves ~3,586 tokens every session. How to fix →

Tools: update_diagram, create_diagram · saves ~3,586 tokens/session

7 of 7 tool(s) carry no readOnlyHint/destructiveHint annotations.

Annotate read-only tools with {"readOnlyHint": true}. Agents and gateways can then run them without a confirmation prompt, and route around destructive ones. How to fix →

Tools: create_diagram, create_from_template, get_diagram, get_shape_catalog, get_shape_docs and 2 more

3 tool(s) look like they change state (create/send/delete/pay…) but declare no destructiveHint.

Set annotations {"readOnlyHint": false, "destructiveHint": true|false, "idempotentHint": …}. Clients use these to ask the user before a side effect and to auto-approve safe reads. How to fix →

Tools: create_diagram, create_from_template, update_diagram

No tool declares an outputSchema.

Declare outputSchema and return structuredContent (MCP 2025-06-18+). Agents can then parse results without guessing, and chain tools reliably. How to fix →

Auto-fix: 7 corrected tool definitions

Paste-ready definitions with the problems above fixed. Changes marked verify need a human look. All of them as JSON: /v1/readiness/mcp-registry%2Fio.github.abelce%2Fcodepic/fixes

create_diagram 1 change
{
  "name": "create_diagram",
  "description": "Create a custom CodePic hand-drawn style diagram by specifying nodes and edges. Requires API Key authentication. Returns a public view URL.\n\n**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 ",
  "inputSchema": {
    "type": "object",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "required": [
      "name",
      "nodes"
    ],
    "properties": {
      "name": {
        "type": "string",
        "description": "Document name"
      },
      "edges": {
        "type": "array",
        "items": {
          "type": "object",
          "required": [
            "id",
            "sourceId",
            "targetId"
          ],
          "properties": {
            "id": {
              "type": "string",
              "description": "Unique edge ID"
            },
            "label": {
              "type": "string",
              "description": "Edge label text"
            },
            "sourceId": {
              "type": "string",
              "description": "Source node ID"
            },
            "targetId": {
              "type": "string",
              "description": "Target node ID"
            }
          },
          "additionalProperties": false
        },
        "description": "Array of connector edges between nodes"
      },
      "nodes": {
        "type": "array",
        "items": {
          "type": "object",
          "required": [
            "id",
            "text",
            "x",
            "y"
          ],
          "properties": {
            "x": {
              "type": "number",
              "description": "X position"
            },
            "y": {
              "type": "number",
              "description": "Y position"
            },
            "id": {
              "type": "string",
              "description": "Unique node ID"
            },
            "data": {
              "type": "object",
              "description": "Type-specific state data. Call get_shape_docs for the full field list. Examples: select→{options:[{id,label}],selectedId,open}, checkbox/radio→{checked}, switch→{on}, slider→{min,max,value}, input/textarea→{placeholder}, link→{href}, icon→{iconName}, triangle→{triangleDirection:'up'|'down'|'left'|'right'}, callout→{calloutTailX,calloutBodyRatio}.",
              "additionalProperties": {}
            },
            "name": {
              "type": "string",
              "maxLength": 80,
              "description": "Stable semantic name for MCP/Agent understanding, e.g. 'payment-service'."
            },
            "tags": {
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 48,
                "minLength": 1
              },
              "maxItems": 12,
              "description": "Instance-level semantic tags for future MCP/Agent reads, e.g. ['backend','critical','pii']. Use get_shape_catalog tags for shape selection; use this field for the node's role in this diagram."
            },
            "text": {
              "anyOf": [
                {
                  "type": "object",
                  "required": [
                    "kind",
                    "version",
                    "blocks"
                  ],
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "rich-text"
                    },
                    "blocks": {
                      "type": "array",
                      "items": {
                        "anyOf": [
                          {
                            "type": "object",
                            "required": [
                              "type",
                              "runs"
                            ],
                            "properties": {
                              "runs": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "text"
                                  ],
                                  "properties": {
                                    "href": {
                                      "type": "string",
                                      "format": "uri"
                                    },
                                    "text": {
                                      "type": "string"
                                    },
                                    "style": {
                                      "type": "object",
                                      "properties": {
                                        "fontSize": {
                                          "type": "number",
                                          "exclusiveMinimum": 0
                                        },
                                        "fontColor": {
                                          "type": "string",
                                          "minLength": 1
                                        },
                                        "fontStyle": {
                                          "type": "string",
                                          "minLength": 1
                                        },
                                        "fontFamily": {
                                          "type": "string",
                                          "minLength": 1
                                        },
                                        "fontWeight": {
                                          "type": "string",
                                          "minLength": 1
                                        },
                                        "textDecoration": {
                                          "enum": [
                                            "none",
                                            "underline",
                                            "line-through"
                                          ],
                                          "type": "string"
                                        }
                                      },
                                      "additionalProperties": false
                                    }
                                  },
                                  "additionalProperties": false
                                },
                                "minItems": 1
                              },
                              "type": {
                                "type": "string",
                                "const": "paragraph"
                              },
                              "textAlign": {
                                "enum": [
                                  "left",
                                  "center",
                                  "right"
                                ],
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          },
                          {
                            "type": "object",
                            "required": [
                              "type",
                              "listType",
                              "runs"
                            ],
                            "properties": {
                              "runs": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/properties/nodes/items/properties/text/anyOf/0/properties/blocks/items/anyOf/0/properties/runs/items"
                                },
                                "minItems": 1
                              },
                              "type": {
                                "type": "string",
                                "const": "list-item"
                              },
                              "level": {
                                "type": "integer",
                                "maximum": 5,
                                "minimum": 0
                              },
                              "listType": {
                                "enum": [
                                  "ordered",
                                  "unordered"
                                ],
                                "type": "string"
                              },
                              "textAlign": {
                                "enum": [
                                  "left",
                                  "center",
                                  "right"
                                ],
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        ]
                      },
                      "minItems": 1
                    },
                    "version": {
                      "type": "number",
                      "const": 1
                    }
                  },
                  "additionalProperties": false
                },
                {
                  "type": "string"
                }
              ],
              "description": "Text content. Use RichTextContent for normal shapes; code/input use a raw string; frame uses a string title."
            },
            "type": {
              "enum": [
                "rect",
                "ellipse",
                "circle",
                "diamond",
                "parallelogram",
                "document",
                "cylinder",
                "hexagon",
                "triangle",
                "callout",
                "cloud",
                "terminator",
                "cross",
                "off-page-connector",
                "actor",
                "note",
                "component",
                "end-node",
                "start-node",
                "fork-bar",
                "predefined-process",
                "delay",
                "manual-input",
                "stored-data",
                "text",
                "textarea",
                "link",
                "icon",
                "image",
                "frame",
                "package",
                "swimlane",
                "rounded-rect",
                "table",
                "button",
                "button-primary",
                "button-secondary",
                "button-destructive",
                "button-ghost",
                "input",
                "select",
                "checkbox",
                "radio",
                "switch",
                "slider",
                "progress",
                "server",
                "load-balancer",
                "firewall",
                "container",
                "msg-queue",
                "queue",
                "router",
                "lambda",
                "cache",
                "pod",
                "browser-frame",
                "mobile-frame",
                "code"
              ],
              "type": "string",
              "description": "Shape type (default: rect). Call get_shape_docs for full per-type field reference. Common: rect/rounded-rect=card, diamond=decision, parallelogram=I/O, cylinder=database, hexagon=service, actor=user, frame=container group, button-primary=blue CTA, button-destructive=danger action. Architecture: server, load-balancer, firewall, container, msg-queue, router, lambda, cache, pod. UI wireframe: input, select, checkbox, radio, switch, slider. Mockups: browser-frame, mobile-frame. Code: code (syntax-highlighted code block, set data.language and data.theme; calculate width/height from text content: charW=fontSize*0.6, width=lineNumW+32+maxLineChars*charW, height=24+lineCount*fontSize*lineHeight)."
            },
            "width": {
              "type": "number",
              "description": "Width (default: 200)"
            },
            "height": {
              "type": "number",
              "description": "Height (default: 80)"
            },
            "corners": {
              "type": "array",
              "items": [
                {
                  "type": "number"
                },
                {
                  "type": "number"
                },
                {
                  "type": "number"
                },
                {
                  "type": "number"
                }
              ],
              "maxItems": 4,
              "minItems": 4,
              "description": "Border radius [topLeft, topRight, bottomRight, bottomLeft] (default: [0,0,0,0]). Applies to ALL shape types — use to round corners for a more polished look. Rect/frame/input/select/button: [8,8,8,8]–[16,16,16,16]. Rough style (roughness≥1): small corners (4–8). Smooth (roughness:0): larger corners (12–20). Other shapes (diamond, hexagon, etc.) can also use corners for subtle rounding."
            },
            "opacity": {
              "type": "number",
              "maximum": 1,
              "minimum": 0,
              "description": "Opacity 0-1 (default: 1)"
            },
            "fontSize": {
              "type": "number",
              "description": "Font size (default: 16)"
            },
            "parentId": {
              "type": "string",
              "description": "Parent container node ID. Nest this node inside another node (any type can be a container). The parent automatically becomes containable=true so users can keep dragging elements into it. Call get_shape_catalog with tag='container-capable' to choose a suitable parent shape. Provide x/y as absolute canvas coordinates — they are auto-converted to parent-relative coordinates. WHEN TO USE: whenever multiple nodes logically belong to the same module, region, or component, wrap them in a shared container and set parentId on each child. This lets users reposition the whole group and drag additional elements into it."
            },
            "rotation": {
              "type": "number",
              "description": "Rotation angle in radians (default: 0)"
            },
            "fillColor": {
              "type": "string",
              "description": "Fill color, e.g. '#e3f2fd'"
            },
            "fillStyle": {
              "enum": [
                "none",
                "solid",
                "hachure",
                "cross-hatch"
              ],
              "type": "string",
              "description": "Fill style (default: solid)"
            },
            "fontColor": {
              "type": "string",
              "description": "Text color (default: '#333333')"
            },
            "fontStyle": {
              "enum": [
                "normal",
                "italic"
              ],
              "type": "string",
              "description": "Font style (default: 'normal')"
            },
            "roughness": {
              "type": "number",
              "maximum": 3,
              "minimum": 0,
              "description": "Hand-drawn roughness 0-3, 0=smooth, 3=very rough (default: 1)"
            },
            "textAlign": {
              "enum": [
                "left",
                "center",
                "right"
              ],
              "type": "string",
              "description": "Horizontal text alignment (default: 'center')"
            },
            "fontFamily": {
              "type": "string",
              "description": "Font family (default: 'Inter, sans-serif')"
            },
            "fontWeight": {
              "enum": [
                "normal",
                "bold"
              ],
              "type": "string",
              "description": "Font weight (default: 'bold')"
            },
            "lineHeight": {
              "type": "number",
              "description": "Line height multiplier (default: 1.2)"
            },
            "description": {
              "type": "string",
              "maxLength": 500,
              "description": "Concise semantic purpose of this node, independent of its visible text."
            },
            "strokeColor": {
              "type": "string",
              "description": "Stroke color, e.g. '#1565c0'"
            },
            "strokeWidth": {
              "type": "number",
              "description": "Stroke width in px (default: 2)"
            },
            "verticalAlign": {
              "enum": [
                "top",
                "center",
                "bottom"
              ],
              "type": "string",
              "description": "Vertical text alignment (default: 'center')"
            }
          },
          "additionalProperties": false
        },
        "description": "Array of shape nodes to place on the canvas"
      },
      "backgroundColor": {
        "type": "string",
        "description": "Canvas background color (default: '#f8f9fa')"
      }
    },
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": false,
    "destructiveHint": false,
    "idempotentHint": false
  },
  "title": "Create Diagram"
}
create_from_template 1 change
{
  "name": "create_from_template",
  "description": "Create a new CodePic diagram from a predefined template. Requires API Key authentication. Returns a public view URL and edit URL.\n\n**STRICT USAGE RULE — READ BEFORE CALLING:**\nOnly 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.\n\nIf the user merely describes a diagram they want (e.g. \"draw an A/B t",
  "inputSchema": {
    "type": "object",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "required": [
      "slug"
    ],
    "properties": {
      "name": {
        "type": "string",
        "description": "Document name (defaults to template name)"
      },
      "slug": {
        "type": "string",
        "description": "Template slug (e.g. 'flowchart', 'erd', 'kanban'). Call list_templates to see all."
      },
      "locale": {
        "enum": [
          "en",
          "zh"
        ],
        "type": "string",
        "description": "Language for template content (default: en)"
      }
    },
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": false,
    "destructiveHint": false,
    "idempotentHint": false
  },
  "title": "Create from Template"
}
get_diagram 1 change
{
  "name": "get_diagram",
  "description": "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.",
  "inputSchema": {
    "type": "object",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "required": [
      "documentId"
    ],
    "properties": {
      "documentId": {
        "type": "string",
        "description": "Document ID to fetch"
      }
    },
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": true
  },
  "title": "Get Diagram"
}

Get alerted

Get an email or webhook when this server's readiness drops by 10+ points, tool-poisoning text appears, or a tool breaks:

curl -X POST https://glimind.com/v1/subscriptions -H 'content-type: application/json' -d '{"tools":["mcp-registry/io.github.abelce/codepic"],"email":"[email protected]"}'

Agents: watch_tool({"toolId": "mcp-registry/io.github.abelce/codepic"}) over MCP.

Passed

Largest tool definitions

Static checks of the advertised tools/list (schema, descriptions, annotations, tool-poisoning patterns, names, size) plus observed protocol, uptime, latency and contract changes. Read-only: no tool is ever called. Weights: schema 15, docs 20, safety 15, efficiency 15, compatibility 15, protocol 5, reliability 10, stability 5. Token counts are estimates (~3.6 characters per token).

Operator? Fix these, then re-check live. Embed the readiness badge:

Markdown
[![MCP agent-readiness](https://glimind.com/v1/readiness/badge/mcp-registry%2Fio.github.abelce%2Fcodepic.svg)](https://glimind.com/server/mcp-registry%2Fio.github.abelce%2Fcodepic?ref=badge)
HTML
<a href="https://glimind.com/server/mcp-registry%2Fio.github.abelce%2Fcodepic?ref=badge"><img src="https://glimind.com/v1/readiness/badge/mcp-registry%2Fio.github.abelce%2Fcodepic.svg" alt="MCP agent-readiness"></a>
reStructuredText
.. image:: https://glimind.com/v1/readiness/badge/mcp-registry%2Fio.github.abelce%2Fcodepic.svg
   :target: https://glimind.com/server/mcp-registry%2Fio.github.abelce%2Fcodepic?ref=badge
   :alt: MCP agent-readiness

Tool-definition log

Glimind records every version of this server's tool definitions in a signed, append-only transparency log. Current manifest sha256:67365a89d0262bc0…, first seen 2026-10-17, included at leaf 874 of 73,142. Version history · verify what your client received.

Tools (7)

Compare: most reliable media servers · most reliable productivity servers · most reliable files servers · most reliable knowledge servers

Know before your agent calls it

Glimind tells agents whether a server is up right now and how to call it, then fails over to a live alternative when it isn't.

Add Glimind — free, no signup:

Add to Cursor Add to VS Code

Claude Code

claude mcp add --transport http glimind https://glimind.com/mcp

Claude Desktop · Windsurf · Cline (mcpServers JSON)

{
  "mcpServers": {
    "glimind": {
      "type": "http",
      "url": "https://glimind.com/mcp"
    }
  }
}

FAQ

Is the Abelce Codepic MCP server down right now?

As of 2026-10-26 13:30 UTC, the Abelce Codepic MCP server is up with a Glimind reliability score of 100/100 (grade A). Over the last 30 days it answered 100% of Glimind's liveness checks. It had 1 outage in 90 days, with a median recovery of 2 minutes.

How many tools does Abelce Codepic MCP server provide?

Abelce Codepic MCP server advertises 7 tools, including create_diagram, create_from_template, get_diagram, get_shape_catalog, get_shape_docs.

How do I install Abelce Codepic MCP server?

Point your MCP client at this streamable-http endpoint: https://codepic.cc/api/mcp/mcp

Is the Abelce Codepic MCP server safe to connect to an AI agent?

Glimind scanned all 7 tool definitions for tool-poisoning patterns — hidden or invisible characters, instructions that override the model, concealment from the user, requests to read credential or MCP config files, conversation exfiltration and cross-tool shadowing — and found none. This checks what the server tells the model, not what its code does; review the source before granting access to sensitive data.

Operator of Abelce Codepic MCP server?

Status page: 90-day uptime, every outage and how long it lasted.

Claim this listing to get the Verified operator marker, a remediation checklist and owner analytics, or embed the live badge from any of the tool pages above. Maintainers: alerts, deploy attestation and monthly reports.

Status is an automated estimate from Glimind's liveness checks (handshake and tool listing only; no tool is ever called) and may lag or differ from your network. Glimind is not affiliated with this server or its operator. Operator? Request a correction or opt out at https://glimind.com/opt-out.

Feedback
Help us improve