Spaces:
Running
Running
Merge pull request #842 from mkyutani/feature/add-version-parameter
Browse files- src/fastmcp/server/server.py +2 -0
- tests/client/test_client.py +25 -0
src/fastmcp/server/server.py
CHANGED
|
@@ -110,6 +110,7 @@ class FastMCP(Generic[LifespanResultT]):
|
|
| 110 |
def __init__(
|
| 111 |
self,
|
| 112 |
name: str | None = None,
|
|
|
|
| 113 |
instructions: str | None = None,
|
| 114 |
auth: OAuthProvider | None = None,
|
| 115 |
lifespan: (
|
|
@@ -175,6 +176,7 @@ class FastMCP(Generic[LifespanResultT]):
|
|
| 175 |
self._has_lifespan = True
|
| 176 |
self._mcp_server = MCPServer[LifespanResultT](
|
| 177 |
name=name or "FastMCP",
|
|
|
|
| 178 |
instructions=instructions,
|
| 179 |
lifespan=_lifespan_wrapper(self, lifespan),
|
| 180 |
)
|
|
|
|
| 110 |
def __init__(
|
| 111 |
self,
|
| 112 |
name: str | None = None,
|
| 113 |
+
version: str | None = None,
|
| 114 |
instructions: str | None = None,
|
| 115 |
auth: OAuthProvider | None = None,
|
| 116 |
lifespan: (
|
|
|
|
| 176 |
self._has_lifespan = True
|
| 177 |
self._mcp_server = MCPServer[LifespanResultT](
|
| 178 |
name=name or "FastMCP",
|
| 179 |
+
version=version,
|
| 180 |
instructions=instructions,
|
| 181 |
lifespan=_lifespan_wrapper(self, lifespan),
|
| 182 |
)
|
tests/client/test_client.py
CHANGED
|
@@ -321,6 +321,31 @@ async def test_initialize_result_disconnected(fastmcp_server):
|
|
| 321 |
_ = client.initialize_result
|
| 322 |
|
| 323 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 324 |
async def test_client_nested_context_manager(fastmcp_server):
|
| 325 |
"""Test that the client connects and disconnects once in nested context manager."""
|
| 326 |
|
|
|
|
| 321 |
_ = client.initialize_result
|
| 322 |
|
| 323 |
|
| 324 |
+
async def test_server_info_custom_version():
|
| 325 |
+
"""Test that custom version is properly set in serverInfo."""
|
| 326 |
+
# Test with custom version
|
| 327 |
+
server_with_version = FastMCP("CustomVersionServer", version="1.2.3")
|
| 328 |
+
client = Client(transport=FastMCPTransport(server_with_version))
|
| 329 |
+
|
| 330 |
+
async with client:
|
| 331 |
+
result = client.initialize_result
|
| 332 |
+
assert result.serverInfo.name == "CustomVersionServer"
|
| 333 |
+
assert result.serverInfo.version == "1.2.3"
|
| 334 |
+
|
| 335 |
+
# Test without version (backward compatibility)
|
| 336 |
+
server_without_version = FastMCP("DefaultVersionServer")
|
| 337 |
+
client = Client(transport=FastMCPTransport(server_without_version))
|
| 338 |
+
|
| 339 |
+
async with client:
|
| 340 |
+
result = client.initialize_result
|
| 341 |
+
assert result.serverInfo.name == "DefaultVersionServer"
|
| 342 |
+
# Should fall back to MCP library version
|
| 343 |
+
assert result.serverInfo.version is not None
|
| 344 |
+
assert (
|
| 345 |
+
result.serverInfo.version != "1.2.3"
|
| 346 |
+
) # Should be different from custom version
|
| 347 |
+
|
| 348 |
+
|
| 349 |
async def test_client_nested_context_manager(fastmcp_server):
|
| 350 |
"""Test that the client connects and disconnects once in nested context manager."""
|
| 351 |
|