Spring AI mcp的baseUrl问题解决了

这里如果不配置base-url,我通过http://localhost:8080/sse 可以正常访问。 如果配置了base-url=/api/v1,我看官方文档后我通过http://localhost:8080/api/v1/sse 无法访问 fbcf47d321802a0f7d19506af09adfd8.png 找到源码看了下

text
复制代码
public WebMvcSseServerTransportProvider(ObjectMapper objectMapper, String baseUrl, String messageEndpoint, String sseEndpoint) { this.sessions = new ConcurrentHashMap(); this.isClosing = false; Assert.notNull(objectMapper, "ObjectMapper must not be null"); Assert.notNull(baseUrl, "Message base URL must not be null"); Assert.notNull(messageEndpoint, "Message endpoint must not be null"); Assert.notNull(sseEndpoint, "SSE endpoint must not be null"); this.objectMapper = objectMapper; this.baseUrl = baseUrl; this.messageEndpoint = messageEndpoint; this.sseEndpoint = sseEndpoint; this.routerFunction = RouterFunctions.route().GET(this.sseEndpoint, this::handleSseConnection).POST(this.messageEndpoint, this::handleMessage).build(); }
text
复制代码
@Bean public RouterFunction<ServerResponse> mvcMcpRouterFunction(WebMvcSseServerTransportProvider transportProvider) { return transportProvider.getRouterFunction(); }

这里并没有把base-url放入router里面,这时候去访问http://localhost:8080/sse 还是无法访问。 最后找到了解决问题 配置文件你需要加上这段,就可以正常访问了。context-path是应用全局的路径前缀,而base-url是 MCP 组件内部的路径前缀,两者同时存在时会叠加生效 之前仅配置了组件级别的base-url而没有配置框架级别的context-path,导致路径映射有问题

text
复制代码
server: port: 8080 servlet: context-path: /api/v1
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
Sin
下载 APP