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

1"""MCP server configuration dataclass.""" 

2from dataclasses import dataclass, field 

3 

4 

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) 

18 

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 )