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

发布时间:2026/9/14 0:13:24

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/9/14 0:08:23

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

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

2026/9/14 2:03:31

知识图谱驱动的心理咨询问答系统:从规则到关系推理

简介:这是一份基于知识图谱的心理咨询智能问答系统完整项目,适合计算机、人工智能、电子信息等相关专业的在校生用于毕业设计、课程设计或初期项目演示,也适合想学习知识图谱与问答系统结合开发的开发者进阶参考。资源共2000个文件&#xff0…

2026/9/14 2:03:31

Day 9·3 q8 KV 精度对照——量化进注意力,输出差多少

真机实测通过:本文实验已在 RK3588 板端实测完成(2026-09;方法学与原始记录见仓库 docs 与《实验脚本》目录) 一句话导读:q8 KV 精度对照实验:fp32 与 q8 两套 KV 走同一注意力公式,板端实测输出…

2026/9/14 2:03:31

Day 9·1 KV 也量化——q8 KV 把缓存与 decode 带宽压到一半

源码精读篇:本文为源码/方法论精读,无独立实测;文中数字均引述仓库 docs 的板端实测记录 一句话导读:q8 KV:把 K、V 从 f16 压到 INT8,按每 token 每头定标量化,逐字节算清缓存与 decode 扫描带…

2026/9/14 2:03:31

MATLAB fmincon求解多元非线性目标函数与Simulink仿真实践

简介:一份面向多元非线性目标函数求解的Matlab实现资源,适用于需要处理带约束优化问题的工程、经济学、物理学等领域学习者。内容聚焦如何定义非线性目标函数、设置不等式与等式约束,并讲解梯度下降、拉格朗日乘数法、惩罚函数等常见求解思路…

2026/9/14 2:03:31

提示工程测试规范体系:构建高效AI系统的关键

1. 提示工程测试规范体系概述在人工智能技术快速发展的今天,提示工程(Prompt Engineering)已成为构建高效AI系统的关键环节。作为架构师,我们需要建立一套完整的测试规范体系来确保提示设计的质量和稳定性。这套体系不仅关乎单个提…

2026/9/14 1:58:31

QPSK调制解调链路MATLAB误码率仿真:从原理到工程实现

简介:QPSK调制解调通信链路MATLAB误码率仿真资源,面向通信工程、电子信息类学生及需要快速搭建QPSK仿真的研究者。资料包含可直接运行的MATLAB程序、逐行中文注释和配套操作讲解视频,能够帮助理解正交相移键控的基本原理、发射接收链路结构以…

2026/9/13 0:01:16

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/14 0:03:22

KCF目标跟踪算法与OTB工程实现:毕业设计实战解析

简介:这是一份基于KCF核相关滤波算法、融合尺度池与抗遮挡处理的目标检测跟踪MATLAB完整源码,主要面向计算机相关专业准备毕业设计、课程设计或期末大作业的学生,也适合需要项目实战练习的初学者。源码在OTB数据集上完成验证,能够…

2026/9/14 0:03:22

语音情感识别实战:Keras实现LSTM、CNN、SVM与MLP多模型对比

简介:面向语音情感识别入门与进阶开发者,这份基于Keras的项目源码完整实现了LSTM、CNN、SVM、MLP四种模型,兼容Python3.8与Keras/TensorFlow2环境。压缩包内含49个文件,大小约70.31MB,主体包括Python脚本、yaml/json配…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/13 11:18:28

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

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

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

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