你有没有想过一个问题:ChatGPT 能写出漂亮的代码,却没办法直接读你电脑里的文件;Claude 能理解复杂的业务逻辑,却无法查询你公司的数据库。
这不是模型能力不够,而是模型被关在一个封闭的沙箱里。它没有眼睛去看你的文件系统,也没有手去调用你的 API。
解决这个问题的传统方式是:每接一个新工具,就写一套定制集成代码。数据库一套,GitHub 一套,Slack 再来一套------十个工具十套代码,开发和维护成本线性增长。
MCP(Model Context Protocol,模型上下文协议)就是为了解决这个碎片化问题而生的。
读完这篇文章,你将理解 MCP 是什么、它解决了什么核心矛盾、以及它是怎么工作的。
文章目录

背景:AI 模型的"信息孤岛"困境
先看一个典型场景。假设你想让 Claude 帮你分析上周的销售数据,数据存在公司的 PostgreSQL 里。你会怎么做?
目前最直接的做法是:手动导出 CSV → 粘贴给大模型 → 等它分析。这个过程里你做了一件很"不 AI"的事情------人工搬运数据。
如果你想让 AI 自动完成这件事,就需要写一段代码,让 AI 能连接数据库。问题是,下周你还需要连接mysql数据库,下下周需要调用另一个API,每次都要重写一套适配层。每套适配层都要处理认证、格式转换、错误处理,工作量惊人。

这不是 AI 的问题,是接口标准化的问题。 就像当年的 USB------在 USB 出现之前,键盘用 PS/2 口,打印机用并口,鼠标用串口,每个外设都要专门的驱动。USB 用一个统一标准终结了这种混乱。
MCP 想做的事,就是成为 AI 时代的"USB-C 接口"------它定义了一套标准协议,让任何 AI 应用都能用同一种方式连接任何外部工具和数据源。

MCP 核心概念:三个角色和三种能力
三个角色
MCP 的架构里定义了三个角色:
| 角色 | 职责 | 类比 |
|---|---|---|
| Host(宿主) | AI 应用本身,比如 Claude Desktop、VS Code | 顾客------提出需求的人 |
| Client(客户端) | 运行在 Host 内部,负责和 Server 建立一对一连接 | 服务员------传递顾客的需求 |
| Server(服务端) | 暴露具体能力的服务,比如文件系统 Server、数据库 Server | 厨房------真正干活的地方 |

关键理解:一个 Host 可以连接多个 Server,但每个 Client 只对接到一个 Server。这就像一间餐厅可以同时连接多个厨房,但每个服务员只负责一个厨房的沟通。
三种核心能力
MCP Server 可以向 AI 暴露三类能力:
1. Tools(工具)------让 AI"做事情"
Tool 是模型可以调用的函数。比如一个文件系统 Server 可以提供 read_file、write_file、list_directory 这些 tool。模型决定什么时候 调用、用什么参数调用,但真正执行的是 Server 端。
plain
## 一个文件读取 tool 的定义
- 名称:read_file
- 描述:读取指定路径的文件内容
- 参数:
- path(必填):文件路径
- encoding(可选):编码方式,默认 utf-8
2. Resources(资源)------让 AI"看数据"
Resource 是模型可以读取的上下文数据。和 Tool 不同,Resource 是被动的------它不执行操作,只提供信息。
plain
## 一个数据库表结构的 resource
- URI:postgres://sales/orders/schema
- 内容:orders 表的列定义和索引信息
Tool 和 Resource 的区别很关键:Tool = 动作,Resource = 数据。查数据库表结构是 Resource,执行一条 UPDATE 是 Tool。
3. Prompts(提示模板)------让用户"快速引导 AI"
Prompts 是预定义的提示词模板,帮助用户快速发起标准化的任务。比如一个代码审查 Server 可以提供 "Review this code for bugs" 的 prompt 模板。

MCP 是怎样工作的
通信层:JSON-RPC 2.0
MCP 在底层使用 JSON-RPC 2.0 作为通信协议。简单说就是:Client 和 Server 之间通过 JSON 格式的消息来交互,一个请求对应一个响应,结构清晰,解析简单。
一个典型的请求长这样:
json
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "read_file",
"arguments": { "path": "/data/report.csv" }
},
"id": 1
}
对应的响应:
json
{
"jsonrpc": "2.0",
"result": {
"content": [{ "type": "text", "text": "销售额,月份\n10000,1月\n..." }]
},
"id": 1
}
传输层:两种连接方式
MCP 支持两种传输方式:
- stdio(标准输入输出):Client 以子进程方式启动 Server,通过标准输入输出流通信。适合本地工具,简单高效。
- HTTP SSE(Server-Sent Events):通过 HTTP 长连接通信,Client 发请求,Server 用 SSE 推送响应和通知。适合远程服务和需要流式返回的场景。
两种方式各有适用场景:本地的文件系统 Server 用 stdio 就够;面向团队的共享 API Server 则用 HTTP 部署。
完整的调用生命周期
一个完整的 MCP 调用流程分为三个阶段:
plain
初始化握手 → 能力发现 → 调用执行
阶段一:初始化握手
Client 和 Server 建立连接后,先交换基本信息------各自支持什么协议版本、有什么能力声明。
阶段二:能力发现
Client 向 Server 查询"你能做什么"。Server 返回自己提供的 tools、resources、prompts 的完整清单。这个清单就是 AI 模型用来决策的"菜单"------模型看到菜单后,自行判断:当前任务该调用哪个 tool、该读取哪个 resource。
阶段三:调用执行
模型决定了要做什么之后,通过 Client 向 Server 发送具体的调用请求。Server 执行并返回结果。这个结果会作为新的上下文喂给模型,模型再根据结果决定下一步是继续调用其他 tool,还是直接给出最终回答。

这整个过程对用户是透明的------你只需要告诉 AI 你想做什么,AI 自己决定调用什么工具、怎样组合、如何解读结果。
MCP 为什么重要
到这里,你应该已经理解了 MCP 的核心价值:
对 AI 应用开发者:不用再为每个工具写适配代码。Claude Desktop 已经内置了 MCP 支持,你只需配置一个 JSON 文件指向你的 MCP Server,AI 就能获得新能力。
对工具/服务开发者:实现一次 MCP Server 接口,你的服务就能被所有支持 MCP 的 AI 应用使用。不用分别适配 Claude、Cursor、VS Code。
对整个生态:一个开放标准意味着社区可以繁荣生长。有人开发通用的文件系统 Server、数据库 Server,有人开发专用的 Figma Server、Notion Server,所有人都能用。
目前主流支持 MCP 的 AI 工具包括:
- Claude Desktop:原生支持,配置即用
- Cursor / VS Code:通过扩展支持
- Continue.dev:开源 AI 编程助手
- 越来越多的工具正在加入
一个简单的 MCP Server 示例
下面是一个最小化的 MCP Server(Python 实现),它提供一个查询天气的 tool:
python
from mcp.server import Server, NotificationOptions
from mcp.server.models import InitializationCapabilities
# 创建 Server 实例
server = Server("weather-server")
# 注册一个 tool:获取城市天气
@server.list_tools()
async def list_tools():
return [
{
"name": "get_weather",
"description": "获取指定城市的天气信息",
"inputSchema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称,如 'Beijing'"
}
},
"required": ["city"]
}
}
]
# 实现 tool 的调用逻辑
@server.call_tool()
async def call_tool(name: str, arguments: dict):
if name == "get_weather":
city = arguments["city"]
# 实际场景中这里会调用真实天气 API
return {
"content": [
{"type": "text", "text": f"{city}当前天气:晴,23°C"}
]
}
配置到比如Claude Desktop 后,你就可以直接问:"北京今天天气怎么样?"------Claude 会自动发现并调用这个 tool 来获取天气。
总结
MCP 解决的是一件简单但重要的事:让 AI 和外部世界用同一种语言对话。
它不复杂------核心就是三个角色(Host、Client、Server)加三种能力(Tools、Resources、Prompts),底层基于 JSON-RPC 2.0 通信。但正是这种简单性,让它有可能成为 AI 时代的基础设施标准。
当然,MCP 也有它的局限性:目前对复杂权限控制、多用户场景的支持还不够完善;大规模分布式部署的实践还在探索中。但作为一项诞生不到两年的技术,它的发展速度已经超出了很多人的预期。
如果你是 AI 应用开发者 ,建议现在就试着跑一个 MCP Server 体验一下------从 Anthropic 的官方 quickstart 开始,十分钟就能让 Claude 获得一个新技能。
参考
MCP 官方文档------最权威的参考资料
MCP GitHub 仓库------规范和 SDK 源码
Anthropic 的 MCP 介绍博客------官方的背景说明
What is the Model Context Protocol (MCP)? - Model Context Protocol