# io.datadef/mcp

Generate, edit, and export data-architecture diagrams from your AI. Column lineage, PNG in chat.

- **Type:** MCP server
- **Trust:** 60/100 (B), scored on the content rubric
- **Verification:** community-indexed — nobody has claimed this listing
- **Version:** 1.0.0
- **Author:** io.datadef
- **License:** Unknown
- **Endpoints:** streamable-http https://datadef.io/mcp
- **Source:** https://datadef.io
- **Endpoint health:** reachable (last checked 2026-09-22T12:03:12.208Z, 5 samples) — uptime is not a security property and is not part of the trust score
- **Compatible clients:** claude-code, cursor, copilot, chatgpt, gemini (basis: transport)

## Trust

60/100 (B), scored on the content rubric
- Publisher verified: no
- Install scripts: nothing suspicious found
- Prompt-injection scan: clean
- Obfuscation scan: clean
- Evidence age: 0 days

## Security scan

- **Status:** clean
- **Scanned:** 2026-09-22T12:03:12.208Z
- **Version scanned:** live
- **CVEs:** no coverage — this entry has no package coordinates to query OSV against, so "no known CVEs" is NOT asserted for it.

## Tools

36 declared. Observed from a live `tools/list` probe.
- `get_design_guide` — Datadef's standard for what makes a diagram readable, size, edge discipline, nested zones, annotations, and the tool order for building or editing. Read this BE
- `canvas_describe_canvas` — Get an overview of the current canvas: every node with its id, type, label and group, plus all connections and groups. Call this first, before any edit, so you 
- `canvas_inspect_nodes` — Get full detail for specific nodes: all columns with types and keys, metadata, schedule, formula, owners. Use before modifying a node so you preserve fields you
- `canvas_measure_canvas` — Get exact geometry: every node's position and size in canvas units, the overall canvas bounds, and any nodes that overlap each other. Call this before moving, r
- `canvas_suggest_simplifications` — Report where this canvas could be collapsed — groups of similar nodes that could become one summary node — without changing anything. Use it to decide whether t
- `canvas_search_icons` — Search Datadef's icon library (2000+ cloud and data-tool logos) for a valid icon id. Use it when you want a specific vendor logo and are unsure of its exact id 
- `canvas_add_nodes` — Add one or more nodes to the canvas. Batch every node you want in a single call. Positions are assigned by canvas_layout_canvas afterwards — never set them your
- `canvas_add_standalone_node` — Add a single data node at an exact position, without connecting it to anything. Use when the user wants something placed somewhere specific, or when you will wi
- `canvas_update_nodes` — Change properties of existing nodes. Only the fields you pass are touched; everything else is preserved. To replace a table's columns use canvas_set_columns ins
- `canvas_replace_node` — Swap a node for a different one while keeping every connection, its position, and its group. Use this when a component changes — Redshift becomes Snowflake, a b
- `canvas_remove_nodes` — Delete nodes and every edge touching them. Deleting a group also deletes the nodes inside it — check with canvas_describe_canvas first if that is not what you w
- `canvas_connect_nodes` — Draw edges between nodes to show how data flows. Always label the edge with what actually happens ("ingest", "dbt transform", "hourly sync") — unlabelled edges 
- `canvas_update_edges` — Change existing connections without deleting them: fix a label, change the type, or restyle. Use this to correct a wrong edge label rather than disconnecting an
- `canvas_disconnect_nodes` — Remove the edge between two nodes. Operates on one Datadef diagram, named by diagram_id.
- `canvas_set_columns` — Set the full column list of a table node, replacing whatever it had. Pass every column you want to keep — this is a replace, not a merge. Mark primary and forei
- `canvas_group_nodes` — Create a labelled zone (e.g. "Bronze Layer", "Ingestion") and optionally move nodes into it. Zones are what turn a tangle of boxes into a readable architecture 
- `canvas_move_to_group` — Move existing nodes into an existing group, or out of any group. Operates on one Datadef diagram, named by diagram_id.
- `canvas_add_lineage` — Record column-level lineage: which source column produces which target column, and how. This is what makes the diagram queryable for impact analysis, so add it 
- `canvas_add_text` — Place a free-floating text box on the canvas — a caption, a callout, a section heading, a note explaining a decision. Position it with explicit coordinates from
- `canvas_add_shape` — Place a rectangle, circle, arrow, or line as a visual annotation — a backdrop highlighting a region, an arrow pointing something out, a divider. Shapes sit behi
- `canvas_add_flow_arrow` — Draw one large labelled arrow representing a whole flow — "ingest", "serve", "publish" — instead of many thin edges saying the same thing. Use this when several
- `canvas_add_region` — Draw a labelled translucent area behind existing nodes to show they belong together, without reparenting them. Use this when the grouping is a reading aid rathe
- `canvas_move_nodes` — Set node positions precisely. Use absolute x/y to place something exactly, or dx/dy to nudge it. Coordinates are absolute canvas units (same space canvas_measur
- `canvas_resize_nodes` — Set the width and height of nodes. Mostly for shapes, text boxes, and group zones — data nodes size themselves from their content, and resizing one can clip wha
- `canvas_align_nodes` — Align nodes to a shared edge or centre line, or space them evenly. Cleaner and far more reliable than computing coordinates by hand. Operates on one Datadef dia
- `canvas_collapse_nodes` — Merge several nodes into one summary node, keeping every connection. Use when a set of near-identical objects adds length without adding meaning — eight staging
- `canvas_layout_canvas` — Arrange the canvas. Call this once at the end, after all structural edits are done — not between each edit. By default only the parts you touched are re-arrange
- `canvas_validate_canvas` — Check the canvas for structural problems (disconnected nodes, circular data flow, broken references) and quality problems (unlabelled edges, tables without colu
- `create_diagram` — Generate a professional data architecture diagram from a description and save it to the user's Datadef account. Use this for any data-shaped diagram: medallion 
- `create_blank_diagram` — Create an empty diagram and return its diagram_id, so you can build it yourself with the canvas_* tools. No AI generation runs and no credit is spent: you draw 
- `list_diagrams` — List diagrams in the user's Datadef account, most recently updated first. Use this to find the id of a diagram before editing or exporting it.
- `get_diagram` — Read the full structure of a diagram: every node with its type and columns, every connection, and the groups. Use this before editing so you know what is actual
- `edit_diagram` — Change an existing diagram with a natural-language instruction, add nodes, rewire connections, add columns, reorganise into layers, fill in owners and schedules
- `export_diagram` — Render a diagram to a PNG or JPEG image. Returns the image inline AND a short-lived signed download URL. Use the inline image to show the diagram; use the URL w
- `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
- `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

## Install

**Verdict: review** — Installable, but 2 things to check first: No CVE coverage: this entry has no npm/PyPI coordinates to query OSV against, so "no known vulnerabilities" is not a claim that can be made about it.
**Cautions** (coverage gaps and advisories — never blocking)
- No CVE coverage: this entry has no npm/PyPI coordinates to query OSV against, so "no known vulnerabilities" is not a claim that can be made about it.
- No publisher has proved control of this listing; it is indexed, not vouched for.
**Config** (claude-code):
```json
"{\n  \"mcpServers\": {\n    \"mcp\": {\n      \"type\": \"http\",\n      \"url\": \"https://datadef.io/mcp\"\n    }\n  }\n}"
```

## Blast radius

Extensive blast radius — deletes data; runs on someone else's infrastructure.
- Floor 35, ceiling 59 (tier: extensive)
- This is impact, not likelihood. A high radius is not a defect: a filesystem server is supposed to write files. It is never part of the trust score.

## Machine-readable views of this entry

- Signed JSON: https://forgeregistry.com/api/v1/packages/io.datadef%2Fmcp
- Install plan: https://forgeregistry.com/api/v1/packages/io.datadef%2Fmcp/install-plan
- Alternatives: https://forgeregistry.com/api/v1/alternatives/io.datadef%2Fmcp
- HTML page: https://forgeregistry.com/registry/io.datadef%2Fmcp
- MCP: POST https://forgeregistry.com/api/mcp → `forge_get_package` / `forge_install_plan`

## About this document

Generated by Forge (https://forgeregistry.com) — a compact rendering of the same record served, signed, at the JSON URL above. Trust and scan facts are the registry's own measurements; anything Forge did not measure is named as unmeasured rather than omitted.
