跳到主要内容

无状态MCP把那次握手省没了

一键三连
一键三连

· 阅读约 2 分钟

连一个新的MCP服务器,旧规范底下你得先发一次初始化请求,把Mcp-Session-Id换回来,之后每次工具调用都得带着它,服务器那边还要记着你的状态。这动作一天来几十次,烦的不是多一个请求,是它逼着你在脑子里把“连接”当成一件需要记得的事——而它本可以不存在的。

上月底看到Simon Willison那篇博客,大意就是无状态MCP重新激起了他对Model Context Protocol的兴趣。MCP 2.0是7月28号发布的,他31号就写出了那篇——一周里搭了三个项目:mcp-explorer、datasette-mcp,还有llm-mcp-client。

改动本身小到你会怀疑“就这也值得单独发一版”。旧规范调用一个工具要走两次HTTP:先初始化,拿回Session-Id,再带Id去调。无状态版一次POST就完事,带上MCP-Protocol-Version和Mcp-Method两个标头,服务器不需要记你。省的不只是一次往返,是维护整条会话状态的脑回路——调试时少想一层,本地搭原型的差别特别明显。

但最让我觉得“立刻能抄”的是datasette-mcp:

datasette install datasette-mcp

三十秒装完,你的Datasette实例就多了一个/-/mcp端点。就三个工具:list_databases、get_database_schema,和一个只读的execute_sql。能查库,不放开写权限,这个克制我挺喜欢。Simon把它跑在datasette.simonwillison.net上,他演示里用llm-mcp-client连过去查博客,151条笔记,数字对得上。⚡这一下,无状态MCP的意义不在“少了一次握手”,是它把“连一个新服务器”从一件需要想的事变成了一个URL。

Simon那篇里还有个判断我也认:比起让代理直接访问终端和curl,MCP暴露的是“工具”——每个能干什么、参数长什么样,调用之前就能审计。提示注入那问题他没回避,提了,但他还是说之后会在敏感应用里更多用MCP。不是因为它绝对干净,是它比“给代理一把万能钥匙”更好推理边界。无状态之后这个对比依然成立,甚至更好,因为你少维护的是整个状态层。

顺带,他那个mcp-explorer用uvx就能跑,交互式列出MCP服务器上的工具,想看一个端点到底暴露了哪些功能,这个最直接。

装插件花的成本就那三十秒,以后每次连都省掉初始化,这笔账在第一天就还清了。你有更快的玩法,教教我。

评论

还没有评论,写下第一条讨论。

无状态MCP把那次握手省没了 | 跑通