Fix keep_alive passthrough in StdioMCPServer.to_transport() (#2791)

This commit is contained in:
Jeremiah Lowin 2026-01-07 16:37:19 -05:00 committed by GitHub
commit a117316ba1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 35 additions and 0 deletions

View file

@ -143,6 +143,9 @@ class StdioMCPServer(BaseModel):
# Execution context
cwd: str | None = None # Working directory for command execution
timeout: int | None = None # Maximum response time in milliseconds
keep_alive: bool | None = (
None # Whether to keep the subprocess alive between connections
)
# Metadata
description: str | None = None # Human-readable server description
@ -161,6 +164,7 @@ class StdioMCPServer(BaseModel):
args=self.args,
env=self.env,
cwd=self.cwd,
keep_alive=self.keep_alive,
)

View file

@ -70,6 +70,37 @@ def test_parse_single_stdio_config():
assert transport.args == ["hello"]
def test_stdio_config_keep_alive_passthrough():
"""Test that keep_alive parameter is passed through from StdioMCPServer to StdioTransport."""
# Test with keep_alive=False
server = StdioMCPServer(command="test", keep_alive=False)
assert server.keep_alive is False
transport = server.to_transport()
assert isinstance(transport, StdioTransport)
assert transport.keep_alive is False
# Test with keep_alive=True
server = StdioMCPServer(command="test", keep_alive=True)
assert server.keep_alive is True
transport = server.to_transport()
assert isinstance(transport, StdioTransport)
assert transport.keep_alive is True
# Test with keep_alive=None (should default to True in StdioTransport)
server = StdioMCPServer(command="test", keep_alive=None)
assert server.keep_alive is None
transport = server.to_transport()
assert isinstance(transport, StdioTransport)
assert transport.keep_alive is True # StdioTransport defaults to True
# Test with keep_alive not specified (should default to None, then True in StdioTransport)
server = StdioMCPServer(command="test")
assert server.keep_alive is None
transport = server.to_transport()
assert isinstance(transport, StdioTransport)
assert transport.keep_alive is True # StdioTransport defaults to True
def test_parse_extra_keys():
config = {
"mcpServers": {