{"record":{"id":"8722f9bfc338194c","repo":"rohitg00/ai-engineering-from-scratch","slug":"at-least-one-modern-and-legacy-version-must-be-con","errorCode":null,"errorMessage":"at least one modern and legacy version must be configured","messagePattern":"at least one modern and legacy version must be configured","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"phases/13-tools-and-protocols/08-building-an-mcp-client/code/main.py","lineNumber":301,"sourceCode":"class MergedTool:\n    canonical_name: str\n    peer_name: str\n    local_name: str\n    description: str\n\n\nclass MultiServerClient:\n    def __init__(\n        self,\n        *,\n        supported_modern: tuple[str, ...] = (PROTOCOL_VERSION,),\n        supported_legacy: tuple[str, ...] = (LEGACY_VERSION,),\n        probe_version: str | None = None,\n        discovery_timeout_ms: int = 1_000,\n        legacy_probe_timeout_ms: int = 1_000,\n    ) -> None:\n        if not supported_modern or not supported_legacy:\n            raise ValueError(\"at least one modern and legacy version must be configured\")\n        if discovery_timeout_ms <= 0 or legacy_probe_timeout_ms <= 0:\n            raise ValueError(\"probe timeouts must be positive\")\n        self.supported_modern = supported_modern\n        self.supported_legacy = supported_legacy\n        self.probe_version = probe_version or supported_modern[0]\n        self.discovery_timeout_ms = discovery_timeout_ms\n        self.legacy_probe_timeout_ms = legacy_probe_timeout_ms\n        self.client_capabilities = CLIENT_CAPABILITIES.copy()\n        self.peers: dict[str, Peer] = {}\n        self.registry: dict[str, MergedTool] = {}\n        self._next_request_id = 1\n\n    def _new_id(self) -> int:\n        request_id = self._next_request_id\n        self._next_request_id += 1\n        return request_id\n\n    def add_server(","sourceCodeStart":283,"sourceCodeEnd":319,"githubUrl":"https://github.com/rohitg00/ai-engineering-from-scratch/blob/39ea8a1c6d0b61f071226eff7ede4d4105fed820/phases/13-tools-and-protocols/08-building-an-mcp-client/code/main.py#L283-L319","documentation":"Error \"at least one modern and legacy version must be configured\" thrown in rohitg00/ai-engineering-from-scratch.","triggerScenarios":"Thrown at phases/13-tools-and-protocols/08-building-an-mcp-client/code/main.py:301 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"39ea8a1c6d0b61f071226eff7ede4d4105fed820","analyzedAt":"2026-08-26T03:13:46.626Z","schemaVersion":2},"datasetVersion":"2026-08-26T07:17:17.940Z"}