{"record":{"id":"e7802a3e8075b0f5","repo":"langchain-ai/deepagents","slug":"couldn-t-find-an-mcp-server-named-server-name","errorCode":null,"errorMessage":"Couldn't find an MCP server named '{server_name}', expected one of {sorted(self._connections)}","messagePattern":"Couldn't find an MCP server named '(.+?)', expected one of (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"libs/code/deepagents_code/mcp_tools.py","lineNumber":788,"sourceCode":"        Returns:\n            A cached session entry containing the live session and close stack.\n\n        Raises:\n            RuntimeError: If the manager has already been cleaned up.\n            ValueError: If `server_name` is not configured in the manager.\n        \"\"\"\n        if self._closed:\n            msg = \"Cannot create an MCP session after cleanup\"\n            raise RuntimeError(msg)\n\n        try:\n            connection = self._connections[server_name]\n        except KeyError as exc:\n            msg = (\n                f\"Couldn't find an MCP server named '{server_name}', \"\n                f\"expected one of {sorted(self._connections)}\"\n            )\n            raise ValueError(msg) from exc\n\n        exit_stack = AsyncExitStack()\n        try:\n            session = await exit_stack.enter_async_context(\n                _create_mcp_session(connection, server_name=server_name)\n            )\n            await session.initialize()\n        except BaseException:\n            # Close the partially entered stack in *this* task before\n            # propagating. `create_session` enters an AnyIO task group whose\n            # cancel scope must be exited by the task that entered it; deferring\n            # teardown to async-generator finalization on another task raises\n            # \"Attempted to exit cancel scope in a different task than it was\n            # entered in\". Catch `BaseException` (not just `Exception`) so a\n            # `CancelledError` — e.g. from a crashed Streamable HTTP transport\n            # task group cancelling `session.initialize()` — also triggers the\n            # in-task teardown below instead of abandoning the session. The bare\n            # `raise` re-raises the original exception unchanged, so cancellation","sourceCodeStart":770,"sourceCodeEnd":806,"githubUrl":"https://github.com/langchain-ai/deepagents/blob/a1af029e6e73cb17c36bff823d227747b28e91e1/libs/code/deepagents_code/mcp_tools.py#L770-L806","documentation":"get_session/_create_entry raises ValueError when the requested server_name has no entry in the manager's configured connections, listing the valid names.","triggerScenarios":"Calling get_session('typo-name') or a name present in an MCP config file but never configured on the manager (e.g. filtered out by validation).","commonSituations":"Typo or case mismatch in the server name; server dropped by _drop_invalid_mcp_config_servers before configuration; config file edited after the manager was configured.","solutions":["Use a name from the 'expected one of' list in the message","Reconfigure the manager to include the missing server","Verify the server survived config validation (it may have been dropped as invalid)"],"exampleFix":"// before\nawait manager.get_session('Filesystem')  # not configured\n// after\nawait manager.get_session('filesystem')  # matches configured key","handlingStrategy":"validation","validationCode":"configured = set(manager._connections)  # or track the config keys you passed\nif server_name not in configured:\n    raise KeyError(f'{server_name!r} not configured; known: {sorted(configured)}')","typeGuard":null,"tryCatchPattern":"try:\n    session = await manager.get_session(server_name)\nexcept ValueError as e:\n    log.error('unknown MCP server %r; check config keys', server_name)\n    raise","preventionTips":["Keep server name constants/shared config keys instead of string literals","Re-check the MCP config after edits; invalid servers may be dropped at validation time","Log the configured server list at startup for quick comparison"],"tags":["mcp","configuration","keyerror"],"backgroundTag":"unknown-server-name","analyzedSha":"a1af029e6e73cb17c36bff823d227747b28e91e1","analyzedAt":"2026-08-29T11:43:24.718Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}