MCP SSE协议发送注意

springAI代码

mcp server

复制代码
@Service
public class WeatherService {

    @Tool(name = "getWeather", description = "根据城市名称获取天气预报信息")
    public String getWeather(@ToolParam(description = "城市") String cityName) {
        return cityName + "天气阳光明媚~";
    }
}

Toolconfig

复制代码
@Component
public class ToolConfig {

    @Bean
    public ToolCallbackProvider weatherTools(WeatherService weatherService) {
        return MethodToolCallbackProvider.builder()
                .toolObjects(weatherService)
                .build();
    }
}

配置

复制代码
spring:
  ai:
    mcp:
      server:
        name: my-business-mcp-server
        version: 1.0.0
        # 启用 Streamable HTTP 协议
#        streamable-http:
#          enabled: true
#          endpoint: /mcp
        # 如果也想兼容老客户端,可以顺便开启 SSE
        sse:
          enabled: true
          endpoint: /sse

调试

第一步:拿到新的 Session ID

刷新你的浏览器 http://localhost:8004/sse,在 EventStream 里复制最新的 sessionId(假设是 abc-123)。

第二步:发送初始化请求(必须发!)
复制代码
curl -X POST "http://localhost:8004/mcp/message?sessionId=abc-123" -H "Content-Type: application/json" -d "{\"jsonrpc\":\"2.0\",\"id\":\"1\",\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"curl-test\",\"version\":\"1.0.0\"}}}"

(这个命令应该很快就会返回一个包含协议版本的 JSON)

第三步:发送确认通知(必须发!)
复制代码
curl -X POST "http://localhost:8004/mcp/message?sessionId=abc-123" -H "Content-Type: application/json" -d "{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}"

(这个命令会返回 HTTP 200,但可能没有内容)

第四步:正式调用天气工具
复制代码
curl -X POST "http://localhost:8004/mcp/message?sessionId=abc-123" -H "Content-Type: application/json" -d "{\"jsonrpc\":\"2.0\",\"id\":\"2\",\"method\":\"tools/call\",\"params\":{\"name\":\"getWeather\",\"arguments\":{\"cityName\":\"北京\"}}}"

就可以收到结果了,这个是针对相同sessionID得

建议使用人家封装好的工具省的自己搞

相关推荐
qfljg3 小时前
OpenRewrite 实战指南
java
Sylvia33.3 小时前
LOL实时数据接入深度解析:从WebSocket到完整数据模型
java·网络·python·websocket·网络协议
2601_962071578 小时前
【Java报错已解决】org.springframework.beans.factory.BeanCreationException
java·开发语言
zww89491119 小时前
酒馆预约系统开发实战:从需求分析到上线全流程指南
java·eclipse
zww894911112 小时前
匿名树洞系统开发实战:从需求分析到部署指南
java·eclipse
黑马程序员毕设13 小时前
基于Java的医院药品管理系统的优化设计与实现
java·开发语言·spring boot·小程序·架构·课程设计·毕设
木井巳13 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法
白山编程大哥13 小时前
Java 集合算法:从排序、查找到底层原理的实战指南
java·python·算法
devpotato13 小时前
缓存与数据库更新顺序不一致问题
java·数据库·redis
xcl092514 小时前
酒馆预约系统开发实战:从需求分析到上线全流程指南
java·spring boot·需求分析