Skip to content

[BUG] SolonMcp v3.8.0 STREAMABLE_STATELESS模式 和 MCP Inspector v0.18.0有兼容问题,无法连接测试 #408

@EddyPan

Description

@EddyPan

关联版本

您当前正在使用我们框架的哪个版本?
SolonMcp v3.8.0

问题描述

升级到v3.8.0版本,使用STREAMABLE_STATELESS模式,通过MCP Inspector v0.18.0连接失败
后端报错:
ERROR 2025-12-31 10:57:17.995 #75044 [-smarthttp-12] reactor.core.publisher.Operators#console:
Operator called default onErrorDropped
reactor.core.Exceptions$ErrorCallbackNotImplemented: io.modelcontextprotocol.spec.McpError: Missing handler for request type: logging/setLevel
Caused by: io.modelcontextprotocol.spec.McpError: Missing handler for request type: logging/setLevel
at io.modelcontextprotocol.server.DefaultMcpStatelessServerHandler.handleRequest(DefaultMcpStatelessServerHandler.java:35)
at io.modelcontextprotocol.server.transport.WebRxStatelessServerTransport.lambda$doHandlePost$2(WebRxStatelessServerTransport.java:113)
at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:153)
at reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53)
at reactor.core.publisher.Flux.subscribe(Flux.java:8876)
at reactor.core.publisher.Flux.subscribeWith(Flux.java:9012)
at reactor.core.publisher.Flux.subscribe(Flux.java:8856)
at reactor.core.publisher.Flux.subscribe(Flux.java:8780)
at reactor.core.publisher.Flux.subscribe(Flux.java:8698)
at org.noear.solon.web.rx.integration.RxHandlerImpl.lambda$handle$4(RxHandlerImpl.java:88)
at org.noear.solon.rx.impl.CompletableImpl.subscribe(CompletableImpl.java:75)
at org.noear.solon.rx.impl.CompletableImpl.lambda$doOnError$0(CompletableImpl.java:98)
at org.noear.solon.rx.impl.CompletableImpl.subscribe(CompletableImpl.java:75)
at org.noear.solon.rx.impl.CompletableImpl.lambda$doOnComplete$2(CompletableImpl.java:164)
at org.noear.solon.rx.impl.CompletableImpl.subscribe(CompletableImpl.java:75)
at org.noear.solon.rx.impl.CompletableImpl.subscribe(CompletableImpl.java:224)
at org.noear.solon.web.rx.integration.RxReturnValueHandler.returnHandle(RxReturnValueHandler.java:80)
at org.noear.solon.core.handle.Context.returnValue(Context.java:1197)
at io.modelcontextprotocol.server.transport.WebRxStatelessServerTransport.handlePost(WebRxStatelessServerTransport.java:91)
at org.noear.solon.core.route.RouterHandler.handleMain(RouterHandler.java:51)
at org.noear.solon.core.route.RouterHandler.handle1(RouterHandler.java:71)
at org.noear.solon.core.route.RouterInterceptorChainImpl.doIntercept(RouterInterceptorChainImpl.java:54)
at org.noear.solon.core.ChainManager.doRouterIntercept(ChainManager.java:261)
at org.noear.solon.core.route.RouterHandler.handle(RouterHandler.java:103)
at org.noear.solon.core.handle.HandlerPipeline.handle(HandlerPipeline.java:53)
at org.noear.solon.core.handle.FilterChainImpl.doFilter(FilterChainImpl.java:51)
at com.cmsr.devops.mcpserver.McpServerAuth.doFilter(McpServerAuth.java:89)
at org.noear.solon.core.handle.FilterChainImpl.doFilter(FilterChainImpl.java:49)
at com.cmsr.devops.config.WebConfig.doFilter(WebConfig.java:29)
at org.noear.solon.core.handle.FilterChainImpl.doFilter(FilterChainImpl.java:49)
at org.noear.solon.logging.integration.MdcClearFilter.doFilter(MdcClearFilter.java:33)
at org.noear.solon.core.handle.FilterChainImpl.doFilter(FilterChainImpl.java:49)
at org.noear.solon.core.ChainManager.doFilter(ChainManager.java:119)
at org.noear.solon.SolonApp.lambda$tryHandle$6(SolonApp.java:624)
at org.noear.solon.util.ScopeLocalJdk8.withOrThrow(ScopeLocalJdk8.java:81)
at org.noear.solon.core.handle.ContextHolder.currentWith(ContextHolder.java:43)
at org.noear.solon.SolonApp.tryHandle(SolonApp.java:619)
at org.noear.solon.server.smarthttp.http.SmHttpContextHandler.handleDo(SmHttpContextHandler.java:123)
at org.noear.solon.server.smarthttp.http.SmHttpContextHandler.handle0(SmHttpContextHandler.java:101)
at org.noear.solon.server.smarthttp.http.SmHttpContextHandler.lambda$handle$0(SmHttpContextHandler.java:86)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)

如何复现

请详细告诉我们如何复现您遇到的问题,并附上可复现的代码示例

  1. 基于SolonMcp v3.8.0 开发STREAMABLE_STATELESS类型MCP
  2. 使用MCP Inspector v0.18.0 测试MCP功能,提示连接失败,后端报错
//可在此输入示例代码

@McpServerEndpoint(channel = McpChannel.STREAMABLE_STATELESS, name = "xxx-mcp", mcpEndpoint = "/mcp/xxx")

预期结果

请告诉我们您预期会发生什么。
希望STREAMABLE_STATELESS仍然可以使用MCP Inspector进行测试

实际结果

请告诉我们实际发生了什么。
希望STREAMABLE_STATELESS模式使用MCP Inspector连接报错

截图或视频

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions