Agent开发 - MCP初入门知识扫盲 📅 发布时间:2026/8/27 8:02:33 👁 浏览次数: 一、MCP介绍1. 起源背景随着 AI Agent 发展大模型需要调用各类外部工具、本地服务、第三方能力地图、数据库、文件等但不同工具厂商、服务的调用协议、入出参格式各不相同。每个大模型 / Agent 都要单独对接适配各类工具适配成本极高、无法复用缺少统一标准因此诞生 MCPModel Context Protocol模型上下文协议。2. 解决痛点工具与大模型强耦合新增工具需要单独开发适配代码不同工具通信协议不统一对接工作量大Agent 难以灵活、标准化地复用各类本地 / 远程能力工具能力无法跨客户端、跨 Agent 通用3. 使用场景IDE内置 AICursor 等对接本地 / 远程工具AIAgent调用第三方服务高德地图、天气、数据库本地文件、代码、知识库能力开放给大模型那么本地对外暴露的能力就相当于一个MCP Server多 Agent系统统一管理可调用工具4. 实现思想定义一套通用标准化 RPC 协议拆分三大角色MCP Host承载大模型的载体如 Cursor和Claude Code、MCP Client协议通信组件,向MCP Server发起调用工具请求、MCP Server提供工具能力。MCPServer对外统一暴露工具名称、描述、入参 schema大模型只需要理解这套标准工具描述由MCP Client 负责协议通信大模型无需感知底层工具的语言、部署方式实现模型和工具解耦。5. 使用步骤这也是我们从用户发起请求 - 调用外部mcp服务 - 模型给我们用户返回结果的整个流程部署 / 配置MCP Server定义自身可提供的tools、入参结构在MCP HostCursor 等配置MCP Server 连接信息stdio/Streamable HTTP如Cursor在mcp.json中使用stdio本地安装server形式配置高德地图MCP Server的npx安装和api_keyMCP Client自动发现拉取MCP Server 的工具列表与描述用户发起提问大模型判断是否调用工具生成工具名与参数MCP Client 按照MCP 协议请求 MCP Server 执行工具MCP Server 执行逻辑按协议返回结果大模型接收工具结果循环调用或整理最终答案返回用户6. 优缺点优点解耦大模型与外部工具工具可跨平台复用统一协议降低 Agent对接各类能力的开发成本支持本地 stdio、远程 HTTP多种传输方式标准化生态互通一份 MCP 服务可被任意兼容MCP的 Agent 使用缺点新增小型工具需要额外开发 MCP 服务有一定接入成本协议本身只规范通信不做鉴权、限流、权限管控需要自行实现依赖大模型具备 Function Calling 能力(对模型要求需要支持工具调用能力)7. 面试背诵精简总结⭐MCP 即模型上下文协议诞生是为解决大模型对接各类外部工具时协议不统一、适配成本高、强耦合的问题。核心思想是标准化协议拆分Host、Client、Server角色实现模型与工具解耦。适用 IDE AI、AI Agent 调用第三方 / 本地能力等场景。使用时配置 MCP 服务客户端自动发现工具大模型自主决策调用由 MCP 组件完成通信。优势是工具可跨 Agent 复用、降低对接成本缺点是接入存在开发成本无内置安全管控。二、我们用户向大模型发起请求调用MCP服务最后模型返回给我们结果整个完整流程是什么用户发送自然语言请求MCPClient将用户请求与已发现的 MCP 工具描述一同提交给大模型大模型分析请求判断是否需要调用 MCP 工具若需要生成对应工具名称与入参MCPClient按照MCP 协议将工具调用请求发送至目标 MCPServerMCPServer校验入参执行对应能力遵循 MCP 协议返回结果MCP Client将 MCP Server 返回的结果回传给大模型大模型结合工具返回信息判断是否需要继续调用其他 MCP 工具若无需继续调用则整理内容生成最终自然语言结果返回给用户三、现在的MCP三层架构相对于我们原来没有MCP调用本地工具时的流程原来的工具调用相对于现在MCP架构的区别是什么1. 旧方案流程大模型宿主MCP Host直接硬编码适配各类本地工具宿主内置各类工具的调用逻辑、参数映射、进程拉起逻辑大模型输出工具参数后由宿主内置代码直接调用本地工具工具返回结果直接回传给大模型。注大模型宿主MCP Host承载大模型会话、管理用户交互集成 MCP Client 组件的应用程序典型例子为 Cursor、Claude Desktop。它是整个交互的入口负责接收用户输入、调度大模型、驱动 MCP Client 和 MCP Server 完成工具调用。2. 核心区别耦合性旧方案大模型宿主和工具强耦合新增 / 更换工具需要修改宿主代码MCP 架构通过标准化协议解耦宿主无需感知工具实现仅依赖MCP Client 通用能力。复用性旧工具调用逻辑仅适配当前宿主无法直接迁移到其他 Agent / 客户端MCP Server可被所有兼容 MCP 协议的宿主直接复用。能力发现旧方案工具列表、参数 schema需要硬编码写在宿主内MCP 支持Client 自动发现 Server 的工具能力。通信标准旧方案没有统一通信规范不同工具自定义交互格式MCP 定义统一 RPC 规范支持 stdio、Streamable HTTP 等多种传输方式。职责拆分旧方案宿主承担协议适配、进程管理、参数转换等全部工作MCP拆分Host、MCP Client、MCP Server能力分层独立。核心区别总结就是一句话旧方案Host硬编码工具逻辑、参数、描述等信息单独适配通信协议和工具交互Host和工具耦合性太高且无统一通信协议及工具交互标准无法迁移复用到其它Agent中新方案三层架构将Host和工具调用解耦通信协议和工具交互统一标准分摊到Client和Server中Client负责向Server和大模型发送请求职责明确Client客户端的基本职责就是发请求Host只需要承载大模型会话、管理用户交互、集成 MCP Client 组件。同时还要补充两点1. MCP Client 除发送请求外还包含自动发现 MCP Server 工具列表、协议封装与结果透传的能力不只是单纯发请求2. 旧方案缺少自动工具发现能力工具信息需要硬编码维护MCP 架构支持Client 动态拉取Server 的工具描述与入参 Schema。四、Client是如何自动发现Server的各种工具能力并实现动态拉取的MCP Client 与 MCP Server建立传输连接stdio/Streamable HTTP后Client 发起listTools标准 RPC 请求MCP Server 收到请求后将自身注册的全部工具名称、描述、入参 Schema 封装后返回Client缓存该工具信息供后续大模型进行工具选择与参数生成以此完成动态发现拉取。追问那么若Server工具更新Client是如何动态更新Server的各种工具能力信息的呢MCP 协议无主动推送机制Client 不会自动感知 Server 工具变更Client 会在会话初始化时执行 listTools拉取工具列表如需更新需重新触发 listTools RPC重新建立连接、手动触发刷新等方式获取最新工具信息。如我们Cursor在连接好MCP服务后有个Reload按钮就是重新建立连接并拉取tServer端tools信息的作用。可以看到点击Reload按钮重新Connecting建立连接