mcp streamable http
中的stateless_http
参数主要用来控制HTTP 请求处理是否保持状态。它的作用可以概括为:
1. 有状态 vs. 无状态
- 有状态(stateless_http = false)
- 请求之间会共享上下文,比如连接信息、会话缓存、流式传输的中间状态。
- 适合需要连续会话、长连接或上下文关联的场景(例如:流式传输带认证、断点续传)。
- 无状态(stateless_http = true)
- 每个 HTTP 请求独立处理,不保留任何之前请求的上下文。
- 服务端不会维持会话信息,也不会存储流式的中间状态。
- 更符合标准的 RESTful 风格,方便水平扩展和负载均衡。
2. 对 Streamable 的影响
- 在
streamable http
场景中,如果开启stateless_http = true
:- 每个请求都必须包含所有必要的信息(例如鉴权、偏移量、参数),因为服务端不会记住上一次请求的状态。
- 流式响应可能需要客户端主动管理进度(例如通过 Range 请求或 cursor 机制)。
- 如果
stateless_http = false
:- 服务端可以在请求间维持 stream session,上次的偏移量、上下文、连接状态等可以复用,客户端更“轻”。
3. 使用场景
- 开启**
stateless_http
**** (true)**- 分布式/无状态服务
- 需要弹性扩展和高并发
- 不依赖持久连接
- 关闭**
stateless_http
**** (false)**- 长连接/会话化场景
- 需要流式上下文(如大文件分块传输、实时推流)
- 交互式 API