真实面经题目 · 原创解析
Agent 工具服务为什么要独立部署并注册到 Nacos,而不是直接用 MCP 暴露工具?
这题考 Agent 工具服务的工程化部署边界:Nacos 解决服务发现和治理,MCP 解决模型侧工具协议,二者不是同一层能力,不能简单互相替代。回答时要强调在已有微服务治理体系下,Nacos 更适合管理真实工具服务的实例、健康、配置和流量,MCP 更适合统一工具契约、schema 和 Agent 侧调用方式。
真实面经题目 · 原创解析
这题考 Agent 工具服务的工程化部署边界:Nacos 解决服务发现和治理,MCP 解决模型侧工具协议,二者不是同一层能力,不能简单互相替代。回答时要强调在已有微服务治理体系下,Nacos 更适合管理真实工具服务的实例、健康、配置和流量,MCP 更适合统一工具契约、schema 和 Agent 侧调用方式。
我会先把层次分清楚:MCP 更像 Agent 和工具之间的标准交互协议,解决工具如何描述、schema 如何暴露、模型如何发起 tool call;Nacos 则是微服务注册发现和配置治理体系,解决工具服务作为生产服务如何被发现、健康检查、负载均衡、灰度、扩缩容和故障隔离。Agent 工具如果只是本地小工具或单客户端实验,直接用 MCP 暴露会很轻量;但如果工具背后是多个实例、多团队维护、高并发调用、需要限流熔断、版本治理和稳定 SLA,独立部署并注册到 Nacos 更合理。这样 Agent Runtime 不和工具实现强绑定,工具可以独立发布、扩容、回滚,多个 Agent 或业务系统也能复用同一套能力。更稳的做法不是否定 MCP,而是把 MCP 放在 Agent 侧作为工具协议或适配层,把 Nacos 放在服务治理层管理真实工具服务。面试回答要强调:MCP 负责模型可调用性,Nacos 负责生产可用性;选择取决于工具复杂度、调用规模、可靠性要求和组织协作方式。
题面问为什么 Tools 注册到 Nacos,而不是使用 MCP,核心不是比较谁更先进,而是比较抽象层级。MCP 主要面向 Agent 与工具之间的能力描述、参数 schema 和调用交互;Nacos 面向分布式服务的注册发现、配置、健康状态和流量治理。把 MCP 当成注册中心,或者把 Nacos 当成工具协议,都会混淆问题。
生产里的工具往往不是几行函数,而是查库、调业务 API、跑检索、访问缓存、处理权限或执行动作的服务。独立部署后,工具服务可以独立发版、扩缩容、回滚和监控,不需要每次工具改动都重新发布 Agent Runtime。多个 Agent、多个业务入口也可以复用同一批工具能力,避免每个 Agent 内部重复实现一套工具逻辑。
注册到 Nacos 的价值在于服务发现、实例健康检查、动态配置、负载均衡基础信息、灰度路由依据和故障摘除。Agent 调工具时不应硬编码某个实例地址,而应通过注册中心找到当前可用实例。工具实例异常、扩容、下线或迁移时,调用方可以通过服务发现和本地缓存继续保持基本可用性。
直接用 MCP 暴露工具适合轻量、本地、低并发、低风险或单客户端场景,但它本身不等同于完整的微服务治理方案。生产落地还需要实例管理、限流熔断、重试退避、鉴权审计、版本兼容、容量规划和链路追踪。如果所有工具都只作为 MCP Server 被 Agent 直接连接,规模扩大后容易出现工具散落、治理不统一、SLA 不清和故障难定位的问题。
可以把 MCP 看成面向模型的北向接口,把 Nacos 管理的工具服务看成后端能力层。Agent 侧通过 MCP 工具描述理解可调用能力,MCP Adapter 或工具网关再根据服务名、版本和权限去 Nacos 发现真实工具实例。这样既保留 MCP 的标准化工具生态,又利用已有微服务体系的治理、监控和发布能力。
如果工具只是读取本地文件、查询少量静态资源或做 Demo,直接 MCP 暴露成本低;如果工具涉及业务状态、写操作、高并发、多人协作、跨服务调用或线上稳定性,就应独立服务化并接入注册中心。面试中要把结论说成工程取舍,而不是绝对说 MCP 不适合或 Nacos 一定更好。
不是。MCP 的价值在于统一 Agent 侧工具描述、schema 和调用交互,减少不同工具接入方式的碎片化;它可以作为工具协议层,而不是替代所有服务治理设施。
本地工具、个人效率工具、低风险只读工具、Demo 验证、单 Agent 小规模场景可以直接 MCP 化,优点是接入快、成本低。
成熟实现会有本地缓存和最后可用实例列表,已有调用可以尽量继续;但新实例发现、下线感知和配置变更会受影响,所以还要设计缓存过期、降级和恢复同步。
要在 Agent/MCP Adapter 层做 schema 校验、权限判断、风险分级、超时预算和审计;对有副作用的工具增加用户确认、幂等键和回滚或补偿机制。