没有收到来自Spring AI MCP服务器的任何响应

人工智能 2026-07-10

我正在使用Spring AI,并通过STDIO传输构建一个骨架MCP服务器:

pom.xml

    <properties>
        <java.version>21</java.version>
        <spring-ai-starter.version>1.1.4</spring-ai-starter.version>
    </properties>
...
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-mcp-server</artifactId>
            <version>${spring-ai-starter.version}</version>
        </dependency>

application.yml

spring:
  ai:
    mcp: 
      server:
        stdio: true
        name: light-mcp
        version: 0.0.1
  main:
    banner-mode: off
    web-application-type: none

组件

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

配置

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

启动后,我看到工具已注册,输入也被处理(对于无效输入会返回错误信息):

java -jar target/mcp-server-....
...
o.s.a.m.s.c.a.McpServerAutoConfiguration : Registered tools: 1
...

当我向输入端发送一个有效的JSON-RPC时,我仍然无法得到任何输出。也看不到调用到的工具方法。

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

这是在服务器启动后发送到输入端(标准输入)的,但我没有看到任何输出被打印出来。如果提供了无效的 method 值,会返回错误信息,因此看起来输入以某种方式被处理了。

解决方案

最终我按描述找到了问题所在

https://github.com/modelcontextprotocol/java-sdk/issues/569

客户端必须发送一条消息

{ "jsonrpc": "2.0", "method":"notifications/initialized" }
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章