ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MCP-01_MCP 是什么?—— Model Context Protocol 全面解读

MCP-01_MCP 是什么?—— Model Context Protocol 全面解读 MCP 是什么—— Model Context Protocol 全面解读摘要MCPModel Context Protocol是 Anthropic 于 2024 年 11 月发布的开放协议旨在标准化 LLM 应用与外部工具、数据源之间的连接方式。本文从协议背景、设计目标、核心架构出发结合源码级示例全面解读 MCP 的技术内涵。一、前言2024 年AI Agent 赛道爆发式增长。开发者们面临一个共同的困境每接入一个新的外部工具数据库、API、文件系统就需要为每个 LLM 应用编写一套定制化的集成代码。这种N×M 的碎片化连接问题严重制约了 AI 应用的规模化发展。正是在这样的背景下Anthropic 于 2024 年 11 月 25 日正式发布了Model Context ProtocolMCP——一个开放的、标准化的协议旨在为 LLM 应用与外部世界之间建立统一的USB-C 接口。截至 2026 年 7 月MCP 官方 Registry 已收录近9,652 个MCP ServerGitHub 上相关项目超过数千个Claude、Cursor、Windsurf、OpenAI 等主流 AI 产品均已原生支持 MCP。可以说MCP 正在成为 AI 工具集成领域的事实标准。二、MCP 的诞生背景2.1 碎片化的困境在 MCP 出现之前AI 应用集成外部工具的方式大致有以下几种硬编码集成直接在应用代码中调用第三方 APIFunction Calling利用 LLM 的函数调用能力定义 JSON Schema 描述工具自定义插件体系如 ChatGPT Plugins、LangChain Tools 等这些方案各有局限方案优势局限硬编码集成完全可控每个工具单独开发不可复用Function CallingLLM 原生支持仅定义了调用格式缺乏上下文共享机制ChatGPT Plugins生态丰富绑定特定平台协议封闭LangChain Tools框架统一绑定特定框架非通用协议2.2 LSP 的启示MCP 的设计深受Language Server ProtocolLSP的启发。LSP 由微软在 2016 年提出它将编程语言的智能特性代码补全、跳转定义、诊断等从 IDE 中解耦出来形成一个标准化协议。这使得一个语言服务器可以服务于所有支持 LSP 的编辑器。MCP 对 LLM 生态做了类似的抽象LSP编辑器 ↔ 语言服务器 → 标准化编程语言支持MCPLLM 应用 ↔ 工具服务器 → 标准化 AI 工具集成2.3 从 ChatGPT Plugins 到 MCPOpenAI 在 2023 年推出的 ChatGPT Plugins 是早期的尝试但它有几个关键问题平台绑定仅在 ChatGPT 生态内可用发现机制缺失缺乏标准化的服务注册与发现安全模型粗糙主要依赖域名白名单MCP 的出现正是为了在更高维度上解决这些问题——它不是一个产品功能而是一个开放协议。三、核心设计理念3.1 协议而非框架MCP 的第一个关键决策是它是一个协议Protocol而非一个框架Framework。这意味着任何语言、任何框架都可以实现 MCP不依赖特定的运行时或库通过标准化的消息格式实现互操作3.2 三大核心原则1. 标准化StandardizationMCP 定义了统一的消息格式基于 JSON-RPC 2.0、能力协商机制、传输层规范。所有 MCP 兼容的客户端和服务器都可以无缝对接。2. 可组合性ComposabilityMCP Server 可以被多个 Client 复用一个 Client 也可以连接多个 Server。这种松耦合的设计使得工具生态可以独立演进。3. 安全性SecurityMCP 从设计之初就将安全性放在核心位置用户必须显式授权数据访问和工具执行Host 应用对 Server 有完全的控制权。四、协议架构概览4.1 三方架构MCP 采用Host-Client-Server三方架构Host 应用 (如 Claude Desktop, Cursor)工具调用决策工具调用决策工具调用决策JSON-RPC 2.0(Stdio/SSE/HTTP)JSON-RPC 2.0(Stdio/SSE/HTTP)JSON-RPC 2.0(Stdio/SSE/HTTP)MCP Client AMCP Client BMCP Client CLLM 推理引擎MCP Server(文件系统)MCP Server(GitHub API)MCP Server(数据库)角色定义HostLLM 应用程序本身如 Claude Desktop、Cursor IDE负责管理用户交互和安全策略ClientHost 内部的协议适配器每个 Client 与一个 Server 维持一对一连接Server轻量级服务进程暴露具体的工具Tools、资源Resources和提示模板Prompts4.2 三大核心原语MCP 定义了三种核心的可暴露能力原语作用方向典型方法Tools工具可执行的函数Server → Clienttools/list,tools/callResources资源只读的数据/上下文Server → Clientresources/list,resources/readPrompts提示模板可复用的提示模板Server → Clientprompts/list,prompts/get此外Client 也可以向 Server 提供能力Sampling允许 Server 请求 Client 进行 LLM 推理递归调用Roots允许 Server 查询 Client 的文件系统边界Elicitation允许 Server 通过 Client 向用户请求额外信息4.3 通信流程一个典型的 MCP 会话流程如下初始化握手Client 发送initialize请求交换协议版本和能力确认初始化Client 发送notifications/initialized通知工具发现Client 调用tools/list获取 Server 暴露的工具列表工具调用LLM 决策后Client 调用tools/call执行具体工具结果返回Server 返回执行结果Client 将结果反馈给 LLM注2026-07-28 版本对上述流程进行了重大简化移除了初始化握手改为无状态的逐请求能力协商。详见本系列第五篇文章。五、代码示例一个最简 MCP 服务器以下是一个使用 Python SDK 实现的简单 MCP Server它暴露了一个get_weather工具# weather_server.py# 使用 Python MCP SDK 实现一个最简天气查询 MCP Serverfrommcp.server.fastmcpimportFastMCP# 创建 MCP Server 实例指定名称mcpFastMCP(weather-server)mcp.tool()defget_weather(city:str)-str: 查询指定城市的天气信息。 Args: city: 城市名称如 北京、上海 Returns: 天气描述字符串 # 实际项目中这里会调用天气 API# 此处为演示用的模拟数据mock_data{北京:晴25°C湿度 40%,上海:多云28°C湿度 65%,深圳:阵雨30°C湿度 80%,}returnmock_data.get(city,f暂无{city}的天气数据)mcp.resource(weather://cities)deflist_cities()-str:列出支持查询的城市列表return支持的城市北京、上海、深圳if__name____main__:# 以 stdio 模式启动 Servermcp.run(transportstdio)代码解读FastMCP是 Python SDK 提供的高层封装极大简化了 Server 开发mcp.tool()装饰器将函数注册为 MCP 工具SDK 会自动生成 JSON Schemamcp.resource()装饰器将函数注册为 MCP 资源通过 URI 进行标识mcp.run(transportstdio)指定通过标准输入/输出进行通信将此 Server 接入 Claude Desktop只需在配置文件中添加{mcpServers:{weather:{command:python,args:[weather_server.py]}}}六、MCP 与 Function Calling 的区别很多开发者会问既然 LLM 已经支持 Function Calling为什么还需要 MCP这是一个关键问题。6.1 Function Calling 的本质Function Calling 是 LLM 提供商如 OpenAI、Anthropic定义的一种调用格式{name:get_weather,arguments:{city:北京}}它解决的问题是让 LLM 知道有哪些工具可用以及如何生成正确的调用参数。6.2 MCP 的本质MCP 解决的问题更广泛工具发现动态获取 Server 暴露的工具列表而非硬编码上下文共享通过 Resources 机制共享数据和上下文标准化通信定义了完整的请求-响应-通知协议传输层抽象支持 stdio、SSE、HTTP 等多种传输方式安全模型内置用户授权、数据隐私保护机制6.3 对比总结维度Function CallingMCP本质调用格式规范完整通信协议工具发现静态定义代码中硬编码动态发现tools/list上下文共享无Resources 机制传输层无仅定义 JSON 结构stdio / SSE / HTTP安全模型依赖应用层实现协议内置安全原则跨平台绑定特定 LLM 提供商开放协议任何实现均可生态各平台各自实现统一生态9,600 Server简而言之Function Calling 定义了怎么调用MCP 定义了怎么连接、发现、调用、共享。两者是互补关系——MCP Server 暴露的工具最终会通过 Function Calling 的方式被 LLM 调用。七、总结MCP 的出现标志着 AI 工具集成从各自为战走向标准化互联。它的核心价值在于统一协议为 LLM 应用与外部工具之间建立了标准化的通信规范开放生态任何开发者都可以实现和贡献 MCP Server安全可控从协议层面保障了用户的数据隐私和操作安全可扩展性三大原语Tools/Resources/Prompts覆盖了主要的集成场景在接下来的文章中我们将深入 MCP 协议的消息格式与通信模型从底层解析这个协议是如何工作的。参考资料Anthropic. “Model Context Protocol Specification (2025-11-25).”modelcontextprotocol.io, https://modelcontextprotocol.io/specification/2025-11-25Anthropic. “Introducing the Model Context Protocol.”anthropic.com, https://www.anthropic.com/news/model-context-protocolMicrosoft. “Language Server Protocol Specification.”microsoft.github.io, https://microsoft.github.io/language-server-protocol/JSON-RPC Working Group. “JSON-RPC 2.0 Specification.”jsonrpc.org, https://www.jsonrpc.org/specificationModel Context Protocol GitHub Repository.github.com, https://github.com/modelcontextprotocol/specification本系列覆盖AI 大模型基础、Agent 开发、MCP 协议、Skill 开发、RAG、模型微调、部署推理七大方向从入门到实战的全栈内容持续更新中。所有文章的 Markdown 源文件、可运行代码、高清配图已整理成完整资料包。 点赞 ⭐ 关注评论区扣「1」挨个发你领取方式
返回列表