Coverage for merco/mcp/config.py: 95%
19 statements
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 14:04 +0800
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 14:04 +0800
1"""MCP server configuration dataclass."""
2from dataclasses import dataclass, field
5@dataclass
6class MCPServerConfig:
7 name: str
8 command: str | None = None
9 args: list[str] = field(default_factory=list)
10 url: str | None = None
11 headers: dict = field(default_factory=dict)
12 env: dict = field(default_factory=dict)
13 enabled: bool = True
14 timeout: int = 30
15 connect_timeout: int = 10
16 sandbox: str = "ask"
17 sandbox_rules: list = field(default_factory=list)
19 @classmethod
20 def from_dict(cls, name: str, data: dict) -> "MCPServerConfig":
21 if not isinstance(data, dict):
22 data = {}
23 return cls(
24 name=name,
25 command=data.get("command"),
26 args=data.get("args", []),
27 url=data.get("url"),
28 headers=data.get("headers", {}),
29 env=data.get("env", {}),
30 enabled=data.get("enabled", True),
31 timeout=data.get("timeout", 30),
32 connect_timeout=data.get("connect_timeout", 10),
33 sandbox=data.get("sandbox", "ask"),
34 sandbox_rules=data.get("sandbox_rules", []),
35 )