spring-ai MCP Server运行一段时间后断联2
现象:
1.工具运行正常
cursor中过5分钟就断联 ,工具状态由绿色变为红色;但此时工具是可用的,手动重新开关后工具状态可恢复绿色,再5分钟后继续变为红色,cursor报错日志如下。
2025-06-11 12:43:56.320 [error] java: Client error for command SSE error: TypeError: terminated: Body Timeout Error
cursor链接工具后,工具日志如下。
2025-06-11T12:38:51.551+08:00 INFO 2177113 --- [weather-mcp-server] [io-8084-exec-12] i.m.server.McpAsyncServer : Client initialize request - Protocol: 2025-03-26, Capabilities: ClientCapabilities[experimental=null, roots=RootCapabilities[listChanged=false], sampling=null], Info: Implementation[name=cursor-vscode, version=1.0.0]
2025-06-11T12:38:51.551+08:00 WARN 2177113 --- [weather-mcp-server] [io-8084-exec-12] i.m.server.McpAsyncServer : Client requested unsupported protocol version: 2025-03-26, so the server will suggest the 2024-11-05 version instead
cherry studio可能内部有重连机制,可以正常调用工具,无相关状态标志。
2.工具运行正常,但服务异常。
cursor未测试;
cherry studio链接异常,报错日志如下。
Error invoking remote method 'mcp:list-tools':Error:[MCP] Error activating server MCP服务器1.1:SSE error(attempted address:1.1.1.1:5100,timeout:10000ms)
cherry studio链接异常,工具日志无明显异常。
但使用fastmcp实现的工具就没有上述问题
FastMCP vs Spring AI 的差异分析
根据技术对比文章,FastMCP相比Spring AI有以下优势:
稳定性方面:
- FastMCP专门为MCP设计,SSE实现更加成熟
- 内置连接保活机制(periodic pings)
- 更好的错误处理和重连机制
架构差异:
- Spring AI依赖Servlet容器的SSE实现
- FastMCP使用Node.js原生的SSE流处理
MCP协议最新变化
2025年3月,MCP协议进行了重大更新:
- 用Streamable HTTP取代HTTP+SSE传输
- 简化了连接管理
- 改善了长连接稳定性
但Streamable HTTP传输目前的状态是:
- MCP规范支持 - Streamable HTTP确实是MCP 2025-03-26规范的一部分
- TypeScript实现 - 官方TypeScript SDK已经支持
- Java实现缺失 - Spring AI和MCP Java SDK尚未完全实现Streamable HTTP支持