MCP serverio.datadef/mcp
Generate, edit, and export data-architecture diagrams from your AI.
Read more
Generate, edit, and export data-architecture diagrams from your AI. Column lineage, PNG in chat.Overview
Score?
UNRATED 0.665
of what a free look can see, on 29 looks
Looks
36
last 38 min ago
Tools
39
changed 5 days ago
More info
URL
datadef.io/mcp
streamable-http
Says it is
datadef 1.1.0
protocol 2025-06-18
In the record since
32 days ago
Among servers18,413 with a card
0median 0.606 · this server 0.665 · highest on record 0.8561
Toolsfrom sha256:ab3196cceb…59e006 · +3 −0 5 days ago
| Tool | Schema |
|---|---|
| canvas_add_flow_arrow When: Use after the final layout, where one arrow should stand for a bundle of identical flows (zone to zone).
Draw one large labelled arrow SHAPE between two areas of the diagram |
input · no output |
| canvas_add_lineage When: Use to record which source columns produce which target columns. No line is drawn.
Record column-level lineage: which source column produces which target column, and how. Th |
input · no output |
| canvas_add_nodes When: Use to add components (tables, pipelines, sources, consumers, service icons), each placed in its zone with `group`.
Add one or more nodes to the canvas. Batch every node you |
input · no output |
| canvas_add_region When: Use after the final layout to mark nodes that belong together without moving them into a zone. Regions do not move with layout.
Draw a labelled translucent area behind exist |
input · no output |
| canvas_add_shape When: Use rarely: a pointer or highlight the user asked for. Never as a backdrop; zones are the containers.
Place a rectangle, circle, arrow, or line as a visual annotation — a di |
input · no output |
| canvas_add_standalone_node When: Use only when the user wants a node at a specific position, outside the automatic layout. Otherwise use canvas_add_nodes.
Add a single data node at an exact position, withou |
input · no output |
| canvas_add_text When: Use for a note that tells the diagram's reader a decision, constraint or gotcha. Pass `anchor` (the node or zone it explains) and it is placed beside it, no coordinates neede |
input · no output |
| canvas_align_nodes When: Use only when the user asked for alignment that layout does not give.
Align nodes to a shared edge or centre line, or space them evenly. Cleaner and far more reliable than c |
input · no output |
| canvas_batch added When: use whenever you would otherwise make several canvas_* write calls in a row, above all with tools that take one item per call: create every zone (group_nodes), convert many n |
input · no output |
| canvas_collapse_nodes When: Use to merge several similar nodes into one while keeping their connections, usually after canvas_suggest_simplifications.
Merge several nodes into one summary node, keeping |
input · no output |
| canvas_connect_nodes When: Use to draw the flows that genuinely move data between two nodes. Never connect a zone: connect a node inside it.
Draw edges (arrows) between nodes to show how data flows. L |
input · no output |
| canvas_describe_canvas When: Use when you want a flat list of every node, edge and zone. canvas_view shows the same ids as a zone tree with positions and defects, and is usually the better first read.
G |
input · no output |
| canvas_disconnect_nodes When: Use to delete specific edges between two nodes.
Remove edges, given as source and target, or as an edge id / "Source -> Target" string in `edge`.
Batch: `edges` takes a lis |
input · no output |
| canvas_group_nodes When: Use to create a zone (a layer, domain, stage or boundary), nested with `parentGroup`, optionally moving existing nodes into it: the zone is drawn around them where they are, |
input · no output |
| canvas_inspect_nodes When: Use before changing a node's fields or columns, to see everything it carries: columns, metadata, owners, neighbours.
Get full detail for specific nodes: all columns with typ |
input · no output |
| canvas_layout_canvas When: Use once, after the structure (zones, nodes, edges) is complete, not after each change. With no arguments it only places what was added or changed; nothing else moves. Set mo |
input · no output |
| canvas_measure_canvas When: Use only for a precise manual placement the user asked for: exact x/y/width/height per node. To check a layout, canvas_view is faster and already reports overlaps.
Get exact |
input · no output |
| canvas_move_nodes When: Use only when the user asked for a specific placement. Moving a zone moves its children; never move the children as well.
Set node positions precisely. Use absolute x/y to p |
input · no output |
| canvas_move_to_group When: Use to move existing nodes or zones into another zone (they are placed inside it and the zone grows to fit), or out of every zone with group null. A zone cannot move into its |
input · no output |
| canvas_remove_lineage added When: Use to delete lineage rows between two nodes (one column pair, or all rows between them). Lineage pointing at deleted nodes or columns is cleaned automatically.
Delete linea |
input · no output |
| canvas_remove_nodes When: Use to delete nodes and their edges. Removing a zone keeps its contents (they move up to the parent, same place on screen): that is how to ungroup. Pass keepChildren:false on |
input · no output |
| canvas_replace_node When: Use when one component changes identity or type (Redshift becomes Snowflake, a card becomes a service icon). The node keeps its id, connections, lineage, zone, position and f |
input · no output |
| canvas_resize_nodes When: Use only when the user asked for a specific size.
Set the width and height of nodes. Mostly for shapes, text boxes, and group zones — data nodes size themselves from their c |
input · no output |
| canvas_search_icons When: Use before adding nodes that should show a vendor logo (Snowflake, Kafka, Power BI) and you are unsure of the icon id.
Find icon ids in Datadef's library (2000+ cloud and da |
input · no output |
| canvas_set_columns When: Use `mode: "merge"` to add or update (renameTo) a few columns, `mode: "remove"` to drop some, or the default replace for the full list. Columns that stay keep their ids and l |
input · no output |
| canvas_suggest_simplifications When: Use when the diagram feels dense or the user asks to simplify. It changes nothing; it reports what could collapse.
Report where this canvas could be collapsed — groups of si |
input · no output |
| canvas_update_edges When: Use to relabel, retype, restyle (dashed, colour), reverse, put arrowheads on both ends, or re-point an existing edge, instead of disconnecting and reconnecting it.
Change ex |
input · no output |
| canvas_update_nodes When: Use for any in-place change: rename a node or zone (it keeps its size and contents), edit a note's text, recolour (`color: "green"`, `fill`, `family`), change a zone's style, |
input · no output |
| canvas_validate_canvas When: Use before you finish: broken references and icons, nodes outside their zone, overlapping zones or nodes. Loops are reported as information only.
Check your work: broken ref |
input · no output |
| canvas_view added When: use to see a diagram before you edit it and after each round of changes; this is how you check your work. It answers in milliseconds from the saved diagram, where export_diag |
input · no output |
| create_blank_diagram When: use when you will build the diagram yourself with the canvas_* tools, because you want control over the result or already know the architecture from the conversation. Use cre |
input · no output |
| create_diagram When: use when Datadef's own model should design a whole new diagram from a description or a pasted schema. To build it yourself step by step, use create_blank_diagram; to change a |
input · no output |
| edit_diagram When: use for a large change you can describe in words better than you can make it tool by tool: "reorganise this into bronze, silver and gold", "rebuild the consumption side from |
input · no output |
| export_diagram When: use to give the user an image of a diagram, or a link to download, attach or embed one. Not to check your own edits: a render starts a browser (6-10 s), while canvas_view ans |
input · no output |
| get_design_guide When: read once before your first canvas_* call, to build or to edit. Datadef's standard for a readable diagram (size, edge discipline, nested zones, notes) and the tool workflow: |
input · no output |
| get_diagram When: use to show the user a diagram (it attaches a rendered PNG and a markdown image line, 6-10 s), or to poll a diagram that create_diagram or edit_diagram is still working on. T |
input · no output |
| list_diagrams When: use to find the id of an existing diagram before viewing, editing or exporting it. Lists the diagrams in the user's Datadef account, most recently updated first.
Next: canva |
input · no output |
| repo_refresh Re-sync a repo-linked diagram from the current state of its repository. If the tracked branch or tag has not moved since the last sync, nothing changes. If it has, the diagram is R |
input · no output |
| repo_status For a diagram that was created from a connected git repository: which repo and branch or tag it tracks, when it last synced, the commit it reflects, and whether daily sync is on. U |
input · no output |
Verify it yourself
npx teppi-check https://datadef.io/mcpcurl -s https://api.teppi.xyz/v1/trust/mcp/mcs_01M1FZ2B3V5Y99JZ4ZQXX8SR2T