fix(deps): pin the MCP SDK below 2.0 - #25
Merged
Merged
Conversation
An unpinned mcp resolves to 2.x, which dropped mcp.server.fastmcp. Both mcp_server.py and app/mcp_server.py still import FastMCP, so every stdio subprocess died at import and the client saw only "Connection closed". 1.29.1 is the newest release that still ships fastmcp.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
requirements.txtasked for an unpinnedmcp, so a fresh install now resolves to 2.0.0, which removedmcp.server.fastmcpin favour ofMCPServer.Both MCP servers in this plugin still import the 1.x path:
mcp_server.py:103—from mcp.server.fastmcp import FastMCPapp/mcp_server.py:2— sameSo every stdio subprocess dies on line 2, the pipe closes, and the client surfaces only
MCPError: Connection closedwrapped in nestedTaskGroupexception groups. The real cause scrolls past above the traceback.Only the server half of the SDK changed.
mcp.client.stdioandmcp.client.sessionsurvived, so the parent process imports fine, the plugin enables, and the splash page reads configured. The failure waits until a workflow actually spawns a server, which is why this got through.1.29.1is the newest release that still shipsfastmcp. Pinningmcp>=1.9,<2restores both servers with no code change. Migrating to the 2.xMCPServerAPI is a real port and belongs in its own change.Type of change
How Has This Been Tested?
Installed the pin into the CALDERA venv and verified the actual failure is gone:
pip show mcp->1.29.1mcp(Required-by:is empty), so the downgrade is contained.70 passed, 13 skipped.flake8 . --select=E9,F63,F7(the repo's CI hard gate): passes.Checklist: