FunctionCalling、MCP与Skill的三层架构解析,从模型意图到业务落地的完整链路
Function Calling 是模型表达调用意图的能力,MCP 提供标准化工具接入协议,Skill 封装业务流程与知识。三者并非竞争关系,而是自下而上的协作层级:FC 负责‘说什么’,MCP 负责...
在 AI Agent 开发实践中,Function Calling、MCP(Model Communication Protocol)与 Skill 三个术语频繁出现,但其关系常被混淆。近期技术社区中,该问题已成为面试高频题,不少工程师仍停留在背定义阶段,缺乏对工程落地逻辑的系统理解。实际上,三者构成一套分层协作架构,分别对应模型侧表达、接入侧连接与业务侧封装,共同支撑从用户请求到结果返回的完整闭环。
如上图所示,整个流程始于用户输入,经由 Java 应用或 Agent 接收后,进入三层协同处理:最底层是 Function Calling(FC),中间层为 MCP 协议栈,顶层则是 Skill 封装单元。它们不是替代关系,而是递进式分工——FC 解决“模型如何表达调用意图”,MCP 解决“工具如何被标准化接入”,Skill 解决“任务如何按规范可靠执行”。
关键在于,模型仅负责“点菜”,不参与“做菜”——它生成调用指令后,由应用层在 JVM 中实际执行方法,并将结果回传给模型以生成最终回复。这一过程形成“模型决策 → 应用执行 → 结果回填”的三方契约。实际开发中还需注意 Parallel Tool Calls(支持并发调用多个无依赖工具)、Strict Mode(通过 Schema 强约束输出格式防幻觉)等细节。
MCP 则是在 FC 基础上构建的开放接入协议,旨在解决工具接入碎片化问题。传统方式下,每个工具需单独对接,形成点对点泥潭;而 MCP 通过统一的 JSON-RPC 接口规范,使工具可跨语言、跨进程独立部署。其核心组件包括 MCP Client(集成于应用端)、MCP Server(托管工具服务),以及用于发现与注册的 tools/list 端点。值得注意的是,MCP 并非多智能体通信协议(A2A 才负责 Agent 间横向协作),也非 FC 的替代品——MCP Client 收到模型意图后,底层仍依赖 FC 生成的 tool_call 数据结构完成调用。
上图清晰展示了典型调用链路:用户发起“查订单 ORD-2026-0421”请求,Java 应用将其转为 messages + tools Schema 发送至 LLM;模型识别后返回 tool_calls: queryOrder(orderId=);应用层进行参数校验与权限控制后,执行真实函数;结果以 role="tool" 形式回传,模型据此生成自然语言响应。整个过程中,模型始终只做“意图表达”,执行与安全均由应用层保障。
Skill 层则位于架构顶端,是面向业务的封装单元。它不仅包含工具调用逻辑,还整合 Prompt 指令、SOP 流程、领域知识与错误处理策略,相当于一份“岗位操作手册”。例如,一个订单履约 Skill 可能规定:先调用 queryOrder,再根据状态决定是否触发物流接口,失败时重试三次并记录日志。Skill 可通过 System Prompt 注入方式动态加载,使模型具备上下文感知的编排能力。
三者虽正交,但趋势正在融合。MCP 工作组已启动 Skills over MCP 标准制定,目标是在 2026 年实现 Skill 作为 MCP 的扩展能力集,从而统一工具发现、调用与流程编排。这意味着未来开发者可能只需定义 Skill,即可自动获得标准化接入与跨平台兼容性。
在 Java 生产环境中,常见落地路径有三条:一是本地快车道,使用注解驱动的 @Tool 方法,进程内直调,延迟毫秒级; 二是远程标准道,通过 MCP Client 连接独立部署的 MCP Server,适合微服务化场景; 三是知识注入道,将 Skill 文档按需嵌入 Prompt,提升模型任务理解精度。实际项目中需根据规模与耦合度权衡选择。
当前高频误区仍需警惕:其一,误认为 MCP 取代 FC,实则二者为上下层关系;其二,将 Skill 与 MCP 视为竞争,其实它们可独立存在;其三,混淆 MCP 与 A2A 协议,前者是应用-工具垂直连接,后者是 Agent- Agent 横向协作。
如图所示,同一套 MCP Server 可同时服务 Claude Desktop、Cursor 与自研 Java 应用等多个客户端,体现其跨平台兼容优势。这也解释了为何 OpenClaw 等平台在近期更新中同步升级 Skills 与 MCP Apps——底层协议统一后,上层能力复用效率显著提升。
随着 AI Agent 从概念验证走向规模化落地,对架构清晰度的要求日益提高。Function Calling、MCP 与 Skill 的分层设计,本质上是对“模型能力边界”与“工程可控性”之间张力的平衡:既保留大模型的灵活意图生成,又通过标准化接口与业务封装确保系统稳定与可维护。对于 Java 工程师而言,掌握这三层逻辑,不仅是应对面试的关键,更是构建可靠 AI 应用的基础能力。
