Lineage tooling in practice: DataHub MCP and the lineage-graph plugin
Put lineage to work with two tools — a DataHub MCP server that lets an agent search entities and read lineage and schema, and a lineage-graph plugin that turns column-level impact analysis into agent commands. Wire both, learn each tool surface, and scope the token before sharing it.
At a glance
| When | You want an agent to answer catalog questions against a real DataHub instance; A schema change is in review and the reviewer wants the downstream list in the thread |
|---|---|
| Where | Data Lineage |
| Why | Lineage in a UI helps one person; lineage behind tools and commands helps every agent and every review. |
Learning objectives
- Wire mcp-server-datahub and call its four tools
- Use /impact, /lineage-up and /lineage-down for change analysis
- Choose the right tool for a catalog question versus an impact question
What you need
- [object Object]
- [object Object]
- DATAHUB_GMS_URL and DATAHUB_GMS_TOKEN for the GMS endpoint
Steps
- Meet the catalog door — an MCP server that exposes a DataHub catalog so an agent can search entities, read lineage and schema, and inspect metadata. (from mcp-datahub )
- Learn the tool surface — search, get_entities, get_lineage and get_dataset_queries. (from mcp-datahub )
- Install it — uvx mcp-server-datahub, with the GMS URL and token wired through environment variables. (from mcp-datahub )
- Meet the plugin — column-level impact analysis over a lineage store, with a change-impact command that lists the downstream consumers a schema change would break. (from plugin-lineage-graph )
- Learn the command surface — /impact for blast radius, /lineage-up for what feeds an asset, /lineage-down for what depends on it. (from plugin-lineage-graph )
- Keep one vocabulary — the metadata model explains how to represent ownership and lineage consistently across tools. (from ref-datahub-docs )
- Scope before sharing — read-only against the catalog, but catalogue metadata can itself be sensitive; use a scoped token and keep the GMS endpoint internal. (from mcp-datahub )
Check yourself
- get_lineage answers "what feeds this table"; /impact answers "what breaks if this column changes" — different questions.
- Both tools read the same metadata model, so an answer from one is not contradicted by the other.
Worked example
Wire the catalog MCP server — from mcp-datahub
uvx mcp-server-datahub
# required env
# DATAHUB_GMS_URL=<url of the DataHub GMS endpoint>
# DATAHUB_GMS_TOKEN=<personal access token>
The plugin's three commands — from plugin-lineage-graph
/impact <asset|column> # downstream consumers a change would break
/lineage-up <asset> # what feeds this
/lineage-down <asset> # what depends on this
Sourced from
Security scan
Last sweep 2026-10-24: 0 finding(s), 0 marked as examples.
Common gotchas
- Catalog metadata is sensitive even when read-only — PII tags and internal table names ride along; use a scoped token.
- get_dataset_queries and get_lineage answer different questions — searching for the wrong one wastes a turn.
- The plugin's /impact walks the same store the MCP server reads — configure both against the same GMS.
Production considerations
- Keep the GMS endpoint internal and hand each integration its own scoped token.
- Treat the four MCP tools as the stable contract — scripts that call them survive catalog UI redesigns.
Diagram
lineage tooling
|
|- mcp-datahub ──▶ search | get_entities | get_lineage | get_dataset_queries
| (uvx mcp-server-datahub, DATAHUB_GMS_URL + TOKEN)
|
|- plugin-lineage-graph ──▶ /impact | /lineage-up | /lineage-down
|
--> both read the same metadata model (ownership + lineage)
Registry stats
| Verification | community · Oct 24, 2026 |
|---|---|
| Completeness | 81 |
| Trust multiplier | ×0.75 |
| Composite | 31.15 · adequate |
| Freshness | 0 days since last source check |
| Difficulty | intermediate |
| Version | 0.1.0 |
| License | CC-BY-4.0 |
| Security flags | 2 |
Did this solve your problem?
Lineage tooling in practice: DataHub MCP and the lineage-graph plugin