MCP(Model Context Protocol
官网地址:modelcontextprotocol.io/docs/gettin…
一、MCP 是什么?从何而来?
MCP(Model Context Protocol) 是一套用于 AI 模型与外部工具 / 服务之间互联互通 的统一通信标准协议,目标是让 AI 调用工具像 “插 USB” 一样简单通用。
1. MCP 的诞生背景
MCP 由 Anthropic(Claude 开发商) 的两位工程师设计提出:
- Justin Spahr‑Summers
- David Soria Parra
它在 2024 年正式开源,设计思路借鉴了编程界广为人知的 LSP(Language Server Protocol) ,希望用一套协议解决所有 AI 工具对接问题。
2. 为什么会出现 MCP?
如果所示,在没有 MCP 之前,AI 接入外部工具面临严重的 混乱、重复造轮子、工作量大 问题(感兴趣的可以去看一下function calling)
- 每个大模型(GPT / Claude / 文心一言 / 通义千问等)
- 对接每个工具(文件、Slack、邮箱、数据库、业务接口等)
都需要单独写适配代码,协议不统一、格式不统一、调用方式不统一,导致:
- 对接成本极高
- 无法跨模型复用
- 换模型就要重写
- 工具生态难以扩展
MCP 的出现就是为了解决这个问题:一套标准,所有模型与工具即插即用。
二、MCP 做了什么?
- 统一 Function Calling 运行规范
- 将大模型所在的运行环境定义为 MCP Client(客户端)
- 将外部工具、插件、函数、外部服务所在的运行环境定义为 MCP Server(服务器)
- 统一客户端与服务器之间的交互规范
- 统一了工具发现、函数注册、参数校验、调用发起、结果返回、异常处理等全流程协议
- 屏蔽了不同大模型、不同工具平台之间的接口差异,实现一次开发、多端通用
以上设计的核心目的,是避免工具服务的重复开发:只要某一个工具按照 MCP 规范开发并部署,所有兼容 MCP 的客户端都可以直接调用,无需重复适配。典型场景包括:天气查询、网页爬取、本地 / 远程数据库查询、文件读写、代码执行、第三方 API 调用等。
为推动生态共建,Anthropic 面向开发者提供了一整套客户端与服务器开发 SDK:
- 开发者只需少量代码,即可快速搭建一个标准 MCP Server
- 该服务可无缝接入任意兼容 MCP 协议的大模型客户端,用于构建智能体(Agent)
- 大幅降低智能体接入外部工具的成本,更利于工具生态与智能体生态的快速发展
三、谁在使用和实现 MCP?
如果所示MCP 涉及
三类核心角色,均需遵循统一协议规范:
- MCP Host(AI / 智能体): 作为调度中枢,负责决策、发现并调用外部工具,是整个流程的核心大脑。
- MCP Server(工具 / 服务 / 软件): 按照 MCP 标准开放自身能力,提供可被调用的具体功能接口。
- MCP Client(通信客户端):承担 Host 与 Server 之间的协议通信、连接与传输工作,一般由框架层实现。
开发者则负责两端适配:
- 将各类工具封装为标准 MCP Server
- 为 AI/Agent 集成 MCP Host 调度能力
- 基于 MCP Client 搭建连接、调度与中间层框架
总结:
- AI = Host,工具 = Server,通信层 = Client
- MCP协议作用MCP Client和MCP Server之间
- MCP Client和MCP Server之间是一对一的关系
- 一种MCP Server基本上只做一种类型的事情
我们可以理解为:工具提供能力,AI 使用能力,开发者用 MCP 把它们连起来。
再次强调注意:client和大模型之间怎么交流沟通,并没有统一约束。mcp协议只在client和server层,不要搞错了
四、MCP Server
MCP的技术本质是一套 JSON-RPC 风格 的轻量级通信协议
[
{
"name": "工具名(英文小写+下划线)",
"description": "工具功能+使用场景+返回值(详细描述)", //ai识别你是干嘛的
"inputSchema": {
"type": "object",
"properties": {
"参数名1": {
"type": "参数类型(如string)",
"description": "参数要求、取值范围"
},
"参数名2": {
"type": "参数类型",
"description": "参数要求、取值范围"
}
},
"required": ["必填参数1", "必填参数2"], // 无必填项可省略
"additionalProperties": false // 必加,提升稳定性
}
}
]
无论多少个工具,三个字段是核心必写:
name:工具名(英文,AI 用来调用)description:工具用途(让 AI 理解功能)inputSchema:参数结构(类型、必填、说明)
MCP Server和MCP Client之间常见两种通信方式:
stdio:本地进程通信(默认)-都在本地使用这种方式HTTP、SSE:网络服务通信
三大核心概念为:Resources(资源) 、Tools(工具) 、Prompts(提示模板) ,共同构成 AI 模型与外部系统交互的基础能力。
- Resources(资源)
- 定位:只读的上下文数据源
- 作用:为模型提供静态 / 动态背景信息,让模型能够访问外部数据
- 典型示例:
- 读取本地文档、代码文件
- 获取企业知识库、API 文档
- 读取日历、日志、数据库结构信息
- Tools(工具)
- 定位:可执行的操作能力
- 作用:让模型具备执行动作、修改外部系统状态的能力
- 典型示例:
- 发送邮件、创建 / 修改日程
- 增删改文件、执行代码
- 调用接口、读写数据库、网络搜索
- Prompts(提示模板)
- 定位:预设的指令与交互模板
- 作用:标准化任务执行方式,指导模型如何使用资源与工具
- 典型示例:
- 会议总结、邮件起草模板
- 代码评审、数据分析流程提示
三者核心对比
表格
| 维度 | Resources(资源) | Tools(工具) | Prompts(提示) |
|---|---|---|---|
| 核心能力 | 提供数据 | 执行操作 | 定义指令 |
| 读写属性 | 只读 | 可读可写 | 无数据操作 |
| 控制权 | 服务器 / 应用 | AI 模型 | 用户 / 开发者 |
| 操作副作用 | 无 | 有 | 无 |
| 通俗类比 | 眼睛(看) | 手脚(做) | 大脑(思考 / 指令) |
一句话总结:MCP Server 通过 Resources 给模型提供数据,通过 Tools 赋予模型执行能力,通过 Prompts 规范交互逻辑,三者共同构建 AI 的上下文与行动体系。
推荐几个比较火的可以常看开源的MCP Server的地址
好啦,今天的内容就总结到这里,文档中有出现问题的地方,希望大家能够指出来,谢谢~
下期我们在MCP Server实战再见~bye