无尘阁日记

无尘阁日记

025MCP协议是内化在程序里的,还是一种文字化的协议,比如像markdown语法这种,或者TCP协议这种?
2025-06-17

这个问题非常关键,也非常深刻。

简单先说答案:

MCP 不是一种“外部定义好的标准协议”,比如 HTTP、TCP/IP 这类通信协议那样;
也不是一种像 Markdown 那样的“语言格式协议”,比如用于文本结构化展示;
它更像是一种“在系统内部实现的语义性控制框架”——是逻辑层/调度层上的一种“方法约定”,而非“纯文本协议”。

下面我从三个角度帮你拆解清楚:

一、从“协议”二字的歧义说起:它是行为规范,不是通信格式

很多人一看到“协议”两个字,容易联想到 TCP/IP、HTTP、WebSocket、gRPC 这些“通信协议”。但在 MCP 中,“协议”不是网络通信协议,而是“任务管理的逻辑约定”

就像“RESTful协议”其实是一种接口设计风格,“MCP”也是一种智能体运行逻辑的调度结构约定

你可以理解为:

MCP 是一种帮助 Agent 管理任务状态、进度、上下文的“内部工作协议”

它不是文字描述用的语法,也不是网络通信用的报文,而是一种系统内“如何组织任务、调度模型、注入知识”的思维骨架和运行方法。

二、MCP 的本质是:程序内部的任务调度机制

比如你在构建一个“多轮智能问诊机器人”,你输入:

“我肚子疼,昨晚吃了一点凉的。”

这时候,模型无法一次性判断你是肠胃炎、食物中毒还是其他,更不能直接开药。于是我们需要:

  1. MCP 来维持整个“问诊会话”的结构与状态:当前在哪一步?已经问过什么?病人信息有哪些?

  2. MCP 来规划下一步动作:比如触发“继续问诊 Agent”,提示模型问“有没有发烧?大便正常吗?”

  3. 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 / HTTPMarkdownMCP
目标定义网络通信报文定义文本展示格式管理智能体任务与流程
类型通信协议文本协议内部调度机制
执行方式操作系统或网络协议栈渲染器系统运行时(调度引擎)
是否可写成文字是(报文)是(文本)

可以部分结构化,但不是文本协议

附带一句更深的理解:

MCP 本质上,是让“有认知能力的大模型”,变成“有行动能力的系统”的方法论。

没有 MCP,你的 AI 只能回答问题;

有了 MCP,它才能完成任务。

如果你真的要落地构建 Agent 系统,MCP 的逻辑应该是你最先抽象的一层:它决定了任务如何演进、信息如何传递、模型如何交替、系统如何响应外部变化

所以,它不是一个可以拷贝粘贴的模板,而是一个你要用代码和运行时亲手织出来的“调度网络”。

如夜话,至此。