| 编辑推荐: |
本文用一张全景图串起 MCP 的四个关键面:概念、架构、数据传输与工具调用。从 Host / Client / Server 的角色分工,到 stdio 与 HTTP+SSE 两种传输方式,再到基于 JSON-RPC 2.0 的 tools/list、tools/call 交互时序,最后厘清 MCP 与 Function Calling 的叠加关系,是理解 MCP 协议的一份简洁入门笔记。 本文来自于微信公众号智能体日札,由火龙果软件Alice编辑、推荐。 |
|
摘要:MCP的概念, 架构, 数据传输方式, 和工具调用的关系
一、概念
MCP: Model Context Protocol, 是"AI 应用的 USB-C 端口", 不管设备(数据源)什么样,插上就能用, 所有符合协议的客户端都能接入, 架构分为client/host/ server,底层通信JSON-RPC 2.0。
| 角色 | 作用 | | Host | AI 应用本体,跑模型、做编排 | | Client | 在 Host 内部、一对一连某个 Server 的部件 | | Server | 服务端,独立进程,提供工具/数据/提示词 |
Server 是独立进程,和 Agent 主程序分开跑,靠标准输入/输出或网络通信。工具实现完全封装在 Server 里,Host 不用知道 web_search 内部调的是什么。
两种传输方式:
| 传输 | 连接方式 | 适合 | 安全特点 | | stdio | Server 作为子进程被 Host 拉起,用 stdin/stdout 交换消息 | 本地、同机 | 不占网络端口,进程退出即断,最安全 | | HTTP+SSE | Server 运行在远端,Client 通过网络连接 | 远程、跨机器/云端 | 要走鉴权、HTTPS,运维成本更高 |
二、通过JSON-RPC 2.0传数据
① Client 问 Server:你有哪些工具?
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
} |
② Server 回答:工具清单
inputSchema是告诉模型工具的数据格式
{
"jsonrpc": "2.0v,
"id": 1,
"result": {
"tools": [
{
"name": "read_notev",
"description": "读取某篇笔记的全文内容",
"inputSchema": {
"type": "object",
"properties": { "name": { "type": "string" } },
"required": ["name"]
}
}
]
}
} |
③ Client 让 Server 执行调用
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": { "name": "read_note", "arguments": { "name": "doc1.md" } }
} |
模型根据description决定是否调用,根据inputSchema知道传什么参。和之前自定义工具 @tool的 docstring作用相同,在 MCP 里被规范化成了 JSON。
端到端时序
你 ──"知识库里有哪些笔记"──▶ Host(模型)
│ 模型判断:要调 list_notes
▼
Client(连 notes-server)
│ ① initialize 握手
│ ② tools/list 要清单
▼
Server(notes-server, 独立进程)
│ 回工具清单
▼
Client ──③ tools/call(list_notes)──▶ Server
│ 执行 os.listdir
▼
回文件列表
│
▼
Host(模型)把结果组织成自然语言回你 |
模型只负责想调用哪个工具, 其他的问题由MCP解决。
三、MCP 和 工具调用(Function Calling) 的关系
Function Calling是大模型的能力:模型决定 “要调用哪个工具,参数是什么”, 是模型能力侧。
MCP是应用和外部工具之间的开放通信协议: 用来标准化工具发现、连接、执行, 是基础设施侧。
两者是叠加关系。模型用 Function Calling 发起意图,MCP 负责把意图路由到正确的 Server 工具上并执行。
用户提问
↓
Host应用通过MCP Client,向MCP Server查询可用工具列表、Schema
↓
Host拿到工具描述,把工具定义传给大模型API
↓
【Function Calling环节】大模型判断要调用工具,输出结构化调用JSON
↓
Host收到模型的调用请求,交给MCP Client
↓
【MCP协议环节】MCP Client通过JSON-RPC向MCP Server发起工具调用
↓
MCP Server执行真实逻辑(读文件、查数据库),返回结果
↓
结果原路返回给大模型,模型整合信息输出最终回答 |
计划下次学习如何搭建MCP server以及Agent怎么调用MCP
|