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得

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

相关推荐
释厄6233 分钟前
矢量词汇向下不向上公理即词汇归位定律——肤浅即表面
java·人工智能·算法·去中心化·1024程序员节
海绵宝宝转agent9 分钟前
Leetcode100+面经
java·笔记·学习·算法·leetcode·深度优先
会编程的吕洞宾12 分钟前
Spring Boot 镜像瘦身实战:从 450MB 瘦到 180MB
java·后端·spring
Shaoshing14 分钟前
LeetCode100 283.移动零
java·数据结构·算法·leetcode
海绵宝宝转agent15 分钟前
LeetCode100个人题解+java面经总结
java·开发语言·笔记·学习·算法
文丑颜不良啊17 分钟前
LeetCode1201~1220题目解析
java·leetcode
香蕉大香蕉(06敬畏市场)19 分钟前
高频八股 · JVM(7):方法区、元空间与字符串常量池
java·jvm·ai·博客·八股·大厂实习
LazyHunter923 分钟前
Spring Boot 3 微服务实践指南
java·spring boot
zzu123zsw27 分钟前
从 SPI 契约到独立 ClassLoader 隔离:Spring Boot 插件热插拔架构设计与内存泄露防御
java·spring boot·后端·架构设计
文丑颜不良啊28 分钟前
LeetCode1161~1180题目解析
java·leetcode