
MCP 协议入门与实践一句话核心MCP 大模型调用外部工具的标准化协议。Function Call 让模型“会调用工具”但工具一多就会出现定义难维护、跨语言难集成、权限难控制、调用难追踪的问题。MCP 的作用是在 Function Call 之上提供一套统一的工具管理和调用标准。为什么重要Function Call 适合工具少的场景。比如只有两个工具查年假查订单你可以手写 JSON Schema然后用 if-else 路由。但如果工具变成 20 个查考勤查销售数据查报销进度查会议室查库存查物流查合同这时候问题就来了工具定义难维护每个工具都要手写 JSON Schema。工具发现困难系统里有哪些工具只能翻代码。跨语言集成麻烦Java、Python、HTTP API 都要单独适配。权限和安全复杂谁能调用哪个工具需要自己写逻辑。可观测性差工具调用次数、耗时、失败率、调用链路都要自己埋点。所以MCP 不是为了解决“能不能调工具”而是解决“工具规模化之后怎么管”。核心知识点1. Function Call 解决的是“调用工具”Function Call 的核心能力是模型根据用户问题判断是否需要调用工具并输出结构化的调用意图。比如用户问我还剩几天年假模型可能输出json { function: getUserAnnualLeave, arguments: { userId: user_123 } }然后由程序真正执行这个函数再把结果交给模型生成回答。一句话记忆Function Call 让模型从“只会回答”变成“能调用工具”。2. Function Call 的痛点是“工具多了管不住”Function Call 本身不负责工具管理。它没有解决工具怎么统一定义工具怎么动态发现工具怎么跨语言调用工具权限怎么控制工具调用链路怎么监控所以工具少时 Function Call 很好用工具多时就容易变成一堆 JSON Schema 和 if-else。一句话记忆Function Call 适合小规模工具调用不适合大规模工具治理。3. MCP 是“大模型世界的 USB 接口”MCP 全称是 Model Context Protocol模型上下文协议。它的核心思想是只要工具实现了 MCP 协议就可以被任何支持 MCP 的客户端调用。类比 USB工具 鼠标、键盘、U 盘AI 应用 电脑MCP USB 标准没有 MCP 时每个工具都要单独适配。有 MCP 后只要工具实现 MCP ServerClaude Desktop、Cursor、企业知识库助手等 MCP Client 都可以调用。一句话记忆MCP 让不同语言、不同系统、不同工具通过统一协议接入 AI 应用。4. MCP 的三层架构Host、Client、ServerMCP 架构主要分三层text Host 宿主应用 ↓ MCP Client 客户端 ↓ MCP Server 服务端Host用户直接使用的 AI 应用比如Claude DesktopCursor企业知识库助手Ragent职责接收用户输入调用大模型协调工具调用展示最终结果。ClientHost 内部的通信组件职责和 MCP Server 建立连接获取工具列表发送工具调用请求接收调用结果。一个 Host 可以有多个 Client每个 Client 通常连接一个 Server。Server真正提供工具的一方职责声明自己有哪些工具接收调用请求执行工具逻辑返回结果。比如HR MCP Server查年假、查考勤Order MCP Server查订单、查物流Knowledge MCP Server查知识库一句话记忆Host 面向用户Client 负责通信Server 提供工具。5. MCP 的核心能力Tools、Resources、PromptsMCP 主要定义三类能力。Tools工具调用最重要也是最常用的能力。比如查询年假查询订单查询天气搜索知识库执行数据库查询Tools 对应 Function Call 里的“函数调用”但区别在于MCP 的工具定义在 Server 端Client 启动时可以动态发现工具列表。Resources资源访问Resources 用来提供上下文数据。比如文件内容数据库记录日志文件配置文件它更偏“读取资料”不是“执行动作”。Prompts提示词模板Prompts 是预定义的提示词模板。比如代码审查模板文档总结模板SQL 优化分析模板实际项目里 Tools 最核心Resources 和 Prompts 了解即可。一句话记忆Tools 负责调用工具Resources 负责提供数据Prompts 负责复用提示词模板。6. MCP 和 Function Call 不是替代关系而是增强关系MCP 不是替代 Function Call。它们的关系是text Function Call模型输出调用意图 MCP管理工具定义、发现、通信和调用Function Call 更像“发动机”MCP 更像“整车”。发动机让车能动但真正上路还需要方向盘、刹车、仪表盘、接口标准。一句话记忆Function Call 负责让模型会调工具MCP 负责让工具体系可管理、可复用、可扩展。7. MCP 协议和 Spring AI 框架要分清MCP 是协议不是某个具体框架。Spring AI 是 MCP 的一种 Java 实现方式。MCP 协议层解决工具元数据格式Client 和 Server 通信协议工具发现机制跨语言互通Spring AI 框架层解决用 Tool 注解定义工具自动生成 JSON Schema自动注册工具封装通信细节类比text MCP 协议 ≈ HTTP 协议 Spring AI ≈ Spring MVCHTTP 是标准Spring MVC 是方便写 HTTP 服务的框架。MCP 是标准Spring AI 是方便写 MCP Server 的框架。一句话记忆MCP 是标准Spring AI 是实现这个标准的工具。8. MCP 的两种传输方式MCP 主要有两种通信方式。Stdio本地进程通信Client 启动本地 Server 进程通过标准输入输出通信。适合本地开发个人工具Claude Desktop 本地插件Cursor 本地工具优点简单不需要网络不暴露端口安全性较高缺点只能本地使用不适合团队共享Streamable HTTP远程 HTTP 通信MCP Server 作为 HTTP 服务运行Client 通过 HTTP 请求调用。适合企业内部工具平台团队共享工具生产环境远程服务调用优点支持远程访问支持多个 Client 连接可利用 HTTP 生态做认证、监控、负载均衡缺点需要网络配置需要考虑认证和安全一句话记忆个人本地工具用 Stdio团队和生产环境用 Streamable HTTP。9. MCP 在 RAG 系统中的作用RAG 本来解决的是先检索知识库再让模型基于资料回答。但 RAG 系统不一定只查知识库还可能要调用业务系统。比如用户问我的订单 12345 能退货吗这个问题需要两类能力查询订单状态调用订单系统工具查询退货政策检索知识库在 MCP 架构下可以拆成多个 Servertext Order MCP Server查订单状态 Knowledge MCP Server查退货政策 HR MCP Server查年假考勤Host 根据模型判断调用不同 MCP Server最后综合生成答案。一句话记忆MCP 可以把知识检索、业务查询、外部 API 都封装成标准工具让 RAG 系统升级成更完整的 Agent 系统。必要例子例子 1没有 MCP 的 Function Call用户问查一下我的年假。传统 Function Call 流程text 1. Client 端手写 getUserAnnualLeave 的 JSON Schema 2. 把工具定义发给模型 3. 模型输出 tool_calls 4. 代码用 if-else 判断调用哪个函数 5. 执行函数 6. 把结果返回给模型生成回答问题是工具一多JSON Schema 和 if-else 会越来越难维护。例子 2有 MCP 之后HR 团队提供一个 MCP Servertext HR MCP Server: - getUserAnnualLeave - getUserAttendance - getSalaryInfo订单团队提供一个 MCP Servertext Order MCP Server: - getOrderStatus - getLogisticsInfo - getRefundStatusHost 启动时自动连接这些 Server获取工具列表。用户问我的订单 12345 到哪了模型选择 getLogisticsInfo 工具Host 通过 MCP Client 调用 Order MCP Server拿到结果后生成回答。好处是工具定义在 Server 端Client 不用手写 JSON Schema也不用为每个工具写一堆适配代码。例子 3MCP RAG用户问我的订单 12345 能不能退系统需要text 1. 调用订单 MCP Server 查询订单状态 2. 调用知识库 MCP Server 检索退货规则 3. 模型综合两个结果生成答案这就不是单纯 RAG 了而是RAG 工具调用 多系统协同。面试表达版如果面试官问MCP 是什么可以这样答MCP全称 Model Context Protocol是一种面向大模型应用的开放协议主要用于标准化模型和外部工具、数据源之间的连接。Function Call 解决的是模型能不能调用工具的问题而 MCP 进一步解决工具规模化后的管理问题比如工具定义、动态发现、跨语言调用、传输协议、资源访问等。可以把 MCP 理解成大模型世界里的 USB 接口只要工具实现了 MCP Server任何支持 MCP 的 Host 或 Client 都可以调用它。如果面试官问MCP 和 Function Call 有什么区别可以这样答Function Call 是模型侧的能力它让模型能够根据用户意图输出结构化的工具调用请求。MCP 不是替代 Function Call而是在 Function Call 之上提供标准化的工具管理协议。Function Call 更关注“模型怎么发起调用”MCP 更关注“工具怎么定义、发现、通信和复用”。简单说Function Call 负责调用意图MCP 负责工具治理。如果面试官问MCP 的架构是什么可以这样答MCP 主要分为 Host、Client、Server 三层。Host 是用户直接使用的 AI 应用比如 Claude Desktop、Cursor 或企业知识库助手Client 是 Host 内部负责和 MCP Server 通信的组件Server 是真正提供工具的一方负责声明工具、接收调用请求、执行工具逻辑并返回结果。一个 Host 可以连接多个 MCP Server从而组合不同系统的能力。如果面试官问MCP 在 RAG 系统里有什么用可以这样答在 RAG 系统中MCP 可以把知识库检索、业务系统查询、第三方 API 都封装成标准工具。比如用户问订单能不能退系统可以一边调用订单 MCP Server 查询订单状态一边调用知识库 MCP Server 检索退货规则最后让模型综合生成答案。这样 RAG 就不只是查文档而是可以连接真实业务系统升级成更完整的 Agent 应用。最终记忆版MCP 大模型调用外部工具的标准化协议。Function Call 解决的是模型能不能根据用户问题调用工具。MCP 解决的是工具多了以后怎么统一定义、发现、调用、复用和管理。核心关系text Function Call让模型会调工具 MCP让工具体系可管理、可扩展、可复用MCP 三层架构text Host用户使用的 AI 应用 ClientHost 内部的通信组件 Server真正提供工具的一方MCP 三大能力text Tools工具调用最核心 Resources资源访问 Prompts提示词模板MCP 两种传输方式text Stdio本地工具适合个人开发 Streamable HTTP远程服务适合团队和生产环境和 RAG 的关系RAG 负责查知识库Function Call 负责让模型调用工具MCP 负责把知识库、业务系统、外部 API 都标准化接入 AI 应用。最终一句话Function Call 是模型调用工具的能力MCP 是管理和连接这些工具的标准协议它让 RAG 系统从“查资料回答”升级为“连接外部系统办事”的 Agent。