You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring AI MCP服务器(STDIO传输)无输出问题求助

问题排查与解决方法

1. 配置类变量名拼写错误

你的配置类代码中存在变量名不一致问题:

@Bean
public ToolCallbackProvider getToolCallbacks(McpComponent lightMcpComponent) {
    // 此处参数为lightMcpComponent,但调用时写为tMcpComponent,属于拼写错误
    return ToolCallbackProvider.from(List.of(ToolCallbacks.from(tMcpComponent)));
}

该错误会导致工具回调无法正确绑定到目标组件,即便日志显示工具已注册,实际请求时也找不到对应的执行逻辑。

解决方法:修正变量名,保持参数与调用一致:

@Bean
public ToolCallbackProvider getToolCallbacks(McpComponent lightMcpComponent) {
    return ToolCallbackProvider.from(List.of(ToolCallbacks.from(lightMcpComponent)));
}

2. 工具类未标注@McpComponent注解

Spring AI的MCP组件要求包含@Tool方法的类必须添加@McpComponent注解,否则框架无法识别该类为工具提供者,即便方法上标注了@Tool也无法被正确调用。

解决方法:在工具方法所在类上添加注解,且名称需与配置文件中的MCP服务器名称一致:

import org.springframework.ai.mcp.McpComponent;
import java.util.Random;

@McpComponent("light-mcp") // 与application.yml中spring.ai.mcp.server.name配置值匹配
public class LightMcpComponent {

    @Tool(name = "get_random_number", description="Return a random number", returnDirect = true)
    public long getRandomNumber() {
        long newRandomLong = new Random(System.currentTimeMillis()).nextLong();   
        return newRandomLong;
    } 
}

3. JSON-RPC请求格式问题

MCP STDIO服务器要求每个JSON-RPC请求必须独占一行,且请求ID不能重复(重复ID会触发协议错误,导致无响应)。

正确请求格式示例:

{"jsonrpc":"2.0","id":2,"method":"tools/list"}
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_random_number","arguments":{}}}

4. 开启DEBUG日志定位细节

调整日志级别为DEBUG,查看请求处理全流程的日志输出,确认请求是否被解析、工具是否被匹配:
在application.yml中添加日志配置:

logging:
  level:
    org.springframework.ai.mcp: DEBUG

通过DEBUG日志可以排查请求接收、参数解析、工具调用等环节的具体问题。


内容的提问来源于stack exchange,提问作者gusto2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 13:12:31