-
Notifications
You must be signed in to change notification settings - Fork 214
Description
一直回退到8771a5bf6fd1fe7d474f88743cc5ac167a5c1ca7 这个 commit id,才正常。
原因是:
node simple-test.js
简单测试 MCP Server tools/list 请求...
Sending initialize request...
STDERR: [DEBUG] Starting Shrimp Task Manager MCP Server...
STDERR: [DEBUG] ENABLE_GUI: false
STDERR: [DEBUG] MCP Server created successfully
[DEBUG] Connecting to STDIO transport...
STDERR: [DEBUG] MCP Server connected and ready to receive requests
STDOUT: {"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{},"logging":{}},"serverInfo":{"name":"Shrimp Task Manager","version":"1.0.0"}},"jsonrpc":"2.0","id":1}
Sending tools/list request...
STDERR: [DEBUG] Received tools/list request
STDERR: [DEBUG] Starting to load tool descriptions...
STDOUT: {"method":"roots/list","jsonrpc":"2.0","id":0}
Killing process...
我看到了一个现象,server收到了 tools/list 请求,开始加载工具描述,但是没有看到 "Successfully loaded planTask description" 的日志。然后出现了 roots/list 请求。
这看起来像是服务器在处理 tools/list 请求的过程中遇到了错误,然后MCP SDK自动发起了 roots/list 请求。让我检查 getDataDir 函数,因为这可能是问题的根源:
/Users/panrui/.config/mcphub/mcp-shrimp-task-manager/src/utils/paths.ts
我发现了问题!在 getDataDir() 函数中,当存在全局server时,它会调用 server.listRoots() 方法。这就是我们在STDOUT中看到 {"method":"roots/list","jsonrpc":"2.0","id":0} 的原因!
这个 roots/list 请求是由我们自己的代码发起的,不是来自客户端。但是,这个过程可能导致问题,因为我们在处理 tools/list 请求的过程中同步调用了另一个MCP方法。
listRoots 在不支持 listRoots的客户端无法使用