-
Notifications
You must be signed in to change notification settings - Fork 156
Description
I brought this up earlier in DIscord and @ChrisJBurns and I worked on trying to track it down. Seems like it's time to move it here.
When running the everything MCP server in ToolHive (whether using thv run everything or thv run npx://@modelcontextprotocol/server-everything) and connecting with anything that uses the MCP SDK (including Cursor or the MCP Inspector, or my own app, TeamSpark AI Workbench) the MCP server will fail to provide any tools, usually timing out.
I verified that I can run everything locally via stdio or SSE and it works fine from the same test tools, so this is only an issue when combining the MCP SDK, the ToolHive proxy, and the ToolHive container.
Here is what Chris got from Cursor:
And here is what I got from my app logs:
12:56:16.962 › [MCP CLIENT] createTransport - url: http://localhost:25913/sse#everything
12:56:16.981 › MCP client error: Received a response for an unknown message ID: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2024-11-05","capabilities":{"prompts":{},"resources":{"subscribe":true},"tools":{},"logging":{},"completions":{}},"serverInfo":{"name":"example-servers/everything","version":"1.0.0"}}}
12:56:16.982 › [MCP CLIENT] connected, getting version
12:56:16.983 › [MCP CLIENT] connected, got version: {"name":"example-servers/everything","version":"1.0.0"}
12:56:16.983 › [MCP CLIENT] connected, getting tools
12:57:16.992 › Error connecting to MCP server: MCP error -32001: Request timed out
The above logs are generated from some very generic client code that opens a connection on an SSE transport pointing to the proxy, gets the version, and attempts to get the tools. The MCP client error message on line 2 comes through the onerror handler on the transport (the transport doesn't fail to connect or throw an exception, but it does emit this error). Then it times out when calling listTools().
I haven't had any issues with other MCP servers and this same client code (I've tested with many, including several using the SSE transport pointing at a ToolHive proxy endpoint).
I have reviewed both the MCP client SDK source and the everything server source and didn't see anything obvious (but I didn't go super deep).