From 42121b2767d30b3dd7cff4ffead2e39d362b043e Mon Sep 17 00:00:00 2001 From: Miki Yutani Date: Mon, 16 Jun 2025 12:38:15 +0900 Subject: [PATCH] Add version parameter to FastMCP constructor --- src/fastmcp/server/server.py | 2 ++ tests/client/test_client.py | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/fastmcp/server/server.py b/src/fastmcp/server/server.py index e5ec2ecb5..541c7d670 100644 --- a/src/fastmcp/server/server.py +++ b/src/fastmcp/server/server.py @@ -110,6 +110,7 @@ class FastMCP(Generic[LifespanResultT]): def __init__( self, name: str | None = None, + version: str | None = None, instructions: str | None = None, auth: OAuthProvider | None = None, lifespan: ( @@ -175,6 +176,7 @@ class FastMCP(Generic[LifespanResultT]): self._has_lifespan = True self._mcp_server = MCPServer[LifespanResultT]( name=name or "FastMCP", + version=version, instructions=instructions, lifespan=_lifespan_wrapper(self, lifespan), ) diff --git a/tests/client/test_client.py b/tests/client/test_client.py index 1c246337d..531845af7 100644 --- a/tests/client/test_client.py +++ b/tests/client/test_client.py @@ -321,6 +321,29 @@ async def test_initialize_result_disconnected(fastmcp_server): _ = client.initialize_result +async def test_server_info_custom_version(): + """Test that custom version is properly set in serverInfo.""" + # Test with custom version + server_with_version = FastMCP("CustomVersionServer", version="1.2.3") + client = Client(transport=FastMCPTransport(server_with_version)) + + async with client: + result = client.initialize_result + assert result.serverInfo.name == "CustomVersionServer" + assert result.serverInfo.version == "1.2.3" + + # Test without version (backward compatibility) + server_without_version = FastMCP("DefaultVersionServer") + client = Client(transport=FastMCPTransport(server_without_version)) + + async with client: + result = client.initialize_result + assert result.serverInfo.name == "DefaultVersionServer" + # Should fall back to MCP library version + assert result.serverInfo.version is not None + assert result.serverInfo.version != "1.2.3" # Should be different from custom version + + async def test_client_nested_context_manager(fastmcp_server): """Test that the client connects and disconnects once in nested context manager."""