Flowgraf
What this MCP does
Creates and edits architecture diagrams from infrastructure graphs and returns editable canvases, SVGs, and Mermaid representations.
Tools
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['title', 'graph'], 'properties': {'graph': {'type': 'object', 'properties': {'edges': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'source', 'target', 'kind'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'kind': {'enum': ['request', 'response', 'async_event', 'data_flow', 'dependency', 'network', 'generic'], 'type': 'string'}, 'label': {'type': 'string'}, 'source': {'type': 'string', 'minLength': 1, 'description': 'id of the source node.'}, 'target': {'type': 'string', 'minLength': 1, 'description': 'id of the target node.'}, 'directed': {'type': 'boolean'}}, 'additionalProperties': False}, 'description': 'Directed connections between node ids.'}, 'nodes': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'label', 'kind'], 'properties': {'id': {'type': 'string', 'minLength': 1, 'description': 'Stable snake_case id you assign, e.g. n_api. Referenced by edges.'}, 'kind': {'type': 'object', 'required': ['catalog', 'type'], 'properties': {'type': {'type': 'string', 'minLength': 1, 'description': 'Catalog-specific type, e.g. api_gateway, rds, redis, service.'}, 'catalog': {'enum': ['aws', 'gcp', 'azure', 'k8s', 'saas', 'generic'], 'type': 'string'}}, 'additionalProperties': False}, 'label': {'type': 'string', 'description': "Human label shown on the node, e.g. 'API Gateway'."}, 'parentId': {'type': 'string', 'minLength': 1, 'description': 'id of the group this node lives in (a VPC, cluster, ...).'}}, 'additionalProperties': False}, 'description': 'The nodes (services, databases, users, ...).'}, 'groups': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'label', 'type'], 'properties': {'id': {'type': 'string', 'minLength': 1, 'description': 'Stable snake_case id you assign, e.g. g_vpc.'}, 'type': {'enum': ['vpc', 'subnet', 'availability_zone', 'region', 'cluster', 'trust_boundary', 'logical'], 'type': 'string'}, 'label': {'type': 'string'}, 'style': {'type': 'object', 'properties': {'color': {'type': 'string'}, 'dashed': {'type': 'boolean'}}, 'additionalProperties': False}, 'parentId': {'type': 'string', 'minLength': 1, 'description': 'id of the parent group, for nested containers.'}}, 'additionalProperties': False}, 'description': 'Containers that nodes live in (VPCs, clusters, ...).'}}, 'additionalProperties': False}, 'title': {'type': 'string', 'minLength': 1, 'description': 'A short title for the diagram.'}, 'domain': {'enum': ['cloud_architecture', 'system_design', 'sequence', 'flow', 'generic'], 'type': 'string', 'description': 'Optional domain hint (default: generic).'}}}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['diagramId', 'baseVersion', 'ops'], 'properties': {'ops': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['op', 'node'], 'properties': {'op': {'type': 'string', 'const': 'add_node'}, 'node': {'type': 'object', 'required': ['id', 'label', 'kind'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'kind': {'type': 'object', 'required': ['catalog', 'type'], 'properties': {'type': {'type': 'string', 'maxLength': 512, 'minLength': 1}, 'catalog': {'enum': ['aws', 'gcp', 'azure', 'k8s', 'saas', 'generic'], 'type': 'string'}}, 'additionalProperties': False}, 'label': {'type': 'string', 'maxLength': 512}, 'style': {'type': 'object', 'properties': {'bold': {'type': 'boolean'}, 'fill': {'enum': ['gray', 'slate', 'blue', 'teal', 'green', 'amber', 'orange', 'red', 'pink', 'violet'], 'type': 'string'}, 'border': {'enum': ['gray', 'slate', 'blue', 'teal', 'green', 'amber', 'orange', 'red', 'pink', 'violet'], 'type': 'string'}, 'textSize': {'enum': ['s', 'm', 'l'], 'type': 'string'}}, 'additionalProperties': False}, 'metadata': {'type': 'object', 'propertyNames': {'type': 'string', 'maxLength': 256}, 'additionalProperties': {}}, 'parentId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['op', 'id'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'op': {'type': 'string', 'const': 'remove_node'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['op', 'id', 'patch'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'op': {'type': 'string', 'const': 'update_node'}, 'patch': {'type': 'object', 'properties': {'kind': {'type': 'object', 'required': ['catalog', 'type'], 'properties': {'type': {'type': 'string', 'maxLength': 512, 'minLength': 1}, 'catalog': {'enum': ['aws', 'gcp', 'azure', 'k8s', 'saas', 'generic'], 'type': 'string'}}, 'additionalProperties': False}, 'label': {'type': 'string', 'maxLength': 512}, 'style': {'type': 'object', 'properties': {'bold': {'type': 'boolean'}, 'fill': {'enum': ['gray', 'slate', 'blue', 'teal', 'green', 'amber', 'orange', 'red', 'pink', 'violet'], 'type': 'string'}, 'border': {'enum': ['gray', 'slate', 'blue', 'teal', 'green', 'amber', 'orange', 'red', 'pink', 'violet'], 'type': 'string'}, 'textSize': {'enum': ['s', 'm', 'l'], 'type': 'string'}}, 'additionalProperties': False}, 'metadata': {'type': 'object', 'propertyNames': {'type': 'string', 'maxLength': 256}, 'additionalProperties': {}}, 'parentId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['op', 'edge'], 'properties': {'op': {'type': 'string', 'const': 'add_edge'}, 'edge': {'type': 'object', 'required': ['id', 'source', 'target', 'kind'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'kind': {'enum': ['request', 'response', 'async_event', 'data_flow', 'dependency', 'network', 'generic'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 512}, 'style': {'type': 'object', 'properties': {'bold': {'type': 'boolean'}, 'color': {'enum': ['gray', 'slate', 'blue', 'teal', 'green', 'amber', 'orange', 'red', 'pink', 'violet'], 'type': 'string'}, 'width': {'enum': ['thin', 'normal', 'thick'], 'type': 'string'}, 'textSize': {'enum': ['s', 'm', 'l'], 'type': 'string'}}, 'additionalProperties': False}, 'source': {'type': 'string', 'minLength': 1}, 'target': {'type': 'string', 'minLength': 1}, 'directed': {'type': 'boolean'}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['op', 'id'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'op': {'type': 'string', 'const': 'remove_edge'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['op', 'id', 'patch'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'op': {'type': 'string', 'const': 'update_edge'}, 'patch': {'type': 'object', 'properties': {'kind': {'enum': ['request', 'response', 'async_event', 'data_flow', 'dependency', 'network', 'generic'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 512}, 'style': {'type': 'object', 'properties': {'bold': {'type': 'boolean'}, 'color': {'enum': ['gray', 'slate', 'blue', 'teal', 'green', 'amber', 'orange', 'red', 'pink', 'violet'], 'type': 'string'}, 'width': {'enum': ['thin', 'normal', 'thick'], 'type': 'string'}, 'textSize': {'enum': ['s', 'm', 'l'], 'type': 'string'}}, 'additionalProperties': False}, 'source': {'type': 'string', 'minLength': 1}, 'target': {'type': 'string', 'minLength': 1}, 'directed': {'type': 'boolean'}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['op', 'group'], 'properties': {'op': {'type': 'string', 'const': 'add_group'}, 'group': {'type': 'object', 'required': ['id', 'label', 'type'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'type': {'enum': ['vpc', 'subnet', 'availability_zone', 'region', 'cluster', 'trust_boundary', 'logical'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 512}, 'style': {'type': 'object', 'properties': {'color': {'enum': ['gray', 'slate', 'blue', 'teal', 'green', 'amber', 'orange', 'red', 'pink', 'violet'], 'type': 'string'}, 'dashed': {'type': 'boolean'}}, 'additionalProperties': False}, 'parentId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['op', 'id'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'op': {'type': 'string', 'const': 'remove_group'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['op', 'id', 'patch'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'op': {'type': 'string', 'const': 'update_group'}, 'patch': {'type': 'object', 'properties': {'type': {'enum': ['vpc', 'subnet', 'availability_zone', 'region', 'cluster', 'trust_boundary', 'logical'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 512}, 'style': {'type': 'object', 'properties': {'color': {'enum': ['gray', 'slate', 'blue', 'teal', 'green', 'amber', 'orange', 'red', 'pink', 'violet'], 'type': 'string'}, 'dashed': {'type': 'boolean'}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['op', 'nodeId', 'groupId'], 'properties': {'op': {'type': 'string', 'const': 'move_to_group'}, 'nodeId': {'type': 'string', 'minLength': 1}, 'groupId': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['op', 'patch'], 'properties': {'op': {'type': 'string', 'const': 'set_layout'}, 'patch': {'type': 'object', 'properties': {'engine': {'enum': ['elk', 'dagre'], 'type': 'string'}, 'spacing': {'type': 'object', 'properties': {'node': {'type': 'number', 'maximum': 10000, 'minimum': 0}, 'layer': {'type': 'number', 'maximum': 10000, 'minimum': 0}}, 'additionalProperties': False}, 'direction': {'enum': ['TB', 'LR', 'BT', 'RL'], 'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['op', 'patch'], 'properties': {'op': {'type': 'string', 'const': 'set_theme'}, 'patch': {'type': 'object', 'properties': {'mode': {'enum': ['light', 'dark', 'blueprint'], 'type': 'string'}, 'styleMode': {'enum': ['plain', 'shadow'], 'type': 'string'}, 'background': {'enum': ['dots', 'grid', 'plain'], 'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['op', 'title'], 'properties': {'op': {'type': 'string', 'const': 'set_title'}, 'title': {'type': 'string', 'maxLength': 256, 'minLength': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['op', 'newNode', 'sourceId', 'targetId'], 'properties': {'op': {'type': 'string', 'const': 'insert_between'}, 'inKind': {'enum': ['request', 'response', 'async_event', 'data_flow', 'dependency', 'network', 'generic'], 'type': 'string'}, 'newNode': {'type': 'object', 'required': ['id', 'label', 'kind'], 'properties': {'id': {'type': 'string', 'minLength': 1}, 'kind': {'type': 'object', 'required': ['catalog', 'type'], 'properties': {'type': {'type': 'string', 'maxLength': 512, 'minLength': 1}, 'catalog': {'enum': ['aws', 'gcp', 'azure', 'k8s', 'saas', 'generic'], 'type': 'string'}}, 'additionalProperties': False}, 'label': {'type': 'string', 'maxLength': 512}, 'style': {'type': 'object', 'properties': {'bold': {'type': 'boolean'}, 'fill': {'enum': ['gray', 'slate', 'blue', 'teal', 'green', 'amber', 'orange', 'red', 'pink', 'violet'], 'type': 'string'}, 'border': {'enum': ['gray', 'slate', 'blue', 'teal', 'green', 'amber', 'orange', 'red', 'pink', 'violet'], 'type': 'string'}, 'textSize': {'enum': ['s', 'm', 'l'], 'type': 'string'}}, 'additionalProperties': False}, 'metadata': {'type': 'object', 'propertyNames': {'type': 'string', 'maxLength': 256}, 'additionalProperties': {}}, 'parentId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}, 'outKind': {'enum': ['request', 'response', 'async_event', 'data_flow', 'dependency', 'network', 'generic'], 'type': 'string'}, 'sourceId': {'type': 'string', 'minLength': 1}, 'targetId': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}}, 'diagramId': {'type': 'string', 'minLength': 1, 'description': 'The diagram to edit (from create_diagram or get_diagram).'}, 'baseVersion': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'The version you are editing against â\x80\x94 get it from get_diagram. Stale â\x86\x92 STALE_VERSION.'}}}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['diagramId'], 'properties': {'diagramId': {'type': 'string', 'minLength': 1, 'description': 'The diagram to fetch.'}}}
Recent tool changes
Similar MCP servers
floot
Creates, edits, previews, databases, and publishes full-stack web and mobile applications with hosted resources and deployment wo…
Kleap
Builds, edits, publishes, hosts, connects domains, and provides analytics and search performance data for websites and web apps.
Flowboard
Creates, validates, versions, reviews, and edits architecture diagrams using cloud-provider shapes and structured flows.
GripForge
Generates, rigs, animates, analyzes, and packages game characters, weapons, armor, effects, environments, and engine-ready assets.
shiply
Publishes and manages web applications with SQL databases, serverless functions, domains, email tests, client intake, contracts, …
Fine Structure
Builds and hosts full-stack applications from prompts and supports agent communication through WhatsApp and email.
spriteship
Generates and manages 2D game characters, assets, animations, tilesets, UI packs, maps, and engine-ready exports for multiple gam…
mcp
Provisions and manages cloud instances, networks, storage, databases, backups, VPNs, application deployments, and autocoding-agen…