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驱动的数据助手的典型工作流程

  1. 启动MCP服务器(Docker镜像或python -m dbt_mcp)。
  2. 助手(例如Claude、Cursor、自定义LLM链)通过MCP客户端库(mcpb CLI)连接,并认证到您的dbt Platform帐户。
  3. 代理查询list_models→构建数据仓库的心智模型。
  4. 用户问:“上个月我们有多少活跃客户?”
  5. 代理调用text_to_sql(或使用query_metrics组合指标查询)获取精确的SQL,然后使用execute_sql运行它并返回结果。
  6. 如果用户想要一个新指标,代理可以调用generate_model_yaml和run来物化它,而无需用户编写任何dbt代码。

入门

  1. 安装 – 要么拉取Docker镜像(docker pull ghcr.io/dbt-labs/dbt-mcp),要么从仓库安装Python包。
  2. 获取MCP包 – 从最新版本下载dbt-mcp.mcpb,并使用Anthropic的mcpb CLI安装它(参见README链接)。
  3. 运行服务器 – dbt-mcp serve --port 8000(或文档中显示的Docker命令)。
  4. 连接 – 使用mcpb客户端或任何特定语言的SDK来调用上面列出的工具。
  5. 探索示例 – 仓库的examples/文件夹包含最小的Python脚本,演示了完整的往返过程:连接、列出模型、生成SQL并执行。

谁应该使用它

  • 以数据为中心的AI产品团队,构建需要最新dbt元数据的聊天或语音助手。
  • 分析工程师,希望将他们的dbt项目暴露给内部机器人以实现自助报告。
  • 自定义代理的开发者(例如LangChain工具),寻找一种交钥匙的方式来让代理深入了解数据模型。

限制/注意事项

  • 服务器是实验性的;某些工具被标记为已弃用,可能会在未来的版本中删除。
  • CLI类工具(build, run, trigger_job_run)可以修改生产数据;仅向可信代理授予访问权限。
  • search工具是alpha,目前尚不普遍可用。

进一步阅读


以上所有信息均直接取自仓库的README;没有推断任何额外功能。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目