From wire
Proactive skill for setting up and configuring the dbt MCP server for use with Claude Code and Claude Desktop. Auto-activates when a user asks about connecting Claude to dbt, setting up dbt MCP, or accessing dbt Semantic Layer or Discovery API from Claude. Covers local vs remote server modes, credential handling, and Wire project setup.
npx claudepluginhub rittmananalytics/wire-plugin --plugin wireThis skill uses the workspace's default tool permissions.
The dbt MCP server connects Claude Code (and Claude Desktop) to dbt's CLI, Semantic Layer, Discovery API, and Admin API. Once configured, other dbt skills (`dbt-analytics-qa`, `dbt-semantic-layer`, `dbt-dag`) can use MCP tools like `list_metrics`, `get_lineage`, `get_mart_models`, and `dbt_build` directly rather than falling back to manifest parsing.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
The dbt MCP server connects Claude Code (and Claude Desktop) to dbt's CLI, Semantic Layer, Discovery API, and Admin API. Once configured, other dbt skills (dbt-analytics-qa, dbt-semantic-layer, dbt-dag) can use MCP tools like list_metrics, get_lineage, get_mart_models, and dbt_build directly rather than falling back to manifest parsing.
This skill guides users through choosing the right server type, generating the correct configuration, and verifying the connection.
Keywords: "dbt MCP", "dbt-mcp", "dbt MCP server", "dbt semantic layer MCP", "dbt Discovery API", "dbt tools", "uvx dbt-mcp"
Activate when:
.mcp.json or ~/.claude.json are being edited in a Wire projectAsk: "Do you want to use the local or remote dbt MCP server?"
| Local server | Remote server | |
|---|---|---|
| How it runs | On your machine via uvx dbt-mcp | HTTP endpoint at dbt Cloud |
| dbt CLI access | Yes (dbt run, build, test, show) | No |
| Semantic Layer | Yes (if dbt Cloud connected) | Yes |
| Discovery API | Yes (if dbt Cloud connected) | Yes |
| Requires dbt Cloud | No (CLI-only mode works without it) | Yes |
| Credits consumed | No | Yes (dbt Copilot credits) |
| Best for | Wire project development work | Consumption/analytics Q&A only |
Recommendation for Wire projects: Use local server. It gives Claude access to dbt CLI commands during development and connects to dbt Cloud for Semantic Layer / Discovery when needed.
Defaults are sensible for Wire projects:
| Category | Default | Disable with |
|---|---|---|
dbt CLI (run, build, test, compile) | Enabled | DISABLE_DBT_CLI=true |
| Semantic Layer (metrics, dimensions) | Enabled | DISABLE_SEMANTIC_LAYER=true |
| Discovery API (models, lineage) | Enabled | DISABLE_DISCOVERY=true |
| Admin API (jobs, runs) | Enabled | DISABLE_ADMIN_API=true |
SQL (text_to_sql, execute_sql) | Disabled | DISABLE_SQL=false to enable |
| Codegen (generate models/sources) | Disabled | DISABLE_DBT_CODEGEN=false to enable |
Before generating the configuration, gather:
DBT_PROJECT_DIR: Absolute path to the folder containing dbt_project.yml
# From inside your dbt project:
pwd
DBT_PATH: Path to the dbt executable
which dbt # dbt Core in venv
which dbtf # dbt Fusion
dbt Cloud credentials (only needed for Semantic Layer, Discovery, Admin API):
DBT_HOST: your dbt Cloud host (e.g. https://your-account.us1.dbt.com or cloud.getdbt.com)DBT_TOKEN: personal access token (Settings → API Access in dbt Cloud)DBT_ACCOUNT_ID: from your dbt Cloud URL (cloud.getdbt.com/accounts/XXXXX)DBT_PROD_ENV_ID: from Orchestration → Environments in dbt Cloud{
"mcpServers": {
"dbt": {
"command": "uvx",
"args": ["dbt-mcp"],
"env": {
"DBT_PROJECT_DIR": "/path/to/your/dbt/project",
"DBT_PATH": "/path/to/dbt"
}
}
}
}
{
"mcpServers": {
"dbt": {
"command": "uvx",
"args": ["dbt-mcp"],
"env": {
"DBT_HOST": "cloud.getdbt.com",
"DBT_TOKEN": "${DBT_TOKEN}",
"DBT_ACCOUNT_ID": "${DBT_ACCOUNT_ID}",
"DBT_PROD_ENV_ID": "${DBT_PROD_ENV_ID}",
"DBT_PROJECT_DIR": "/path/to/project",
"DBT_PATH": "/path/to/dbt"
}
}
}
}
.env file (recommended for teams){
"mcpServers": {
"dbt": {
"command": "uvx",
"args": ["--env-file", "/path/to/.env", "dbt-mcp"]
}
}
}
.env file:
DBT_HOST=cloud.getdbt.com
DBT_TOKEN=<set-via-env-or-secret-manager>
DBT_ACCOUNT_ID=<your-account-id>
DBT_PROD_ENV_ID=<your-prod-env-id>
DBT_PROJECT_DIR=/path/to/project
DBT_PATH=/path/to/dbt
Add .env to .gitignore — never commit literal tokens.
{
"mcpServers": {
"dbt": {
"url": "https://cloud.getdbt.com/api/ai/v1/mcp/",
"headers": {
"Authorization": "Token ${DBT_TOKEN}",
"x-dbt-prod-environment-id": "${DBT_PROD_ENV_ID}"
}
}
}
}
Option A — Project-specific (recommended for Wire projects, shareable with team):
Add to .mcp.json at the repo root. Wire Studio already creates .mcp.json with Atlassian, Fathom, and Context7 servers — merge the dbt entry rather than replacing:
{
"mcpServers": {
"atlassian": { ... },
"fathom": { ... },
"context7": { ... },
"dbt": {
"command": "uvx",
"args": ["dbt-mcp"],
"env": {
"DBT_PROJECT_DIR": "/path/to/project",
"DBT_PATH": "/path/to/dbt"
}
}
}
}
If using token auth, use ${DBT_TOKEN} references (not literal values) so .mcp.json is safe to commit.
Option B — User-global (your machine only):
claude mcp add dbt -s user -- uvx dbt-mcp
Option C — Project-scoped via CLI:
claude mcp add dbt -s project -- uvx dbt-mcp
Config location:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json${DBT_TOKEN}) in config files that may be committed.env files with .gitignore for local development; use Secret Manager or env var injection in CI/CDTest the local server before configuring a client:
export DBT_PROJECT_DIR=/path/to/project
export DBT_PATH=/path/to/dbt
uvx dbt-mcp
# No errors = server starts successfully; Ctrl+C to stop
After setting up in Claude Code, ask Claude:
DBT_PROJECT_DIR to the repo root (where dbt_project.yml lives, typically the repo root for Wire projects).mcp.json already exists — always add the dbt server entry rather than creating a new filedbt_cloud), the remote server gives Claude visibility into job status via the Admin API