没有收到来自Spring AI MCP服务器的任何响应
我正在使用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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。