Amadeus的知识库 | 告别碎片化集成:深度解析 AI 时代的“USB 协议” —— MCP

一、引文

在 LLM(大语言模型)飞速发展的今天,我们正从"对话框 AI"转向"智能体(Agent)"。然而,开发者在集成 AI 时一直面临一个巨大的痛点:数据孤岛

为了解决这个问题,Anthropic 发布了 MCP (Model Context Protocol)。它被誉为 AI 时代的"USB 协议"。今天,我们就来彻底拆解 MCP 的含义、诞生原因、与 Function Calling 的关系,以及它的核心架构。

二、什么是 MCP

MCP (Model Context Protocol) ,即 模型上下文协议

简单来说,它是一套开放的标准,允许开发者通过统一的方式,将本地或远程的数据源、工具和服务安全地连接到 AI 模型(如 Claude、GPT 等)。

  • 官方定义:一种将 AI 应用程序与外部数据源和工具连接的通用标准。

  • 形象比喻 :在 USB 出现之前,打印机、鼠标、键盘都有各自奇怪的接口(串口、并口等)。USB 出现后,一个标准接口搞定所有外设。MCP 就是 AI 与外部数据世界之间的"USB 接口"。

三、MCP 诞生的原因

在 MCP 出现之前,如果你想让 AI 访问你的 Notion 笔记、读取 GitHub 代码或查询 SQL 数据库,你需要:

  1. 针对每个 API 编写特定的"胶水代码"。

  2. 在不同的 AI 平台(如 Claude Desktop, IDE, 自建 App)中重复实现这些集成。

  3. 手动管理复杂的上下文注入和权限。

这种现状导致了两个主要问题:

  1. 碎片化严重:每个工具都要为每个 AI 重写一遍插件。

  2. 上下文隔离:数据分散在不同地方,AI 很难获取完整、实时的背景信息。

MCP 的使命: 实现"一次编写,到处运行"。只要你写了一个 MCP Server(比如 GitHub 插件),任何支持 MCP 的 Client(比如 Claude 或 Cursor)都能立即使用它,无需重复开发。

四、MCP vs. Function Calling

很多人会问:"这不就是 Function Calling(函数调用)吗?"

其实,两者层级不同:

维度 Function Calling (函数调用) MCP (模型上下文协议)
本质 模型输出一种格式化的 JSON,提示开发者去执行某个函数。 一套完整的通信协议,定义了客户端与服务器如何交换数据。
范围 局限于"模型告诉我怎么做",逻辑由开发者手动实现。 涵盖了资源发现、工具调用、提示词模版等整套生态
复用性 差。你为 App A 写的函数,App B 无法直接复用。 强。符合 MCP 标准的服务可以被任何支持 MCP 的软件直接连接。
动态性 静态。函数定义通常写死在 Prompt 或代码里。 动态。Client 可以实时查询 Server 具备哪些能力。

联系:

MCP 在底层利用了 Function Calling 的能力。当模型通过 MCP 决定使用某个工具时,它依然是发起一个调用请求,但 MCP 规范了这种请求的传输方式、安全认证和数据格式。

五、MCP 的核心架构

1.Host

这是用户直接使用的 AI 环境。

  • 例子:Claude Desktop 客户端、IDE (如 Cursor, VS Code)、自建的 AI 聊天网页。

  • 职责:它包含了 MCP Client,决定何时调用哪些 Server,并负责与模型进行最终的交互。

2.Client

存在于 Host 内部的协议实现层。

  • 职责:它维护与各个 Server 的连接。它会向 Server 发送请求(比如:"告诉我你有什么工具?"),并将 Server 返回的结果翻译给 AI 模型。

3. Server

这是连接具体数据源的"适配器"。

  • 例子:一个连接 Google Drive 的 MCP Server,或者一个能执行 Python 代码的 MCP Server。

  • 职责

    • Resources (资源):提供只读数据(如读取文件、数据库记录)。

    • Tools (工具):提供执行动作的能力(如创建 GitHub Issue、发送邮件)。

    • Prompts (提示模板):提供预设的指令模板。

工作流程图:

你的问题 → Claude Desktop(Host) → Claude 模型 → 需要文件信息 → MCP Client 连接 → 文件系统 MCP Server → 执行操作 → 返回结果 → Claude 生成回答 → 显示在 Claude Desktop 上。

这种架构设计使得 Claude 可以在不同场景下灵活调用各种工具和数据源,而开发者只需专注于开发对应的 MCP Server,无需关心 Host 和 Client 的实现细节。

六、Server 与 Client 传输层通信机制

在 MCP(模型上下文协议)的设计中,为了适应不同的应用场景(比如本地运行还是远程调用),官方定义了三种核心的传输层机制(Transport Mechanisms)

虽然它们在底层都使用 JSON-RPC 2.0 进行消息交换,但"传球"的方式截然不同:

1.stdio

这是目前 MCP 最常用、最简单的一种方式,主要用于本地连接

  • 工作原理

    • Host (宿主程序) (如 Claude Desktop 或 Cursor)直接启动 Server 作为一个子进程(Child Process)。

    • Client 和 Server 通过操作系统的 stdin(标准输入)和 stdout(标准输出)进行通信。

    • Client 向 Server 的 stdin 写入 JSON 指令,Server 处理完后通过 stdout 把结果甩回来。

  • 特点

    • 极速且私密:数据不经过网络,全部在内存和本地管道中流动,安全性最高。

    • 生命周期同步:当 Host 关闭时,Server 子进程也会随之被杀掉,不会残留后台进程。

    • 配置简单 :只需要在配置文件里写明 command(如 nodepython)和文件路径即可。

  • 适用场景:你电脑本地的工具,比如读取你本地代码库、操作本地文件、查询本地数据库。

2.SSE

这种方式主要用于远程连接跨网络通信

  • 工作原理

    • Server 作为一个独立的 Web 服务器运行(通常基于 HTTP 协议)。

    • Client 通过 HTTP 发起连接。

    • 双向通信实现

      1. 从 Server 到 Client :使用 SSE (Server-Sent Events)。这是一种长连接技术,允许服务器主动向客户端推送消息。

      2. 从 Client 到 Server :使用普通的 HTTP POST 请求来发送指令。

  • 特点

    • 跨设备能力:Server 可以部署在云端(如 AWS, Vercel),Client 可以在任何地方连接。

    • 标准 Web 技术:利用了现成的 HTTP 基础设施,容易穿透防火墙。

    • 复杂性略高:需要处理网络延迟、身份验证(Auth)和跨域(CORS)问题。

  • 适用场景:集成云端 SaaS 服务(如实时天气、远程 CRM 系统)或者由第三方机构维护的公共 AI 工具。

3.Streamable HTTP

Streamable HTTP 是 MCP 协议较新推出的传输方式,简化了 SSE Transport 的双通道架构:

  • Client 的请求通过 HTTP POST 发送,响应体可以是普通 JSON(简单请求),也可以是 SSE 流(需要流式返回或服务器主动推送时)
  • 不需要预先建立 SSE 长连接,按需建立连接
  • Server 可以在响应头里返回 Session ID,Client 后续请求带上这个 ID 来关联会话

相比 SSE Transport,Streamable HTTP 更简洁------不需要维护一个额外的 SSE 长连接通道,每个 POST 请求的响应本身就可以是流式的。

这是 MCP 协议目前主推的远程传输方式,适合企业级生产环境部署。

3.三种机制对比总结

特性 stdio (本地管道) SSE + POST (MCP远程标准) Streamable HTTP (如 WebSockets)
主要定位 本地插件、本地开发 跨网络、云端集成 实时高性能通信
实现难度 极简 (一行代码启动进程) 中等 (标准 Web 开发) 较高 (需处理状态机和心跳)
穿透力 N/A (不走网络) 极强 (标准 HTTP 路径) 一般 (常被代理服务器拦截)
资源消耗 极低 低 (无状态 POST + 挂起 GET) 较高 (服务器需维持大量长连接状态)
调试便利性 一般 (需查看进程日志) 极高 (浏览器控制台可见) 一般 (需专用调试工具)
MCP 官方地位 核心标准 核心标准 暂非标准 (可能作为扩展)

七、MCP 三大核心能力

在 MCP(模型上下文协议)中,Resources(资源)Tools(工具)Prompts(提示模板) 是 Server 向 Client 提供的 三种核心能力

如果把 AI 想象成一个"办公室职员",这三者的关系可以这样理解:

  • Resources 是他桌子上的参考资料(只读)。

  • Tools 是他手里的办公器具(可操作、有结果)。

  • Prompts 是你给他的工作模版(教他怎么做)。

1.Resources

Resources 是 Server 暴露给 AI 的只读数据。它们是静态的或实时的信息,模型可以读取它们作为回答问题的上下文。

  • 特点:通常是只读的。可以是本地文件、数据库内容、甚至是实时日志。

  • 标识方式 :每个资源都有一个唯一的 URI (类似于网址),例如 file:///logs/app.logpostgres://database/table/schema

  • 使用场景

    • 读取一个本地的 README.md 文件。

    • 获取数据库的表结构描述。

    • 查看服务器的最新运行日志。

  • 模型视角:模型知道这些资源的存在,当它需要背景知识时,会通过 Client 请求读取这些内容。

2.Tools

Tools 是 Server 提供的可执行代码/功能。它们允许 AI "采取行动"并对外部世界产生影响。

  • 特点动态执行。工具可以接受参数(Arguments),执行后返回结果。它具有"副作用"(Side Effects),比如修改文件、发送邮件。

  • 交互逻辑:模型决定"我要用这个工具,参数是 X",Server 执行并将结果返回给模型。

  • 使用场景

    • 计算类:运行一段 Python 代码计算数学题。

    • API类:在 GitHub 上创建一个 Issue。

    • 系统类:在本地创建一个新的文件夹。

  • 模型视角 :这是模型发现自己"能做的事"。比如模型发现自己不能直接联网,但看到有一个 google_search 的 Tool,它就会调用这个工具。

3.Prompts

Prompts 是 Server 预先定义好的交互模版。它告诉 AI 应该以什么样的角色、逻辑和步骤来处理任务。

  • 特点 :包含占位符的可重用提示语。它不仅是简单的文字,还可以引导模型去关联特定的 Resource 或 Tool。

  • 使用场景

    • 代码审查模板 :一个名为 review-code 的 Prompt,预设了检查逻辑,并要求用户传入"代码文件"作为参数。

    • 翻译助手:预设好"你是一个专业翻译官,请将以下文本翻译为 [语言]"的模版。

  • 模型视角:这更像是用户或开发者给出的"指令捷径"。用户只需选择一个 Prompt 模板,剩下的上下文由 MCP 自动填充

八、总结

本文围绕模型上下文协议MCP展开介绍,先阐释其定义,再说明其诞生是为解决传统交互模式的局限。对比Function Calling仅输出格式化JSON、依赖开发者实现逻辑、复用性与动态性不足的问题,MCP作为完整通信协议,具备完善生态、强复用性与动态发现能力。其核心架构包含Host、Client、Server三大角色,支撑起Resources、Tools、Prompts三大核心能力,实现资源、工具与提示词模板的标准化交互。以及对比 MCP 中 Server 与 Client 传输层三种通信机制,阐释了不同场合下的传输层应用。MCP突破了函数调用的静态与碎片化缺陷,构建起标准化、可复用、动态互通的AI交互体系,为不同软件与模型服务的高效对接提供了统一规范,大幅提升AI工具与能力集成的灵活性和通用性。

相关推荐
自信不孤单3 小时前
UniAda核心代码详解
python·ai·大模型·tta·狄利克雷理论·证据感知
LucaJu3 小时前
一、先了解:MCP 公开服务市场
agent·智能体·spring ai·mcp·spring ai alibaba
张永清4 小时前
深度解析Claude Code 51万行源码背后的设计实现
ai·大模型·agent·claude code
Flying pigs~~4 小时前
从“踩坑”到“可控”:大模型 Prompt 工程实战总结与进阶方法论
大数据·人工智能·大模型·prompt·提示词工程
羊小猪~~4 小时前
LLM--VIT简介
大模型·llm·nlp·多模态·多模态大模型·vit·ai算法
guslegend6 小时前
4月6日(RAG系统)
人工智能·大模型·rag
最初的↘那颗心7 小时前
Prompt安全实战:注入攻击防御与越狱防护全攻略
大模型·spring ai·注入攻击·prompt安全·越狱防护
缘友一世7 小时前
Claude-Code配置Serper-MCP指南
mcp·claude code·serper
CoderJia程序员甲8 小时前
GitHub 热榜项目 - 日榜(2026-04-06)
人工智能·ai·大模型·github·ai教程