# Datadef MCP server

Source: https://glimind.com/server/mcp-registry%2Fio.datadef%2Fmcp
Registry id: `mcp-registry/io.datadef/mcp`
Status: live (checked 2026-10-26T20:38:10.864Z)

## Measurements (30 days)

- Uptime: 99.81%
- Checks: 4942
- Outages (90 days): 12

## Install

```json
{
  "mcpServers": {
    "datadef-mcp-server": {
      "type": "http",
      "url": "https://datadef.io/mcp"
    }
  }
}
```

Claude Code:

```sh
claude mcp add --transport http datadef-mcp-server https://datadef.io/mcp
```

## Tools (39)

- `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 a
- `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 
- `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. B
- `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 translucen
- `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 visua
- `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 exa
- `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, 
- `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 m
- `canvas_batch`: 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_no
- `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 su
- `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 sho
- `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 b
- `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: `
- `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 t
- `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: a
- `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; nothin
- `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 
- `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. Us
- `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 
- `canvas_remove_lineage`: 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 automati
- `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 k
- `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, 
- `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 them
- `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 
- `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 
- `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 colla
- `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 reconne
- `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`), ch
- `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 yo
- `canvas_view`: 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 diagra
- `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 c
- `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_
- `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 co
- `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), w
- `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
- `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
- `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
- `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 h
- `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

Measured by Glimind (https://glimind.com): MCP handshake + tool list only, no tool is ever called. CC BY 4.0.
