註冊並分享邀請連結,可獲得影片播放與邀請獎勵。

yibie
@yibie
加入 November 2008
2.5K 正在關注    4.5K 粉絲
推荐 Matt Pocock(TypeScript 界最有名的人之一)这篇对 MCP 协议的犀利批评。题目不大,但问题是真问题:MCP 的 HTTP+SSE 传输要求服务器是有状态的——当 agent 用 HTTP POST 发请求、再用 GET 建立 SSE 连接时,服务器必须在内存里保存两者之间的映射。这意味着什么?你没法把 MCP 服务器部署到 Vercel 或 AWS Lambda 这些 serverless 平台。 你只能部署到长运行服务器上——VPS 或类似的。对于 MCP 这个正被大量推广为"agent 互操作标准"的协议,这是一个值得注意的架构约束。 MCP 的问题:有状态服务器 Matt Pocock,AI Hero。 MCP 是一个允许 agent 和外部工具通信的协议。它为 agent 提供了标准化的方式与外部 API 交互——读取文件、查询数据库、调用服务,等等。 核心问题是传输层。 MCP 最广泛使用的传输方式是 HTTP + SSE(Server-Sent Events)。流程: 1. Agent 发 HTTP POST 到 /message 发起操作 2. Agent 发 HTTP GET 到 /sse 建立 SSE 长连接,接收服务器推送 3. 服务器必须在内存中保持两个连接之间的映射 这就是问题所在。 有状态的要求意味着: • ❌ 不能部署到 Vercel(serverless,请求之间销毁状态) • ❌ 不能部署到 AWS Lambda(同理) • ✅ 只能部署到长运行服务器(VPS、Docker 等) Vercel Labs 的 mcp-on-vercel 项目尝试用外部存储(如数据库)来绕过这个问题——把 transports 存到持久化存储而非内存里。这是一个可行的方向,但它把 MCP 服务器的架构变复杂了——你现在需要管理数据库连接、状态清理、过期 session。 为什么这重要 MCP 被定位为"agent 工具互操作标准"。如果这是真的,部署约束就是一个 Architecutural Constraint 而不仅仅是一个实现细节。 Serverless 是现代 Web 部署的默认范式。如果你设计的互操作标准排除 serverless 部署,你就排除了一大类潜在实现者。 这不是说 MCP 不好——它在某些场景下工作得很好(本地 agent + 本地工具)。但如果你想让 MCP 变成"互联网的 agent 工具协议",有状态传输是一个根本性的瓶颈。 原文: #MCP# #Agent工程# #Serverless#
顯示更多
0
33
115
11
轉發到社區