dbt文档元数据服务

一个用于交互dbt项目元数据的服务器,提供节点搜索、依赖关系追踪和列级血缘分析功能,适用于数据工程团队进行元数据管理和分析。

  • by mattijsdp
  • Python
  • 本地部署
  • 23 星标
  • 更新于
在 GitHub 查看 mattijsdp/dbt-docs-mcp

使用说明

dbt文档mcp

用于与dbt项目元数据(包括dbt文档工件)交互的模型上下文协议(MCP)服务器(manifest.json, catalog.json).此服务器公开dbt图信息,并允许查询节点详细信息、模型/列沿袭和相关元数据。

关键功能

此服务器提供以下工具:

  • 搜索数据库节点:
    • 按名称查找节点(模型、源、测试等)(search_dbt_node_names).
    • 根据列名定位节点(search_dbt_column_names).
    • 在已编译的节点SQL代码中搜索(search_dbt_sql_code).
  • 检查节点:
    • 检索任何给定节点唯一ID的详细属性(get_dbt_node_attributes).
  • 探索血统:
    • 查找节点的直接上游依赖项(前置项)(get_dbt_predecessors).
    • 查找节点的直接下游从属(继承者)(get_dbt_successors).
  • 柱级谱系:
    • 追踪模型中特定列的所有上游来源(get_column_ancestors).
    • 跟踪模型中特定列的所有下游依赖项(get_column_descendants).
  • 建议的扩展:
    • 允许执行SQL查询的工具。
    • 直接从数据库检索表/视图/列元数据的工具。
    • 搜索知识库的工具。

入门指南

  1. 先决条件: 确保你已经安装了Python 紫外线
  2. 克隆仓库:
    git clone <repository-url>
    cd dbt-docs-mcp
    
  3. 可选:解析列级沿袭的dbt清单:
    • 设置所需的Python环境,例如:
    uv sync
    
    • 使用提供的脚本 scripts/create_manifest_cl.py 只需提供dbt清单、dbt目录的路径以及模式和列沿袭文件的所需输出路径:
    python scripts/create_manifest_cl.py --manifest-path PATH_TO_YOUR_MANIFEST_FILE --catalog-path PATH_TO_YOUR_CATALOG_FILE --schema-mapping-path DESIRED_OUTPUT_PATH_FOR_SCHEMA_MAPPING --manifest-cl-path DESIRED_OUTPUT_PATH_FOR_MANIFEST_CL
    
    • 根据dbt项目的大小,创建列沿袭可能需要一段时间(几个小时)
  4. 运行服务器:
    • 如果您所需的MCP客户端(Claude desktop、Cursor等)支持MCP.json,则如下所示:
    {
        "mcpServers": {
            "DBT Docs MCP": {
            "command": "uv",
            "args": [
                "run",
                "--with",
                "networkx,mcp[cli],rapidfuzz,dbt-core,python-decouple,sqlglot,tqdm",
                "mcp",
                "run",
                "/Users/mattijs/repos/dbt-docs-mcp/src/mcp_server.py"
            ],
            "env": {
                "MANIFEST_PATH": "/Users/mattijs/repos/dbt-docs-mcp/inputs/manifest.json",
                "SCHEMA_MAPPING_PATH": "/Users/mattijs/repos/dbt-docs-mcp/outputs/schema_mapping.json",
                "MANIFEST_CL_PATH": "/Users/mattijs/repos/dbt-docs-mcp/outputs/manifest_column_lineage.json"
            }
            }
        }
    }