MCP server that exposes a dbt project's manifest.json to claude — lineage, docs coverage, and test failures in plain english.
Project description
dbt-mcp-server
mcp server that lets claude answer questions about your dbt project. model lineage, missing docs, test failures — straight from manifest.json
stateless by design: every tool call re-reads target/manifest.json, so answers always reflect your latest dbt parse. core logic is stdlib only, with a single dependency on the official mcp SDK. talks over stdio.
requirements
- python 3.10+
- a dbt project with a generated
target/manifest.json(any dbt command creates it)
installing
pip install dbt-mcp-server
configuration
| env var | required | description |
|---|---|---|
DBT_MANIFEST_PATH |
no | path to manifest.json (default: ./target/manifest.json). run_results.json is expected next to it |
ANTHROPIC_API_KEY |
no | reserved for the planned suggest_doc_blocks tool, not needed yet |
hooking it up
claude desktop — add to claude_desktop_config.json (settings → developer → edit config):
{
"mcpServers": {
"dbt": {
"command": "dbt-mcp-server",
"env": {
"DBT_MANIFEST_PATH": "/path/to/your/dbt_project/target/manifest.json"
}
}
}
}
claude code:
claude mcp add dbt --env DBT_MANIFEST_PATH=/path/to/your/dbt_project/target/manifest.json -- dbt-mcp-server
tools
| tool | what you get |
|---|---|
get_model_lineage(model_name) |
upstream and downstream dependency graph, direct and transitive |
find_orphan_sources() |
sources that no model references |
find_undocumented_models() |
models missing model-level or column-level descriptions |
summarize_test_failures(since) |
test failures from run_results.json at or after an ISO date, grouped by model |
trace_column_lineage(column, model) |
where a column likely originates, walking the graph upstream and matching declared column names |
suggest_doc_blocks(model_name) |
(planned) YAML doc block drafts from compiled SQL via the claude API |
then just ask things like:
"what feeds into fct_orders, and what breaks downstream if i change it?"
"which models are missing docs? list the undocumented columns."
"summarize test failures since 2026-07-01."
note: the manifest has no true column-level lineage, so trace_column_lineage won't match renamed or derived columns — it flags upstream nodes without declared columns so you know where the trail could continue.
development
git clone https://github.com/vladrosant/dbt-mcp-server
cd dbt-mcp-server
pip install -e ".[dev]"
pytest
license
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dbt_mcp_server-0.1.0.tar.gz.
File metadata
- Download URL: dbt_mcp_server-0.1.0.tar.gz
- Upload date:
- Size: 8.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de7513d5650ec9f1898e5ccb08af6f8326db7920b1128e09e31b481e0144fced
|
|
| MD5 |
6345dde9a49ede3b48ed5b258ec40340
|
|
| BLAKE2b-256 |
78525ba3c0455dca2b984f153d935231a76f933f9110fc750afdc9982d01bb6a
|
Provenance
The following attestation bundles were made for dbt_mcp_server-0.1.0.tar.gz:
Publisher:
publish.yml on vladrosant/dbt-mcp-server
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dbt_mcp_server-0.1.0.tar.gz -
Subject digest:
de7513d5650ec9f1898e5ccb08af6f8326db7920b1128e09e31b481e0144fced - Sigstore transparency entry: 2086521209
- Sigstore integration time:
-
Permalink:
vladrosant/dbt-mcp-server@2ab68a31d991dc9c372aba4fbb7c83622402583f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/vladrosant
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2ab68a31d991dc9c372aba4fbb7c83622402583f -
Trigger Event:
release
-
Statement type:
File details
Details for the file dbt_mcp_server-0.1.0-py3-none-any.whl.
File metadata
- Download URL: dbt_mcp_server-0.1.0-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3275107486b3ddf888eda06b0ce474ddf1e9d0a139827f4c0087f03d0220ef5
|
|
| MD5 |
15a8c737c73ff4325b46645a7dda9fae
|
|
| BLAKE2b-256 |
3f889bd8f5af17f1d0575e54c622b04cad47d6897d222688986e84555ce12514
|
Provenance
The following attestation bundles were made for dbt_mcp_server-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on vladrosant/dbt-mcp-server
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dbt_mcp_server-0.1.0-py3-none-any.whl -
Subject digest:
a3275107486b3ddf888eda06b0ce474ddf1e9d0a139827f4c0087f03d0220ef5 - Sigstore transparency entry: 2086521326
- Sigstore integration time:
-
Permalink:
vladrosant/dbt-mcp-server@2ab68a31d991dc9c372aba4fbb7c83622402583f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/vladrosant
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2ab68a31d991dc9c372aba4fbb7c83622402583f -
Trigger Event:
release
-
Statement type: