025MCP协议是内化在程序里的,还是一种文字化的协议,比如像markdown语法这种,或者TCP协议这种?
2025-06-17
这个问题非常关键,也非常深刻。
简单先说答案:
MCP 不是一种“外部定义好的标准协议”,比如 HTTP、TCP/IP 这类通信协议那样;
也不是一种像 Markdown 那样的“语言格式协议”,比如用于文本结构化展示;
它更像是一种“在系统内部实现的语义性控制框架”——是逻辑层/调度层上的一种“方法约定”,而非“纯文本协议”。
下面我从三个角度帮你拆解清楚:
一、从“协议”二字的歧义说起:它是行为规范,不是通信格式
很多人一看到“协议”两个字,容易联想到 TCP/IP、HTTP、WebSocket、gRPC 这些“通信协议”。但在 MCP 中,“协议”不是网络通信协议,而是“任务管理的逻辑约定”。
就像“RESTful协议”其实是一种接口设计风格,“MCP”也是一种智能体运行逻辑的调度结构约定。
你可以理解为:
MCP 是一种帮助 Agent 管理任务状态、进度、上下文的“内部工作协议”。
它不是文字描述用的语法,也不是网络通信用的报文,而是一种系统内“如何组织任务、调度模型、注入知识”的思维骨架和运行方法。
二、MCP 的本质是:程序内部的任务调度机制
比如你在构建一个“多轮智能问诊机器人”,你输入:
“我肚子疼,昨晚吃了一点凉的。”
这时候,模型无法一次性判断你是肠胃炎、食物中毒还是其他,更不能直接开药。于是我们需要:
MCP 来维持整个“问诊会话”的结构与状态:当前在哪一步?已经问过什么?病人信息有哪些?
MCP 来规划下一步动作:比如触发“继续问诊 Agent”,提示模型问“有没有发烧?大便正常吗?”
MCP 来收集每一步 Agent 的结果,并维护“任务树”。
所以,MCP 是一个程序层面中用于管控多智能体协作流程的机制。它是一套方法论 + 调度框架 + 状态机模型,实现上可能是:
Python 的一套类和方法;
JSON 格式下的任务流结构;
状态机 / DAG(有向无环图);
微服务系统中的调度中枢;
这取决于你用什么语言、搭什么框架,但它不等于“写一段文字”就能生效。
三、有没有文本表达?可以有,但只是“接口层”的一部分
你也许想问:那 MCP 可不可以“写成一段结构化的文字”,比如像 YAML / Markdown / JSON 格式那样,输入后直接触发?
答案是:可以有,但那只是 MCP 的“输入表达层”,不是它的本体。
比如你可以这样定义一个任务流程:
{ "task": "抢火车票", "steps": [ {"name": "查询余票", "agent": "ticketQueryAgent"}, {"name": "身份验证", "agent": "userAuthAgent"}, {"name": "自动下单", "agent": "bookingAgent"}, {"name": "通知支付", "agent": "notifyAgent"} ]}
这类结构确实像“协议格式”,但它其实只是 MCP 调度系统要消费的“任务脚本”,它背后需要有一整套程序去:
解析这段结构;
动态调度相关模型或 API;
管理执行状态与中断恢复;
根据结果决定下一步。
这就像你写一段 markdown,只是给渲染引擎一个提示,背后真正执行的是“渲染引擎”——而 MCP 更像那个“渲染+调度系统”。
总结:MCP 更像是“调度大脑”,不是“通信语言”
类别 | TCP / HTTP | Markdown | MCP |
---|---|---|---|
目标 | 定义网络通信报文 | 定义文本展示格式 | 管理智能体任务与流程 |
类型 | 通信协议 | 文本协议 | 内部调度机制 |
执行方式 | 操作系统或网络协议栈 | 渲染器 | 系统运行时(调度引擎) |
是否可写成文字 | 是(报文) | 是(文本) | 可以部分结构化,但不是文本协议 |
MCP 本质上,是让“有认知能力的大模型”,变成“有行动能力的系统”的方法论。
没有 MCP,你的 AI 只能回答问题;
有了 MCP,它才能完成任务。
如果你真的要落地构建 Agent 系统,MCP 的逻辑应该是你最先抽象的一层:它决定了任务如何演进、信息如何传递、模型如何交替、系统如何响应外部变化。
所以,它不是一个可以拷贝粘贴的模板,而是一个你要用代码和运行时亲手织出来的“调度网络”。
如夜话,至此。
发表评论: