B3 · MCP 通解——把后端工具/数据用统一协议喂给大模型
B3 · MCP 通解——把后端工具/数据用统一协议喂给大模型系列第 7 篇 · B 线AI 工程化第 3 篇定位架构师选型视角 · 深度长文承接B1《架构优先于模型》架构优先、B2《RAG 实战》检索即能力衔接B4《Agentic 与多智能体 Control Plane》MCP 服务 新型微服务0. 一句话立论MCPModel Context Protocol不是又一个 AI 框架它是一套后端能力 ↔ 大模型之间的 USB-C 接口标准。它的价值不在于让模型更聪明而在于让你已经写好的业务服务能被任意遵循该协议的 Agent/Client 零改造成本地复用——N 个后端能力 × M 个 AI 应用从 N×M 的胶水地狱收敛为 NM 的协议对接。对架构师而言MCP 真正要回答的不是怎么接一个工具而是你的后端能力要不要、何时、以什么形态暴露成可被智能体调用的标准服务。1. 为什么架构师必须懂 MCP那个被忽略的集成爆炸回到 B1 的八层架构其中有一层叫Tool MCP工具与上下文接入。这一层是 AI 应用能动手做事的唯一出口——查库、调 API、改订单、跑脚本全靠它。在没有统一协议的时代接一个工具长这样你的后端有一个「查订单」API ├─ 给 Claude 用 → 写一套 Anthropic function schema 执行适配 ├─ 给 Cursor 用 → 写一套 VS Code 插件 协议适配 ├─ 给内部 Agent 用 → 写一套 LangChain tool 重试/鉴权 └─ 给 Java 智能体用 → 写一套 Spring AI Tool 传输N 个能力 × M 个客户端 N×M 套重复胶水代码。每换一个模型供应商、每加一个工具集成成本线性叠加。这正是 2023–2024 年 AI 应用落地最痛的集成税。MCP 的解法很朴素在模型宿主和能力提供方之间插一层标准协议。能力方把工具注册成 MCP Server一次任意 MCP ClientClaude/Cursor/VS Code/你的 Java 智能体通过标准握手自动发现、调用它一次。重复劳动从 N×M 坍缩为 NM。一句话给老板讲清楚MCP 让你花钱写一次的业务能力能被公司里所有 AI 应用免适配地调用。2. MCP vs Function Calling不是替代是分层这是 2026 年被问得最多、也最容易讲错的一个问题。结论先给Function Calling 是模型如何调用一个函数的应用层能力MCP 是模型如何发现并标准化连接外部能力的协议层标准。两者互补不互斥。维度Function CallingMCP本质模型 API 的应用接口能力客户端-服务端开放协议工具定义各家私有 JSON Schema随每次 API 调用内联统一协议规范服务端一次性声明工具发现代码里写死传给模型tools/list协议内置动态发现能力范围主要是调用函数Tools做 Resources看 Prompts定调上下文/资源无标准机制resources/listresources/read提示模板无标准机制prompts/listprompts/get传输嵌在模型 API 里stdio / Streamable HTTP 标准通道跨客户端复用每端重写一份 Server多端通用状态/会话自定义协议规定生命周期与 Session生态各自为政共享 Server 生态最常见的误读“MCP 要取代 Function Calling。”正解MCP 底层仍然依赖模型的功能调用能力。它解决的是工具怎么被发现、怎么被标准化交付、怎么跨客户端复用——即 Function Calling 之上的传输与发现层。典型协作链路是MCP HostClaude/你的智能体 └─ 通过 MCP 协议发现 Server 暴露的 tools └─ 把 tool schema 翻译成模型 API 期望的 function schema └─ 模型产出 function call └─ Host 调对应的 MCP tool拿回结果继续生成所以MCP 是服务端集成边界Function Calling 是模型交互边界。一个适配器负责翻译两边的 schema、错误、调用身份——这正是 B1 强调的模型无关抽象层的落地形态之一。选型口诀单应用、三五个内部函数、最简实现 → 直接用 Function Calling。能力要跨客户端/跨厂商复用、要动态发现、要资源与提示模板一起暴露 → 上 MCP。3. 协议三原语Tools / Resources / PromptsMCP 之所以比只暴露函数厚一层是因为它定义了三类原语正好对应 AI 与外界交互的三种需求。记住一句口诀Tools 让 AI 动手做Resources 给 AI 看数据Prompts 给 AI 定调子。3.1 Tools工具——“动手做”有副作用的动作。tools/list返回工具清单每个带 JSON Schema 入参tools/call按名调用。对应 Function Calling 的能力。例query_order、create_ticket、run_migration关键每个 tool 的description不是给人看的是给模型读、用来决策是否调用的——这既是宝也是雷见 §6 工具投毒。3.2 Resources资源——“看数据”只读数据源按 URI 读取文件、数据库快照、API 响应、文档。resources/listresources/read。例file:///demo.txt、db://orders/schema、config://feature-flags价值把上下文标准化注入而不必每家公司自己发明一套 RAG/注入机制。3.3 Prompts提示模板——“定调子”参数化、可复用的提示词模板。prompts/listprompts/get。例代码审查模板、需求拆解模板、客服话术模板价值把领域最佳实践沉淀成 Server 提供的标准工作流起点。架构师视角把 Tools/Resources/Prompts 拆开等于把动作、数据、方法论三种资产分别产品化。一个 Server 就能覆盖一个业务域的大部分 AI 增强需求。4. 协议机制JSON-RPC 2.0 小方法集MCP 的底座是JSON-RPC 2.0 over transport上面叠了一组刻意做小的方法只管线缆格式不管模型怎么选工具、Agent 循环怎么跑方法作用initialize握手客户端与服务端协商协议版本与能力tools/list服务端返回可用工具每个带 JSON Schema 入参tools/call客户端按名 参数调用工具返回结果resources/list/resources/read只读上下文的列举与读取prompts/list/prompts/get提示模板的列举与获取通知tools/list_changed/resources/updated服务端主动推送 schema/数据变更设计哲学协议刻意瘦。它不规定工具该做什么、模型该怎么选、Agent 循环怎么写只把工具运行时 ↔ Agent 宿主的线格式标准化。这让它能被任意模型供应商和客户端复用也是它 18 个月内从有趣 spec变成运营标准的原因。5. 传输层选型stdio / Streamable HTTP / SSE已废弃这是 2026 年部署 MCP 最容易被过时教程坑的一步。2024 年的教程今天多半已经失效——传输层和安全模型在 2025 年的协议更新里都变了。传输机制最佳场景是否远程并发现状stdio客户端把 Server 拉起为子进程走 stdin/stdout本地工具、IDE 插件、CLIClaude Code否本地单进程本地默认桌面生态主导Streamable HTTP单一 HTTPS 端点POST 请求 可选 SSE 流式通知远程 Server、多 Agent 生产、微服务是优负载均衡友好2026 远程标准SSEHTTPSSE 双向——是中连接池易耗尽已在协议中废弃三个关键事实SSE 已废弃。原始HTTPSSE传输在 2024-11-05 之后被弃用2025 年协议更新中被Streamable HTTP取代单端点/mcpPOST 发请求长任务才用 SSE 流式。如果你的 Server 配置里还写着transport: sse你跑的是已被淘汰的协议。Streamable HTTP 为什么赢标准 HTTP POST/GETCDN、负载均衡器、边缘运行时都能直接处理无需长连接、无需特殊代理。社区实测stdio 在 20 并发下 22 个请求里失败 20 个SSE 稍好但仍受连接池约束Streamable HTTP 在负载均衡后并发表现最好。Streamable HTTP 安全要求协议白纸黑字校验Origin头防 DNS rebinding非法即返回HTTP 403本地运行只绑127.0.0.1绝不绑0.0.0.0所有连接必须认证。否则攻击者可用 DNS rebinding 从远程网页调你的本地 Server。部署建议本地开发用 stdio生产多 Agent 用 Streamable HTTP若客户端类型杂CLI IDE 远程用一个网关把传输归一化。6. 安全三个 2026 年真实教训每一条都值钱这是全篇最该让架构师警醒的一节。MCP 的安全故事是用真实事故写出来的。教训一公网裸奔——119/119 全部无凭证2026 年 1 月安全团队 Knostic 扫描公网发现1862 个 MCP Server 在运行随机手动测了119 个119 个全部允许无凭证访问。不是服务器坏了而是它们完全按旧教程写的——那些教程写于认证还没进 MCP spec 的年代协议 2024-11 发布时根本没有强制认证OAuth 直到 2025-03 才加。红线任何暴露在 HTTP 上的 MCP Server认证不是可选项。OAuth 2.1 Protected Resource Metadata Resource IndicatorsRFC 8707token 绑定到特定资源 URI防 token relay 跨端复用是 2026 基线。教训二工具投毒Tool Poisoning——最被忽视的攻击面比缺认证更隐蔽攻击者在工具的description / schema模型读取的元数据而非输出里嵌入恶意指令。模型按指令遵循去执行而非按工具本意。AAAI 2026 的MCPTox 基准测了 45 个在线 Server、353 个真实工具跨现代 LLM 的攻击成功率60%——且模型越强越易中招因为这攻击利用的是指令遵循能力而非模型缺陷。架构师动作第三方 Server 的元数据当作不可信数据处理。接入前审查 tool description命名空间隔离避免两个 Server 暴露同名工具导致调错绝不让模型的 tool call 直接越过 Host 的权限/审批/业务规则校验。教训三schema 合法 ≠ 已授权一个结构合法的参数依然可能要求一笔不该退的款、读错租户的记录、删错路径的文件。协议层能力协商只说明端点支持什么不说明当前用户被允许做什么。架构师动作身份与资源策略独立于协议单独评估。认证远程端点、按当前用户/资源授权、最小凭证、超时约束、对重大副作用要求显式审批调用后读回真实状态确认成功而非只看协议返回正常。MCP 安全清单架构师版远程 Server 强制 OAuth 2.1 DCR PKCEtoken 用 Resource Indicators 绑定资源工具数 50且每个 tool 的description经过可信审查防投毒第三方 Server命名空间隔离 元数据当不可信 接前威胁评估所有 tool 调用过 Host 的权限/审批/业务规则校验不从 schema 直接授权Streamable HTTP 校验 Origin、绑 localhost本地、强制认证重大副作用写/删/退款要求人工确认禁止静默执行7. 后端工程师落地Spring AI MCP作为 Java 后端好消息是Spring AI 把 MCP 接得很彻底。以下是 2026 年可跑的生产形态。7.1 起一个 MCP Server暴露你的业务工具依赖Web 版Streamable HTTP 生产推荐dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-starter-mcp-server-webmvc/artifactId/dependency配置spring:ai:mcp:server:name:order-mcpversion:1.0.0用注解把现有 Service 方法暴露成工具Spring AI 1.1 起McpTool/McpToolParam稳定组件扫描自动注册免手写 beanServicepublicclassOrderService{McpTool(description按订单号查询订单详情与异常状态)publicStringgetOrder(McpToolParam(description订单号,requiredtrue)StringorderId){// 调你的真实业务逻辑returnorderRepository.findWithExceptions(orderId).toJson();}}老项目Spring AI 1.0.x用ToolMethodToolCallbackProvider同样可行。启动后端点就在http://localhost:8080/mcp任意 MCP Client含官方 Inspectornpx modelcontextprotocol/inspector可连上列出工具。7.2 起一个 MCP Client你的 Java 智能体消费工具依赖dependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-starter-mcp-client/artifactId/dependency连本地 Streamable HTTP Server并把发现的工具直接注入 ChatClientspring:ai:mcp:client:streamable-http:connections:order:url:http://localhost:8080RestControllerpublicclassChatController{privatefinalChatClientchatClient;privatefinalToolCallbackProvidermcpTools;// 自动聚合所有已连 Server 的工具publicChatController(ChatClient.Builderbuilder,ToolCallbackProvidermcpTools){this.chatClientbuilder.build();this.mcpToolsmcpTools;}GetMapping(/ask)publicStringask(RequestParamStringquestion){returnchatClient.prompt(question).toolCallbacks(mcpTools)// 所有 MCP 工具自动可用.call().content();}}还可同时连多个 Server一个 Streamable HTTP 一个 stdioSpring AI 各自独立生命周期、自动聚合为统一工具注册表——这就是 B1 说的工具标准化在 Java 栈的落地。7.3 生产形态薄适配层 vs 独立网关从架构视角引入 MCP 有两种模式codecentric 总结薄适配层在现有业务 Service 上包一层额外暴露 MCP 端点改动小、快独立 Adapter/Gateway在 AI 客户端与后端之间加一个专门网关归一化传输、做鉴权/审批/限流解耦更彻底治理更清晰推荐生产。8. 在 2026 协议栈里的位置MCP 不孤战别把 MCP 当孤勇者。2026 年一个生产级 Agent 系统同时用一整套协议各占一层、互不替代层关注点2026 协议推理调模型OpenAI Responses / Anthropic Messages / Gemini / Bedrock OpenAI 兼容 API流式推理实时语音/会话OpenAI Realtime / Gemini Live工具与上下文调工具/取上下文MCP主导各家 function calling 兜底Agent 间委托任务给另一个 AgentA2AGoogle 主导/ ACPLinux Foundation/IBM身份与发现你是谁、能做什么OASF agent cards / A2A cards认证证明调用者被授权OAuth 2.1 DCR PKCE传输搬字节HTTPSStreamable HTTP/SSE、stdio本地、gRPC部分 A2A评估/可观测追踪发生了什么OpenTelemetry GenAI 语义约定 Langfuse/LangSmith 等关键判断MCP 在工具/上下文层主导它不取代 A2A/ACP那是 Agent 互调层。多智能体系统里MCP 负责Agent 调后端工具A2A 负责Agent 调 Agent——这正是 B4 要展开的 Control Plane 拼图。9. 架构师决策框架何时自建 / 何时用现成 / 何时只用 Function Calling把前面所有信号压缩成一张决策表你的处境推荐路径理由单应用、3–5 个内部函数、要最简Function Calling协议层是额外生命周期与测试负担无收益能力需被多 AI 客户端/多厂商复用自建 MCP Server一次实现多端通用NM 收敛接第三方能力GitHub/Notion/搜索用现成社区 Server2026-04 生态已破10000公共 Server先复用远程、多 Agent、生产MCP Streamable HTTP 网关鉴权并发/负载均衡友好治理清晰本地 IDE/CLI 插件MCP stdio性能最好无需 Web 容器接不可信第三方 Server威胁评估 命名空间隔离 元数据当不可信MCPTox 显示投毒成功率 60%工具数量红线一个 Server 暴露 50 个描述清晰的工具。清单越长占模型上下文越多——150 工具清单可吃掉30000 token才开聊。用 tool annotationsreadOnlyHint/destructiveHint/idempotentHint/openWorldHint帮模型安全规划多步流程、对破坏性调用要求确认。10. 生产踩坑清单下发版别信 2024 年的教程传输用 Streamable HTTP认证用 OAuth 2.1SSE 已废弃。远程必认证无凭证 MCP Server 在公网实测 119/119 裸奔这是事故不是理论。工具数 50每个工具进上下文都烧 token清单膨胀反伤效果。description 当产品文档写、当不可信数据审模型靠它决策攻击者也靠它投毒。权限/审批在 Host 层做schema 合法 ≠ 业务已授权调用后读回真实状态。传输按客户端选型CLI→stdioIDE→SSE/HTTP生产→Streamable HTTP 网关。Origin/localhost/认证三件套Streamable HTTP 防 DNS rebinding。可观测埋点用 OTel GenAI 语义约定记录 discovery/server/tool/参数脱敏/策略决策/状态变更/停止原因——B6 细讲。版本与回退协议版本协商MCP-Protocol-Version旧 SSE 端点过渡期可双跑客户端升级后弃用。B2 回扣你的 RAG 检索链路本就可以包成一个 MCP tool 暴露给任意 Agent——检索即能力能力即工具。11. 收尾与系列衔接MCP 把 B2 的检索和 B1 的工具标准化拧成了一个可落地的协议你后端写好的每一个能力都能以 USB-C 般的统一形态被公司里任意 AI 应用免适配调用。它不让你模型更聪明但让你的工程资产产生复利。下一站B4《Agentic 与多智能体 Control Plane》会把这个故事推到终点当一堆 MCP Server 被智能体动态编排、彼此委托真正的架构问题就从怎么接一个工具变成怎么治理一群会自己决策的服务——多智能体 新型微服务Control Plane 是 2026 最被低估的一层。回扣 B1架构优先于模型。MCP 正是架构这一层的具体产物——它把你围绕模型建的护城河标准化成了可复用、可治理、可跨模型替换的协议资产。下一篇预告B4 · Agentic 与多智能体 Control Plane——当工具变成服务、服务开始自己协作架构师该管的是编排面而非模型面。