MCP(Model Context Protocol)介绍
一、什么是 MCP?
MCP(Model Context Protocol,模型上下文协议) 是一种面向 AI 模型与外部系统之间交互的应用层协议。
它的目标是:
为 AI 模型提供一种标准化、可控、可扩展的方式,用于发现、访问和调用外部能力与上下文。
MCP 并不是某个具体模型或 SDK,而是一套协议规范,用于定义模型与“工具 / 资源 / Prompt”等外部能力之间的交互方式。
二、MCP 解决了什么问题?
在 MCP 出现之前,模型调用外部能力通常存在以下问题:
工具调用方式各不相同,缺乏统一标准
Prompt、工具、上下文强耦合在代码中,难以复用
模型对外部资源的访问不可控、不可审计
不同 Agent / 框架之间难以互操作
MCP 的核心价值在于:
把「模型如何使用外部能力」这件事协议化
把上下文、工具、Prompt 提升为一等协议对象
提供清晰的安全边界和能力声明机制
三、MCP 的协议定位
3.1 MCP 不是什么
❌ 不是模型推理协议(不替代 OpenAI / Claude / Minimax API)
❌ 不是单纯的函数调用机制
❌ 不是某个语言或框架私有方案
3.2 MCP 是什么
✅ 一个 AI 与外部世界交互的标准协议
✅ 构建在 JSON-RPC 2.0 之上的应用层协议
✅ 面向 Agent、工具系统、上下文系统设计
四、MCP 的协议分层结构
从协议栈角度看,MCP 位于应用层:
┌────────────────────────────┐
│ AI Model / Agent │
├────────────────────────────┤
│ MCP Application Layer │ ← MCP 核心定义
├────────────────────────────┤
│ JSON-RPC 2.0 │
├────────────────────────────┤
│ Transport (HTTP / SSE / │
│ STDIO / Streamable HTTP) │
├────────────────────────────┤
│ OS / Network │
└────────────────────────────┘
MCP 不重新发明传输协议,而是专注于定义交互语义和能力模型。
五、MCP 定义的核心协议内容
5.1 基础通信协议(JSON-RPC 2.0)
MCP 强制基于 JSON-RPC 2.0,继承其三种消息类型:
Request:请求(有
id,需要响应)Response:响应
Notification:通知(无
id,不需要响应)
基本消息结构示例:
{
"jsonrpc": "2.0",
"id": "123",
"method": "method.name",
"params": {}
}
5.2 会话生命周期与初始化流程
MCP 定义了明确的会话初始化与握手流程。
初始化顺序
Client → initialize → Server
Client ← capabilities ← Server
Client → initialized → Server
初始化阶段的作用
协议版本协商
客户端能力声明
服务端能力发现(Capabilities Discovery)
为后续交互建立上下文边界
六、MCP 的能力模型(核心设计)
MCP 协议最重要的部分,是对 能力(Capabilities) 的标准化定义。
6.1 三类一等能力对象
MCP 明确定义了三种能力类型:
这三者都属于协议级对象,而不是实现细节。
6.2 Tool(工具)协议定义
Tool 表示模型可以调用的动作,其协议定义包含:
名称
描述
输入参数 Schema(JSON Schema)
示例:
{
"name": "search_orders",
"description": "Search orders by user id",
"inputSchema": {
"type": "object",
"properties": {
"userId": { "type": "string" }
}
}
}
协议层明确规定了:
Tool 的声明方式
Tool 的调用方式
Tool 返回结果的结构
6.3 Resource(资源)协议
Resource 用于描述模型可按需获取的上下文信息。
例如:
文件
文档
数据查询结果
知识条目
协议示例:
{
"uri": "file:///docs/manual.pdf",
"mimeType": "application/pdf"
}
与传统 RAG 不同,MCP 中的 Resource 是:
模型可主动请求的上下文资源
6.4 Prompt(提示模板)协议
Prompt 在 MCP 中被协议化和资产化。
{
"name": "summarize_document",
"arguments": ["language"]
}
这意味着 Prompt:
可以被版本化
可以复用
可以由系统统一管理
不再散落在代码中
七、交互行为与并发模型
MCP 明确支持以下交互特性:
多个并发请求(in-flight requests)
单向通知(Notification)
流式返回(Streaming)
双向通信
这些能力使 MCP 非常适合构建 Agent Loop 和复杂交互系统。
八、传输层支持(与传输解耦)
MCP 本身是传输无关的协议,但规范中明确支持:
HTTP(请求-响应)
Server-Sent Events(SSE)
STDIO(本地进程通信)
可流式 HTTP 连接
这使 MCP 既可以用于:
本地插件
IDE 集成
后端服务
Agent 运行时
九、错误模型(Error Handling)
MCP 基于 JSON-RPC 的错误结构,并扩展其语义。
{
"code": -32001,
"message": "Resource not found",
"data": {
"uri": "file:///missing.txt"
}
}
错误类型包括:
协议错误
工具执行错误
权限或鉴权错误
十、安全与边界设计
MCP 在协议层面强调安全与可控性:
所有工具和资源必须显式声明
模型不能访问未暴露的能力
服务端负责授权与鉴权
协议层不允许“隐式能力”
这是 MCP 与“让模型随意执行代码”方案的根本区别。
十一、总结
MCP 定义的不是某个 SDK,而是一整套标准化交互协议。
它核心解决的是:
AI 模型如何在安全、可控、可复用的前提下,与外部世界进行结构化交互。
一句话总结 MCP:
MCP 是 AI Agent 访问工具、资源和上下文的通用协议标准。
如果你需要,我也可以继续输出:
📄《MCP 与 Function Calling 的协议级对比》
📄《为什么 MCP 适合构建 Agent 系统》
📄《MCP 协议交互完整示例(JSON)》
你可以直接说要哪一篇。
评论