<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Redis | 面条的草稿箱</title><description>无原创，纯转发</description><link>http://drafts.miantiao.me</link><item><title>为什么 MCP 服务器难以部署在 Serverless 架构上？随着大模型生态的发展，MCP（Model Context Protocol，模型上下文协议）成为了连接 AI 助手与外部工具的热门选择</title><link>http://drafts.miantiao.me/posts/160</link><guid isPermaLink="true">http://drafts.miantiao.me/posts/160</guid><pubDate>Thu, 16 Jul 2026 15:14:45 GMT</pubDate><content:encoded>为什么 MCP 服务器难以部署在 Serverless 架构上？&lt;br /&gt;&lt;br /&gt;随着大模型生态的发展，MCP（Model Context Protocol，模型上下文协议）成为了连接 AI 助手与外部工具的热门选择。然而，在实际部署中，开发者很快就会遇到一个棘手的架构问题：&lt;b&gt;MCP 服务器默认是有状态的（Stateful）&lt;/b&gt;。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. 单客户端的尴尬限制&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;在最基础的 HTTP/SSE（Server-Sent Events）实现中，服务器通常会将连接通道（Transport）保存在内存变量中。这意味着，一旦有第二个客户端尝试连接，前一个客户端的连接就会被迫中断。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. 内存常驻与 Serverless 的冲突&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;即便我们通过引入 ID 标识来管理多个连接，依然无法解决核心问题——连接状态依然保存在服务器的内存中。&lt;br /&gt;&lt;br /&gt;这种“有状态”的特性，直接把 Serverless 部署方案（如 Vercel、AWS Lambda）排除在外。因为 Serverless 函数在请求结束后会随时销毁实例，导致内存中的连接状态丢失。要维持连接，你只能选择 VPS 等需要持续运行的服务器，这增加了运维成本。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. 如何实现无状态化？&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;目前最可行的解决方案是&lt;b&gt;将状态外置&lt;/b&gt;。我们可以将 Transport 信息存储到像 &lt;mark class=&quot;highlight&quot;&gt;Redis&lt;/mark&gt; 这样的键值数据库中。&lt;br /&gt;&lt;br /&gt;通过将状态抽离到 &lt;mark class=&quot;highlight&quot;&gt;Redis&lt;/mark&gt;，MCP 服务器成功实现了无状态化（Stateless），从而能够自由地部署到 Vercel 等 Serverless 平台上。Vercel 官方开源的 &lt;code&gt;mcp-on-vercel&lt;/code&gt; 项目正是采用了这种架构设计。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;思考&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;虽然通过 &lt;mark class=&quot;highlight&quot;&gt;Redis&lt;/mark&gt; 解决了部署问题，但这无疑增加了系统的复杂度。我们不禁会想：在协议设计之初，是否应该让客户端去承担更多的状态维护，从而避免让服务端背上数据库的包袱？&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;原文链接：&lt;a href=&quot;https://www.aihero.dev/the-problem-with-mcp-stateful-server&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://www.aihero.dev/the-problem-with-mcp-stateful-server&quot;&gt;https://www.aihero.dev/the-problem-with-mcp-stateful-server&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;/search/result?q=%23MCP&quot; title=&quot;#MCP&quot;&gt;#MCP&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Serverless&quot; title=&quot;#Serverless&quot;&gt;#Serverless&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84&quot; title=&quot;#系统架构&quot;&gt;#系统架构&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Redis&quot; title=&quot;#Redis&quot;&gt;#Redis&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23AI%E5%BC%80%E5%8F%91&quot; title=&quot;#AI开发&quot;&gt;#AI开发&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://www.aihero.dev/the-problem-with-mcp-stateful-server&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Discover how to deploy MCP servers statelessly using Redis, enabling compatibility with serverless platforms like Vercel and AWS Lambda.&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;www.aihero.dev&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;The Problem With MCP: Stateful Servers&quot; src=&quot;https://drafts.miantiao.me/static/https://cdn4.telesco.pe/file/eZHS1FKqGEll-5dHMuSGcHFBKTVEXTJ7Btcg8z86Gc7DdGPcqcwAoQaTIKWNrx9DHnao32NR_IGo56XJWENNdf3unLR9B8Wi9iGV0gWFipjkorEz8Ii1mO_n50LPt4P44x2nOdZy8U38zIZoWvnuJQJk-LNqcO5duB2h5tCBd2EBJKSafDH4tY54UFasE2CZ8Ps8_KnyheoAqO3FKa2__YS5YRw_Y7NWoJ2w24TZuKOQ5x8b-dxYqn6avkA0OB0Qa76PzqPYWQLytGQ2ILP5FPQNrdtaTJU9p-_1jWoCLxx_8Gp99FomFUSmmh25HYaB6Q1nvXwvMvqBTBtWpQkntQ.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;The Problem With MCP: Stateful Servers&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Discover how to deploy MCP servers statelessly using &lt;mark class=&quot;highlight&quot;&gt;Redis&lt;/mark&gt;, enabling compatibility with serverless platforms like Vercel and AWS Lambda.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item></channel></rss>