diff --git a/src/fastmcp/utilities/mcp_config.py b/src/fastmcp/utilities/mcp_config.py index 19905f701..a9f5abee6 100644 --- a/src/fastmcp/utilities/mcp_config.py +++ b/src/fastmcp/utilities/mcp_config.py @@ -32,11 +32,12 @@ def infer_transport_type_from_url( return "streamable-http" -class LocalMCPServer(BaseModel): +class StdioMCPServer(BaseModel): command: str args: list[str] = Field(default_factory=list) env: dict[str, Any] = Field(default_factory=dict) cwd: str | None = None + transport: Literal["stdio"] = "stdio" def to_transport(self) -> StdioTransport: from fastmcp.client.transports import StdioTransport @@ -51,8 +52,8 @@ class LocalMCPServer(BaseModel): class RemoteMCPServer(BaseModel): url: str - transport: Literal["streamable-http", "sse", "http"] | None = None headers: dict[str, str] = Field(default_factory=dict) + transport: Literal["streamable-http", "sse", "http"] | None = None def to_transport(self) -> StreamableHttpTransport | SSETransport: from fastmcp.client.transports import SSETransport, StreamableHttpTransport @@ -69,7 +70,7 @@ class RemoteMCPServer(BaseModel): class MCPConfig(BaseModel): - mcpServers: dict[str, LocalMCPServer | RemoteMCPServer] + mcpServers: dict[str, StdioMCPServer | RemoteMCPServer] @classmethod def from_dict(cls, config: dict[str, Any]) -> MCPConfig: diff --git a/tests/utilities/test_mcp_config.py b/tests/utilities/test_mcp_config.py index 627a149f1..b7737da1d 100644 --- a/tests/utilities/test_mcp_config.py +++ b/tests/utilities/test_mcp_config.py @@ -9,7 +9,7 @@ from fastmcp.client.transports import ( StdioTransport, StreamableHttpTransport, ) -from fastmcp.utilities.mcp_config import LocalMCPServer, MCPConfig, RemoteMCPServer +from fastmcp.utilities.mcp_config import MCPConfig, RemoteMCPServer, StdioMCPServer def test_parse_single_stdio_config(): @@ -89,7 +89,7 @@ def test_parse_multiple_servers(): assert isinstance(mcp_config.mcpServers["test_server"], RemoteMCPServer) assert isinstance(mcp_config.mcpServers["test_server"].to_transport(), SSETransport) - assert isinstance(mcp_config.mcpServers["test_server_2"], LocalMCPServer) + assert isinstance(mcp_config.mcpServers["test_server_2"], StdioMCPServer) assert isinstance( mcp_config.mcpServers["test_server_2"].to_transport(), StdioTransport )