ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

DataHub × Google Vertex AI Agent Designer:在低代码 Agent Builder 中接入 DataHub MCP 服务器构建企业数据智能体

DataHub × Google Vertex AI Agent Designer:在低代码 Agent Builder 中接入 DataHub MCP 服务器构建企业数据智能体 DataHub × Google Vertex AI Agent Designer在低代码 Agent Builder 中接入 DataHub MCP 服务器构建企业数据智能体【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub在 DataHub 的 Agent Context Kit 体系中Google Vertex AI 是一条面向托管智能体平台的集成路线通过把 DataHub 的 MCP 服务器 挂载到 Vertex AI Agent Builder 的 Agent Designer 低代码画布中数据团队成员可以可视化地原型化能查表、能看血缘、能读文档的数据智能体再用代码方式导出到生产环境。本文将围绕该集成讲解前提条件、Agent Designer 内的完整配置步骤、无认证 MCP 的限制与绕过方案携带Authorization头的 ADK 代码以及如何一键导出为 Python 继续用 Google ADK 或 LangChain 深度开发并辅以仓库内真实示例与源码实现佐证。集成全景Agent Designer 与 DataHub MCP 服务器Google Vertex AI Agent DesignerAgent Builder 中的低代码智能体设计器允许通过可视化界面创建智能体、编写指令、选择模型并挂接工具。当前它还处于preview预览功能阶段使用前需要确认你的 Google Cloud 项目已开启对应能力。DataHub 一侧提供的对接能力是MCPModel Context Protocol服务器它把 DataHub 元数据面包装成标准工具集使任何 MCP 兼容客户端都能用自然语言/结构化语法搜索数据集、仪表盘等实体支持通配符revenue_*、字段过滤tag:PII、布尔逻辑等拉取实体的完整元数据schema、owner、文档、标签、质量信号在表级与列级沿血缘上下游多跳追踪数据流向取回引用某数据集的真实 SQL 查询并基于真实使用模式起草新查询管理标签、术语、描述、域、owner 等元数据需要开启变更工具。这些工具的具体清单与读写分组可参考 DataHub MCP Server 文档。连接方式上DataHub Cloud 提供托管端点https://tenant.acryl.io/integrations/ai/mcp也支持 OAuth 动态客户端注册DataHub Core / 自托管场景则可自行部署开源的mcp-server-datahubstdio 或共享 HTTP 两种模式。Agent Designer 集成适用的正是前者——在 UI 中直接填入一个远程 MCP 端点 URL。前提条件开始前请确认同时满足两侧要求Google Cloud 侧一个已启用Vertex AI Agent Builder的 Google Cloud 项目浏览器可访问 Agent Designer 控制台该 URL 即创建与编辑智能体的入口。DataHub 侧一个可用的 DataHub 实例且已启用 MCP 服务器。DataHub Cloud 用户直接使用托管端点自托管用户需要先完成 MCP 服务器的部署与鉴权配置若 DataHub 实例要求鉴权例如需要 Bearer token需要提前准备好个人访问令牌——因为 Agent Designer 的 UI 本身只支持无认证的 MCP 服务器认证场景必须走导出代码路线详见下文。在 Agent Designer 中配置 DataHub MCP 服务器整个配置流程围绕创建智能体 → 添加 MCP 工具 → 测试三步展开打开 Agent Designer点击Create agent创建新智能体。为智能体设置name智能体名称instructions系统指令例如You are a data catalog assistant. Use DataHub tools to find datasets, schemas, and lineage.你是一名数据目录助手请使用 DataHub 工具查找数据集、schema 与血缘model选择底层模型例如 Gemini 2.5 Flash。点击Add tools → MCP Server添加一个 MCP 服务器类型的外部工具。填写display name显示名称例如DataHubMCP endpoint URL指向你的 DataHub MCP 端点托管场景下为https://tenant.acryl.io/integrations/ai/mcp自托管场景为对应部署的/mcp地址。点击Save保存——Agent Designer 会自动发现并枚举该 MCP 服务器暴露的全部工具无需手工声明。打开Preview tab与智能体对话测试例如查找用户的维度表并查看其上游血缘。其中第 2 步的 instructions 是否写得足够具体直接影响智能体是否愿意调用 DataHub 工具——这一点与 google-adk.md 文档中Agent not using tools? Strengthen theinstructionprompt的排障建议完全一致。实践中建议在指令中明确要求先搜索 DataHub 再回答问题并在答案中附带 URN。MCP 认证限制UI 不支持鉴权端点这是集成中最关键的一条限制Agent Designer 的 UI 只支持不需要认证的 MCP 服务器。这意味着如果你的 DataHub 实例要求 bearer token托管实例在多数情况下都会要求直接在 UI 中填写带鉴权的端点会失败。解决办法是点击Get code按钮将智能体导出为 Python 代码然后在代码中手工添加Authorization请求头。仓库文档给出的最小示例为from google.adk.tools.mcp_tool import McpToolset from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams toolset McpToolset( connection_paramsStreamableHTTPConnectionParams( urlhttps://tenant.acryl.io/integrations/ai/mcp ), headers{Authorization: fBearer {YOUR_TOKEN}}, )其中YOUR_TOKEN需要替换为你从 DataHub 生成的个人访问令牌服务账号 / 无人值守场景建议改用 Service Account 令牌。McpToolset是 Google ADK 对 MCP 服务器的内置封装StreamableHTTPConnectionParams指定了流式 HTTP 传输参数headers则把 DataHub 的 Bearer 认证注入每次工具调用。完整可运行版本对齐仓库示例在 simple_mcp.py 中仓库给出了该方案的完整可运行形态——它不仅补全了Agent的组装还演示了两个必须注意的生命周期细节import asyncio import os from google.adk.agents import Agent from google.adk.runners import Runner from google.adk.sessions import InMemorySessionService from google.adk.tools.mcp_tool import McpToolset from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams from google.genai import types from datahub.sdk.main_client import DataHubClient # 1. 连接 DataHub从环境变量读取 GMS 地址与令牌 datahub_gms_url os.getenv(DATAHUB_GMS_URL) if datahub_gms_url is None: client DataHubClient.from_env() else: client DataHubClient(serverdatahub_gms_url, tokenos.getenv(DATAHUB_GMS_TOKEN)) datahub_mcp_server_url os.getenv( DATAHUB_MCP_SERVER_URL, http://localhost:8080/mcp ) async def main() - None: session_service InMemorySessionService() session await session_service.create_session( app_namedatahub_simple_search, user_iduser, ) # 2. 通过 McpToolset 连接 DataHub MCP 服务器并注入 Authorization 头 toolset McpToolset( connection_paramsStreamableHTTPConnectionParams( urldatahub_mcp_server_url, headers{Authorization: fBearer {client._graph._token}}, ), ) # 3. 关键在本 async task 中主动初始化 MCP 会话 # 使 AsyncExitStack 归属当前 task避免 close() 时跨 task 退出报错 await toolset.get_tools() # 4. 组装 Agent agent Agent( modelgemini-2.5-flash, namedatahub_agent, instructionYou help users find datasets in DataHub. Provide clear, concise answers., tools[toolset], ) runner Runner( agentagent, app_namedatahub_simple_search, session_servicesession_service, ) try: async for event in runner.run_async( user_iduser, session_idsession.id, new_messagetypes.Content(roleuser, parts[types.Part(textFind datasets about users)]), ): if event.is_final_response() and event.content and event.content.parts: print(fAgent: {event.content.parts[0].text}) finally: # 5. 使用结束后显式关闭 MCP 会话 await toolset.close() if __name__ __main__: asyncio.run(main())对照上面的代码有三个工程细节值得注意await toolset.get_tools()必须在拥有 toolset 的同一 async task 中调用否则AsyncExitStack会归属到子任务后续toolset.close()会抛出Attempted to exit cancel scope in a different task错误——这一点在 google-adk.md 的 Troubleshooting 一节与simple_mcp.py的注释中都有明确说明关闭清理使用完毕后应在finally块中调用await toolset.close()避免 MCP 会话与 HTTP 连接泄漏令牌来源Authorization头既可以从环境变量读取DATAHUB_GMS_TOKEN也可以复用DataHubClient内部持有的令牌示例中通过client._graph._token取得。如果不想引入McpToolset也可以直接跳过 MCP 端点改用 ADK 原生的 Python 工具嵌入方式见下节两种接入方式在 google-adk.md 中都有完整说明。导出到代码从低代码原型到生产 Agent点击Get code后Agent Designer 会把当前智能体导出为 Python 代码。你可以选择两条主线继续开发Google ADK继续使用 ADK 的Agent/Runner编程模型把McpToolset或build_google_adk_tools()生成的工具列表挂进Agent(tools...)LangChain将 DataHub 工具接入 LangChain 的 Agent 运行时。这样便形成了可视化原型 → 代码生产的平滑过渡低代码阶段用于快速验证指令、模型与工具组合的效果导出后即可获得版本控制、单元测试、CI/CD 与更细粒度鉴权等生产级能力。如果你希望最终 Agent 不再依赖 MCP 端点而是把 DataHub 工具以 Python 函数形式直接嵌入 ADK仓库的 simple_search.py 提供了最小实现用DataHubClient.from_env()建立连接build_google_adk_tools(client, include_mutationsFalse)生成只读工具集再传入Agent(toolstools)即可。而 basic_agent.py 则展示了更完整的数据分析师智能体DataHub 负责发现与理解数据搜索、schema、描述、owner、文档、血缘BigQuery 的BigQueryToolset负责执行查询只读模式两者组合回答上个季度各区域营收是多少这类业务问题。工具注册的源码实现build_google_adk_tools的实现位于 builder.py。从源码结构看include_mutationsFalse默认时返回的是纯只读工具集search_documents、grep_documents、get_entities、list_schema_fields、get_me、get_lineage、get_lineage_paths_between、get_dataset_queries、get_dataset_assertions、list_incidents、search当include_mutationsTrue时追加update_description、set_domains/remove_domains、add_owners/remove_owners、add_structured_properties/remove_structured_properties、add_tags/remove_tags、add_glossary_terms/remove_glossary_terms、save_document、raise_incident/resolve_incident等变更类工具。每个工具都由create_context_wrapper包装其作用是在工具执行前自动把DataHubClient注入上下文因此这些函数可以直接作为 ADKAgent的tools参数使用无需手工管理客户端传递。这些底层工具函数集中在 mcp_tools 目录下按职责拆分search.py、entities.py、lineage.py、tags.py、terms.py、descriptions.py、documents.py、incidents.py等与 MCP 服务器暴露的工具一一对应——这也解释了为什么Agent Designer 保存后会自动发现工具MCP 服务器本身就是这些工具的统一出口。在 DataHub Cloud 上还有build_google_adk_cloud_tools(client, ask_datahubTrue)同文件 113 行起额外提供 Ask DataHub 助手类工具仅限 Cloud 实例使用连接开源 DataHub 实例时应移除该行。小结场景推荐路径DataHub 端点无鉴权、只想快速验证Agent Designer UI 直接添加 MCP 服务器Preview 中测试DataHub 端点要求 Bearer tokenAgent Designer 原型 →Get code导出 → 用McpToolsetAuthorization头接入参考 google-adk.md需要生产化、版本控制、更多工具控制导出代码后用 Google ADK 或 LangChain 继续开发或改用build_google_adk_tools直接嵌入把 DataHub 接入 Agent Designer 的核心收益在于业务数据上下文owner、血缘、文档、质量信号、示例查询成为了智能体决策的事实来源——智能体不再是靠猜来回答数据问题而是先在 DataHub 中检索真实目录与血缘再决定下一步动作。更多可构建的智能体形态数据分析 / 数据质量 / 数据治理见 Agent Context Kit。【免费下载链接】datahubThe Context Platform for your Data and AI Stack项目地址: https://gitcode.com/GitHub_Trending/da/datahub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表