Package: fastapi-mcp version 0.4.0
Dependency: mcp>=1.12.0
Severity: Critical — prevents application startup
Description
fastapi-mcp 0.4.0 calls Server.init with description as a second positional argument:
# fastapi_mcp/server.py, line 144
mcp_server: Server = Server(self.name, self.description)
However, in mcp>=1.12.0, the Server.__init__ signature changed:
# mcp 1.12.0+ (mcp/server/lowlevel/server.py)
class Server:
def __init__(
self,
name: str,
version: str | None = None, # <-- was "description" in older versions
instructions: str | None = None,
lifespan: ... = ...,
):
The second positional argument is now version instead of description. Since fastapi-mcp passes self.description (a human-readable string) as the second positional arg, it maps to version, and instructions is never
set.
Worse, fastapi-mcp specifies mcp>=1.12.0 in its requirements, meaning this incompatibility is unavoidable with any supported version.
Reproduction
pip install fastapi-mcp==0.4.0 mcp>=1.12.0
python -c "
from fastapi import FastAPI
from fastapi_mcp import FastApiMCP
app = FastAPI()
mcp = FastApiMCP(app)
# TypeError: Server.__init__() takes 2 positional arguments but 3 were given
"
Stack Trace
File "fastapi_mcp/server.py", line 144, in setup_server
mcp_server: Server = Server(self.name, self.description)
TypeError: Server.__init__() takes 2 positional arguments but 3 were given
Expected Behavior
FastApiMCP should pass description as the instructions keyword argument, or use a compatible mcp version range.
Workaround
Monkey-patch before FastApiMCP(...):
from mcp.server.lowlevel.server import Server as _McpServer
_original = _McpServer.__init__
def _patched(self, name, *args, **kwargs):
if args:
kwargs.setdefault("instructions", args[0])
kwargs.setdefault("version", "")
return _original(self, name, **kwargs)
_McpServer.__init__ = _patched
Suggested Fix
Update fastapi_mcp/server.py line 144 to:
mcp_server: Server = Server(name=self.name, instructions=self.description)
And relax the mcp version constraint or pin to a range that maintains description compatibility.
Package: fastapi-mcp version 0.4.0
Dependency: mcp>=1.12.0
Severity: Critical — prevents application startup
Description
fastapi-mcp 0.4.0 calls Server.init with description as a second positional argument:
The second positional argument is now version instead of description. Since fastapi-mcp passes self.description (a human-readable string) as the second positional arg, it maps to version, and instructions is never
set.
Worse, fastapi-mcp specifies mcp>=1.12.0 in its requirements, meaning this incompatibility is unavoidable with any supported version.
Reproduction
Stack Trace
Expected Behavior
FastApiMCP should pass description as the instructions keyword argument, or use a compatible mcp version range.
Workaround
Monkey-patch before FastApiMCP(...):
Suggested Fix
Update fastapi_mcp/server.py line 144 to:
mcp_server: Server = Server(name=self.name, instructions=self.description)
And relax the mcp version constraint or pin to a range that maintains description compatibility.