ADK-Python Agent Registry 实战指南:用 Google Cloud Agent Registry 发现 Agent、MCP Server 与模型端点

发布时间:2026/11/11 18:59:20

ADK-Python Agent Registry 实战指南:用 Google Cloud Agent Registry 发现 Agent、MCP Server 与模型端点 ADK-Python Agent Registry 实战指南用 Google Cloud Agent Registry 发现 Agent、MCP Server 与模型端点【免费下载链接】adk-pythonAn open-source, code-first Python toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control.项目地址: https://gitcode.com/GitHub_Trending/ad/adk-python本文基于 ADK-Pythongoogle-adk开源仓库中的官方示例完整讲解如何通过AgentRegistry客户端在 Google Cloud Agent Registry 服务中发现已注册的 A2A Agent、MCP Server 与模型端点并将它们解析为可直接使用的 ADK 组件RemoteA2aAgent、McpToolset、模型名进而组装出具备动态发现能力的 Agent。读完本文你将掌握 Agent Registry 的完整配置、命令行操作与核心 API 用法并理解其底层认证、传输协议解析与资源解析原理。什么是 Agent Registry 集成Google Cloud Agent Registry 是一个集中式的 Agent 注册中心用于登记 A2A Agent、MCP Server 以及模型 Endpoint。ADK-Python 在google.adk.integrations.agent_registry模块中提供了面向 ADK 集成的高层客户端AgentRegistry与普通 REST 客户端不同它除了暴露服务的查询方法外还提供get_mcp_toolset、get_remote_a2a_agent等辅助方法——这些方法会自动解析连接细节并处理认证直接产出开箱即用的 ADK 组件见 agent_registry.py 的类文档。官方示例位于 contributing/samples/integrations/agent_registry_agent/核心脚本为 agent.py配套的 README.md 说明了完整配置与运行方式。环境准备与前置条件运行该示例前需要完成三步准备对应原文档 Setup 章节配置 Google Cloud 凭证确保本机已有有效的 Google Cloud 应用默认凭证例如执行gcloud auth application-default login。AgentRegistry客户端在初始化时会调用google.auth.default()获取默认凭证若缺失会抛出RuntimeError见 agent_registry.py。设置环境变量export GOOGLE_CLOUD_PROJECTyour-project-id export GOOGLE_CLOUD_LOCATIONglobal # or your specific regionGOOGLE_CLOUD_LOCATION默认值为global也可以指定具体区域如us-central1。示例脚本通过os.environ.get读取这两个变量并据此构造注册表的基础路径projects/{project_id}/locations/{location}见 agent.py。获取资源完整名称Agent、MCP Server、Endpoint 都以其完整资源名如projects/.../agents/my-agent为标识。可以运行一次示例脚本列出全部资源也可以用gcloud命令直接查询# For agents gcloud alpha agent-registry agents list --project$GOOGLE_CLOUD_PROJECT --location$GOOGLE_CLOUD_LOCATION # For MCP servers gcloud alpha agent-registry mcp-servers list --project$GOOGLE_CLOUD_PROJECT --location$GOOGLE_CLOUD_LOCATION拿到资源名后将 agent.py 末尾被注释的示例块取消注释并用资源名的最后一段替换其中的AGENT_NAME、MCP_SERVER_NAME和ENDPOINT_NAME。例如资源名为projects/.../agents/my-agent则使用my-agent。运行示例发现已注册的资源环境就绪后直接运行示例脚本python3 agent.py脚本会依次打印三类发现结果见 agent.py项目/区域下注册的所有 Agent含displayName与name所有 MCP Server含displayName与name所有 Endpoint含displayName与name关键词搜索 Workspace 命中的 Agent关键词搜索 agentregistry 命中的 MCP Server。值得说明的是原文档只列出了 Agent 与 MCP Server 的列举而示例脚本还额外调用了list_endpoints()枚举模型端点这是组装模型配置时同样重要的一环。AgentRegistry 核心 API 全景示例使用的核心 API 在AgentRegistry类中均有完整实现见 agent_registry.py按资源类型可归纳如下列举类方法方法作用关键实现list_agents(filter_str, page_size, page_token)获取已注册 A2A Agent 列表GETagents见 agent_registry.pylist_mcp_servers(filter_str, page_size, page_token)获取已注册 MCP Server 列表GETmcpServers见 agent_registry.pylist_endpoints(filter_str, page_size, page_token)获取已注册 Endpoint 列表GETendpoints见 agent_registry.py三个方法均支持filter、pageSize、pageToken参数返回Dict[str, Any]列表字段分别为agents、mcpServers、endpoints。搜索类方法方法作用关键实现search_agents(search_string, search_type, filter_str, order_by, page_size, page_token)搜索已注册 A2A AgentPOSTagents:searchsearch_mcp_servers(search_string, search_type, filter_str, order_by, page_size, page_token)搜索已注册 MCP ServerPOSTmcpServers:search搜索请求体支持searchString、searchType可选值为KEYWORD或SEMANTIC、filter、orderBy、pageSize、pageToken统一由内部_search辅助方法组装并发起 POST 请求见 agent_registry.py。获取类方法get_agent_info(name)获取单个 A2A Agent 的详细元数据get_mcp_server(name)获取单个 MCP Server 的详细元数据get_endpoint(name)获取单个 Endpoint 的详细元数据。从注册表解析 ADK 组件这是AgentRegistry与普通 REST 客户端最大的区别——它将注册表条目直接解析为 ADK 可用的组件对应原文档 How it Works 中被注释示例的三种用法。1. 解析远程 A2A Agent 为子代理remote_agent registry.get_remote_a2a_agent( fprojects/{project_id}/locations/{location}/agents/AGENT_NAME )get_remote_a2a_agent(agent_name)返回RemoteA2aAgent实例见 agent_registry.py。其解析逻辑为若注册条目携带A2A_AGENT_CARD类型的card.content则直接解析该 Agent Card 构造RemoteA2aAgent否则从displayName、description、version、skills等信息构建 Agent Card其中连接 URI 通过_get_connection_uri按A2A_AGENT协议类型提取若未显式传入auth_scheme会自动通过_resolve_auth_provider_scheme依据 IAM bindings 解析出GcpAuthProviderSchemeAgent 名称会经_clean_name清洗为合法的 Python 标识符非字母数字字符统一替换为下划线。2. 解析 MCP Server 为工具集mcp_toolset registry.get_mcp_toolset( fprojects/{project_id}/locations/{location}/mcpServers/MCP_SERVER_NAME )get_mcp_toolset(mcp_server_name)返回McpToolset实例见 agent_registry.py。其解析逻辑为优先尝试JSONRPC传输绑定其次回退到HTTP_JSON_TRANSPORT_MAPPING同时支持HTTP_JSON、JSONRPC、GRPC三种映射构造StreamableHTTPConnectionParams(urlendpoint_uri)作为连接参数若端点指向 Google API 且未配置 auth scheme/credential会自动附加 Bearer 认证头_is_google_api校验https://*.googleapis.com返回的是AgentRegistrySingleMcpToolset子类它会为每个工具注入gcp.mcp.server.destination.id自定义元数据该键会被google.adk.telemetry.tracing用于在execute_toolspan 上标记 MCP 目的地见 agent_registry.py便于链路追踪与按 MCP Server 维度聚合遥测。3. 解析模型端点model_name registry.get_model_name( fprojects/{project_id}/locations/{location}/endpoints/ENDPOINT_NAME )get_model_name(endpoint_name)返回形如projects/adk12345/locations/us-central1/publishers/google/models/gemini-2.5-flash的模型资源名见 agent_registry.py。其实现会从 Endpoint 的连接 URI 中剥离末尾的:方法名后缀并提取projects/...前缀作为模型名。组装完整的发现式 Agent将上述组件组合起来即可得到一个基于注册表动态发现的根 Agent对应 agent.py 末尾的完整示例from google.adk.agents.llm_agent import LlmAgent from google.adk.integrations.agent_registry import AgentRegistry from google.adk.models.google_llm import Gemini # 1. 初始化注册表客户端 registry AgentRegistry(project_idproject_id, locationlocation) # 2. 解析组件将下面的资源名替换为 list 方法打印出的真实资源名 remote_agent registry.get_remote_a2a_agent( fprojects/{project_id}/locations/{location}/agents/AGENT_NAME ) mcp_toolset registry.get_mcp_toolset( fprojects/{project_id}/locations/{location}/mcpServers/MCP_SERVER_NAME ) model_name registry.get_model_name( fprojects/{project_id}/locations/{location}/endpoints/ENDPOINT_NAME ) # 3. 用解析出的模型名初始化模型 gemini_model Gemini(modelmodel_name) # 4. 组装根 Agent root_agent LlmAgent( modelgemini_model, namediscovery_agent, instructionYou have access to tools and sub-agents discovered via Registry., tools[mcp_toolset], sub_agents[remote_agent], )该 Agent 运行时MCP Server 的工具会以tools形式注入注册表中的远程 A2A Agent 可作为子代理被调度模型则来自注册表中登记的 Endpoint——实现了注册表一处登记Agent 各处动态装配的编排模式。底层实现要点认证与 mTLSAgentRegistry初始化时会创建一次requests_auth.AuthorizedSession基于google.auth.default()的应用默认凭证并在每次内部 API 调用时通过merge_tracking_headers附加x-goog-user-project配额项目头见 agent_registry.py。mTLS 端点选择由_should_use_mtls_endpoint决定可通过环境变量GOOGLE_API_USE_MTLS_ENDPOINTauto/always/never与GOOGLE_API_USE_CLIENT_CERTIFICATE控制默认基地址为https://agentregistry.googleapis.com/v1mTLS 模式切换为https://agentregistry.mtls.googleapis.com/v1见 agent_registry.py。依赖说明AgentRegistry的导入依赖a2a-sdk包用于RemoteA2aAgent、AgentSkill与 Agent Card 的构建/解析未安装时会抛出提示pip install google-adk[a2a]的ImportError见 agent_registry.py。测试佐证仓库提供了覆盖上述行为的完整单元测试 test_agent_registry.py共 1104 行验证了get_mcp_toolset注入目的地 ID、auth provider bindings 解析、传输协议选择兼容 A2A 0.3.x 与 1.x 两种 Agent Card 结构等行为。此外test_samples.py 将integrations/agent_registry_agent标记为离线加载跳过项原因是calls Agent Registry API at import——即该示例在模块导入阶段就会访问真实的 Agent Registry API因此必须在配置好 Google Cloud 凭证的网络环境中运行。使用注意事项资源名必须是完整名称get_remote_a2a_agent、get_mcp_toolset、get_model_name等方法的参数是完整资源名如projects/{project}/locations/{location}/agents/{agent}而不是my-agent这样的短名短名仅用于替换示例脚本末尾注释块中的占位符。搜索类型可选search_agents/search_mcp_servers的search_type支持KEYWORD与SEMANTIC默认不指定时由服务端决定。区域选择影响可见资源GOOGLE_CLOUD_LOCATION决定查询范围global适用于全局资源区域资源需指定对应区域。离线路演不可行由于导入即发起网络请求该示例无法离线加载运行前务必确认网络与凭证可用参见 test_samples.py 的跳过说明。延伸阅读示例脚本全文contributing/samples/integrations/agent_registry_agent/agent.py客户端源码src/google/adk/integrations/agent_registry/agent_registry.py单元测试tests/unittests/integrations/agent_registry/test_agent_registry.py远程 A2A Agent 相关指南docs/guides/agents/remote_a2a_agent/【免费下载链接】adk-pythonAn open-source, code-first Python toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control.项目地址: https://gitcode.com/GitHub_Trending/ad/adk-python创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/11 13:44:58

量子深度学习:现状、挑战与未来突破

1. 量子深度学习的现状与挑战量子深度学习作为量子计算与人工智能的交叉领域,正在重新定义机器学习的边界。我在过去三年参与量子算法研发的过程中,亲眼见证了这项技术从实验室走向产业应用的转变。与传统深度学习相比,量子神经网络&#xff…

2026/11/11 18:56:05

电工证国家指定考点报考避坑指南:实操考试心里没底怕挂科怎么办

电工证国家指定考点报考避坑指南:实操考试心里没底怕挂科怎么办 实操考试心里没底怕挂科,这是很多在郑州准备考电工证的学员最真实的声音。尤其是在特种作业领域,一纸电工证不仅关系到能否上岗,更直接决定着职业发展和薪资待遇。但如果你不清楚【电工证国…

2026/11/11 18:56:05

津市如何报考电工证含金量高吗怎么考

津市如何报考电工证含金量高吗怎么考 怕考不过白交培训费,这是很多想报考电工证的朋友最担心的问题。尤其是在津市,电工证的含金量高不高,能不能一次通过,直接影响着你的职业发展和经济投入。今天就来聊聊 津市如何报考电工证…

2026/11/11 18:56:05

温州特种工考证班怎么报名?工地太忙根本没时间复习考试

温州特种工考证班怎么报名?工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,这几乎是每个特种作业人员的真实写照。尤其是像温州这种工程集中的地区,很多人一边要赶工期,一边还要抽空准备特种工考证。但特种作业操作证是上岗的“硬门槛”,…

2026/11/11 18:51:04

工地太忙根本没时间复习考试?电工证报名了在哪查询全国通用吗?

工地太忙根本没时间复习考试?电工证报名了在哪查询全国通用吗? 工地太忙根本没时间复习考试,这几乎是所有特种作业人员的真实写照。特别是电工证这种全国通用的证书,既是进入工地的“通行证”,也是日后升职加薪的“敲门砖”。一旦报名了,大家最关心的就…

2026/11/11 12:42:59

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/11 0:02:26

考低压电工证通过率考试真题与备考技巧

低压电工证通过率高不高?学历不高也能考,值不值得考? 你是不是总听说电工证能帮你找高薪工作,但又担心自己学历不够,考不上?其实,低压电工证考试门槛并没有你想象中那么高,关键是方法对不对。这篇文章就告诉你, 考低压电工证通过率到底有多高 ,…

2026/11/11 0:02:26

低压电工证学时千万别踩坑,濮阳毕业生怎么避坑报名

低压电工证学时千万别踩坑,濮阳毕业生怎么避坑报名 你是不是也和我一样,刚毕业就听说低压电工证学时必须达标才能上岗?可一打听,发现报名机构五花八门,价格参差不齐, 不知道去哪报名怕被中介坑…

2026/11/10 20:08:15

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/10 10:29:37

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑