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
Metadata
Release files for dbt-mcp-server 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| dbt_mcp_server-0.1.1.tar.gz | 8.1 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dbt_mcp_server-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.6 kB
Release files / dbt_mcp_server-0.1.1.tar.gz
| Download URL | dbt_mcp_server-0.1.1.tar.gz |
|---|---|
| Size | 8.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b59f5569ac4e2d20ca7698df47f81af201ae3c3fbdf0552edde52476b5daa4fb
|
|
BLAKE2b-256 checksum How to use checksums |
958372def0adca7e95be9a61b03d21a5bdd9626a4527804534a565270e7cac1e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 6, 2026.
Transparency logRelease files / dbt_mcp_server-0.1.1-py3-none-any.whl
| Download URL | dbt_mcp_server-0.1.1-py3-none-any.whl |
|---|---|
| Size | 9.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
03945bad7db8980d31450c7c6687e7864556a4e8c362e865442678dcd2667e83
|
|
BLAKE2b-256 checksum How to use checksums |
8f6235ea6a9647532b8110888686f1d1d1ac489c370b96357ad129c5dfa9a8c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 6, 2026.
Transparency logSecurity for dbt-mcp-server 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for dbt_mcp_server-0.1.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 6, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.