CodePic
Was dieses MCP kann
Creates, retrieves, updates, and exports editable hand-drawn diagrams such as flowcharts, ER diagrams, and system architectures.
Tools
Eingabeschema
{'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â\x86\x92{options:[{id,label}],selectedId,open}, checkbox/radioâ\x86\x92{checked}, switchâ\x86\x92{on}, sliderâ\x86\x92{min,max,value}, input/textareaâ\x86\x92{placeholder}, linkâ\x86\x92{href}, iconâ\x86\x92{iconName}, triangleâ\x86\x92{triangleDirection:'up'|'down'|'left'|'right'}, calloutâ\x86\x92{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 â\x80\x94 use to round corners for a more polished look. Rect/frame/input/select/button: [8,8,8,8]â\x80\x93[16,16,16,16]. Rough style (roughnessâ\x89¥1): small corners (4â\x80\x938). Smooth (roughness:0): larger corners (12â\x80\x9320). 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 â\x80\x94 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}
Eingabeschema
{'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}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['documentId'], 'properties': {'documentId': {'type': 'string', 'description': 'Document ID to fetch'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'tag': {'type': 'string', 'description': 'Filter by one exact AI tag, e.g. container-capable, decision, database, or architecture.'}, 'category': {'enum': ['basic', 'flow', 'container', 'ui', 'architecture', 'misc'], 'type': 'string', 'description': 'Filter by the shape category.'}, 'containerMode': {'enum': ['native', 'adaptive', 'none'], 'type': 'string', 'description': 'Filter by container support. adaptive shapes become containers when they receive children.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'category': {'enum': ['planning', 'design', 'flowchart', 'collaboration', 'engineering'], 'type': 'string', 'description': 'Filter by category'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['documentId'], 'properties': {'name': {'type': 'string', 'description': 'New 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': 'Full replacement of all edges'}, '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â\x86\x92{options:[{id,label}],selectedId,open}, checkbox/radioâ\x86\x92{checked}, switchâ\x86\x92{on}, sliderâ\x86\x92{min,max,value}, input/textareaâ\x86\x92{placeholder}, linkâ\x86\x92{href}, iconâ\x86\x92{iconName}, triangleâ\x86\x92{triangleDirection:'up'|'down'|'left'|'right'}, calloutâ\x86\x92{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 â\x80\x94 use to round corners for a more polished look. Rect/frame/input/select/button: [8,8,8,8]â\x80\x93[16,16,16,16]. Rough style (roughnessâ\x89¥1): small corners (4â\x80\x938). Smooth (roughness:0): larger corners (12â\x80\x9320). 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 â\x80\x94 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': 'Full replacement of all nodes. If provided, replaces the entire canvas content.'}, 'addEdges': {'type': 'array', 'items': {'$ref': '#/properties/edges/items'}, 'description': 'Edges to add'}, 'addNodes': {'type': 'array', 'items': {'$ref': '#/properties/nodes/items'}, 'description': 'Nodes to add (without replacing existing ones)'}, 'documentId': {'type': 'string', 'description': 'Document ID to update (from a previous create call)'}, 'removeEdgeIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'IDs of edges to remove'}, 'removeNodeIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'IDs of nodes to remove'}, 'backgroundColor': {'type': 'string', 'description': 'New canvas background color'}}, 'additionalProperties': False}
Letzte Tool-Änderungen
Ähnliche MCP-Server
GripForge
Generates, rigs, animates, analyzes, and packages game characters, weapons, armor, effects, environments, and engine-ready assets.
spriteship
Generates and manages 2D game characters, assets, animations, tilesets, UI packs, maps, and engine-ready exports for multiple gam…
Blixtworks
Offers pay-per-call utilities for text, image processing and analysis, data conversion, validation, web inspection, cryptography,…
Compose Preview Catalogs
Browses, renders, compares, audits, and edits Jetpack Compose preview catalogs and associated UI designs.
arch-tools-mcp
Provides general-purpose agent APIs for browser automation, web and PDF extraction, data conversion, email operations, fact check…
kernelcad
Authors, evaluates, reviews, simulates, edits, and exports parametric CAD assemblies and geometry from editable TypeScript-based …
floot
Creates, edits, previews, databases, and publishes full-stack web and mobile applications with hosted resources and deployment wo…
Raven
Supports coding agents with design audits, design-system guidance, and a configurable visual preference profile.