Labsco
MCP SERVER

Dbt Docs

by mattijsdp

Search a dbt project's graph and trace lineage — including column-level lineage — from manifest.json and catalog.json.

Data Platform: Pipelines, Warehousing, BI & Governance
Summary
Column lineage is the part nothing else gives you cheaply.

Model-level dependencies are already in the dbt docs site. Tracing one column back to its sources, or forward to everything that would break, is the question that actually stops a refactor — and it is precomputed here rather than derived per query. Budget for that precompute: the README says it can run for hours on a large project, and it has to be rerun when the project changes.

What it is

A server over dbt Docs artifacts. It loads your project's manifest and catalog and answers structural questions about models, sources and tests, including which upstream column a given column actually comes from.

What you get
  • search_dbt_node_names finds nodes by name; search_dbt_column_names locates nodes by column; search_dbt_sql_code searches inside compiled SQL
  • get_dbt_node_attributes returns the full detail for a node's unique id
  • get_dbt_predecessors and get_dbt_successors return direct upstream dependencies and direct downstream dependents
  • get_column_ancestors traces every upstream source of a specific column, and get_column_descendants traces everything downstream of it
  • Column-level lineage is precomputed by a bundled script from your manifest and catalog, so queries are lookups rather than parses
Requirements

Python and uv, run from a checkout. MANIFEST_PATH points at your dbt manifest.json. Column-level lineage is optional and prepared ahead of time with scripts/create_manifest_cl.py, which writes the schema mapping and column-lineage files named by SCHEMA_MAPPING_PATH and MANIFEST_CL_PATH — on a large project that step can take hours.

Setup effort

One command — uvx dbt-docs-mcp