Skip to content

Commit 444960c

Browse files
committed
Make infer_server_types typed; fix warnings
1 parent c92c12f commit 444960c

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

src/mcp/client/config/mcp_servers_config.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from typing import Annotated, Any, Literal
77

88
# third party imports
9-
from pydantic import BaseModel, Field, model_validator
9+
from pydantic import BaseModel, Field, field_validator
1010

1111

1212
class MCPServerConfig(BaseModel):
@@ -54,19 +54,20 @@ class MCPServersConfig(BaseModel):
5454

5555
servers: dict[str, ServerConfigUnion] = Field(alias="mcpServers")
5656

57-
@model_validator(mode="before")
57+
@field_validator("servers", mode="before")
5858
@classmethod
59-
def infer_server_types(cls, data: Any) -> Any:
59+
def infer_server_types(cls, servers_data: dict[str, MCPServerConfig]) -> dict[str, MCPServerConfig]:
6060
"""Automatically infer server types when 'type' field is omitted."""
61-
if isinstance(data, dict) and "mcpServers" in data:
62-
for _server_name, server_config in data["mcpServers"].items(): # type: ignore
63-
if isinstance(server_config, dict) and "type" not in server_config:
64-
# Infer type based on distinguishing fields
65-
if "command" in server_config:
66-
server_config["type"] = "stdio"
67-
elif "url" in server_config:
68-
server_config["type"] = "streamable_http"
69-
return data
61+
62+
for server_config in servers_data.values():
63+
if isinstance(server_config, dict) and "type" not in server_config:
64+
# Infer type based on distinguishing fields
65+
if "command" in server_config:
66+
server_config["type"] = "stdio"
67+
elif "url" in server_config:
68+
server_config["type"] = "streamable_http"
69+
70+
return servers_data
7071

7172
@classmethod
7273
def from_file(cls, config_path: Path) -> "MCPServersConfig":

0 commit comments

Comments
 (0)