dbt-labs/dbt-mcp
A MCP (Model Context Protocol) server for interacting with dbt.
dbt-MCP Server – dbt项目与AI代理之间的桥梁
它是什么
- 一个开源服务器,实现了Model Context Protocol (MCP)。它公开了一组丰富的RPC风格工具,允许外部程序(通常是LLM驱动的代理)查询和操作dbt项目——模型、源、指标、语义层、作业运行,甚至从自然语言生成SQL。
- 该服务器可以针对dbt Core(本地)、dbt Fusion或dbt Platform运行,因此无论您是在本地开发还是在托管云环境中,相同的代理代码都可以工作。
为什么它对AI/ML工作流很重要
- 现代以数据为中心的AI代理需要上下文:仓库的架构、指标的定义和模型的谱系。dbt-MCP以结构化、编程化的方式为代理提供这些上下文。
- 它还可以让代理行动:运行dbt命令、触发作业、获取已编译的SQL,甚至通过代码生成辅助工具编写新的模型文件。
关键功能(按工具类别分组)
| 类别 | 值得注意的工具 | 它们允许代理做什么 |
|---|---|---|
| SQL | execute_sql, text_to_sql |
在dbt Platform上运行任意SQL,或使用项目的模型目录从自然语言提示生成SQL。 |
| 语义层 | list_metrics, query_metrics, get_dimension_values 等 |
检查和查询dbt语义层——检索指标定义、编译后的SQL、维度值等。 |
| 发现 | get_all_models, get_lineage, get_node_details, search (alpha) |
浏览整个dbt DAG,获取任何资源(模型、源、暴露、宏等)的元数据,并在项目中进行语义搜索。 |
| dbt CLI | run, build, test, compile, list 等 |
远程执行普通的dbt命令,使代理能够物化模型、运行测试或生成文档。 |
| 管理API | trigger_job_run, cancel_job_run, list_jobs, get_job_run_details 等 |
管理dbt Cloud作业——以编程方式启动、监控、重试或取消它们。 |
| 代码生成 | generate_model_yaml, generate_source, generate_staging_model |
从现有的仓库元数据自动创建样板dbt文件(YAML、源定义、暂存模型)。 |
| dbt LSP | fusion.compile_sql, fusion.get_column_lineage, get_column_lineage |
使用Fusion引擎(或本地dbt-LSP)编译具有完整Jinja上下文的SQL,并跟踪列级谱系。 |
| 产品文档 | search_product_docs, get_product_doc_pages |
从docs.getdbt.com拉取文档,对于需要引用官方指导的代理很有用。 |
| 服务器元数据 | get_mcp_server_version, get_mcp_server_branch |
内省正在运行的服务器本身。 |
AI驱动的数据助手的典型工作流程
- 启动MCP服务器(Docker镜像或
python -m dbt_mcp)。 - 助手(例如Claude、Cursor、自定义LLM链)通过MCP客户端库(
mcpbCLI)连接,并认证到您的dbt Platform帐户。 - 代理查询
list_models→构建数据仓库的心智模型。 - 用户问:“上个月我们有多少活跃客户?”
- 代理调用
text_to_sql(或使用query_metrics组合指标查询)获取精确的SQL,然后使用execute_sql运行它并返回结果。 - 如果用户想要一个新指标,代理可以调用
generate_model_yaml和run来物化它,而无需用户编写任何dbt代码。
入门
- 安装 – 要么拉取Docker镜像(
docker pull ghcr.io/dbt-labs/dbt-mcp),要么从仓库安装Python包。 - 获取MCP包 – 从最新版本下载
dbt-mcp.mcpb,并使用Anthropic的mcpbCLI安装它(参见README链接)。 - 运行服务器 –
dbt-mcp serve --port 8000(或文档中显示的Docker命令)。 - 连接 – 使用
mcpb客户端或任何特定语言的SDK来调用上面列出的工具。 - 探索示例 – 仓库的
examples/文件夹包含最小的Python脚本,演示了完整的往返过程:连接、列出模型、生成SQL并执行。
谁应该使用它
- 以数据为中心的AI产品团队,构建需要最新dbt元数据的聊天或语音助手。
- 分析工程师,希望将他们的dbt项目暴露给内部机器人以实现自助报告。
- 自定义代理的开发者(例如LangChain工具),寻找一种交钥匙的方式来让代理深入了解数据模型。
限制/注意事项
- 服务器是实验性的;某些工具被标记为已弃用,可能会在未来的版本中删除。
- CLI类工具(
build,run,trigger_job_run)可以修改生产数据;仅向可信代理授予访问权限。 search工具是alpha,目前尚不普遍可用。
进一步阅读
- 官方文档:https://docs.getdbt.com/docs/dbt-ai/about-mcp
- 介绍博客文章:https://docs.getdbt.com/blog/introducing-dbt-mcp-server
- MCP包CLI:https://github.com/modelcontextprotocol/mcpb
以上所有信息均直接取自仓库的README;没有推断任何额外功能。
相关
- 项目
- 项目
- 项目
- 项目
- 项目