{"record":{"id":"7f405e42cdabc0e1","repo":"BerriAI/litellm","slug":"unable-to-assign-a-unique-short-mcp-tool-prefix-fo","errorCode":null,"errorMessage":"Unable to assign a unique short MCP tool prefix for server {server.server_id} after {self._SHORT_PREFIX_MAX_REHASH_ATTEMPTS} attempts; the 3-character prefix space is too crowded.","messagePattern":"Unable to assign a unique short MCP tool prefix for server (.+?) after (.+?) attempts; the 3-character prefix space is too crowded\\.","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"litellm/proxy/_experimental/mcp_server/mcp_server_manager.py","lineNumber":4337,"sourceCode":"            candidate = compute_short_server_prefix(server.server_id, attempt=attempt)\n            if candidate not in used:\n                server.short_prefix = candidate\n                if attempt > 0:\n                    verbose_logger.info(\n                        \"MCP short-prefix collision resolved for server %s: \"\n                        \"natural hash collided with %s, using rehashed prefix \"\n                        \"%s (attempt=%d).\",\n                        server.server_id,\n                        used.get(\n                            compute_short_server_prefix(server.server_id, attempt=0),\n                            \"<unknown>\",\n                        ),\n                        candidate,\n                        attempt,\n                    )\n                return\n\n        raise RuntimeError(\n            f\"Unable to assign a unique short MCP tool prefix for server \"\n            f\"{server.server_id} after {self._SHORT_PREFIX_MAX_REHASH_ATTEMPTS} \"\n            \"attempts; the 3-character prefix space is too crowded.\"\n        )\n\n    def _create_prefixed_tools(self, tools: list[MCPTool], server: MCPServer, add_prefix: bool = True) -> list[MCPTool]:\n        \"\"\"\n        Create prefixed tools and update tool mapping.\n\n        Args:\n            tools: List of original tools from server\n            server: Server instance\n\n        Returns:\n            List of tools with prefixed names\n        \"\"\"\n        prefixed_tools: Final = []\n        prefix: Final = get_server_prefix(server)","sourceCodeStart":4319,"sourceCodeEnd":4355,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py#L4319-L4355","documentation":"Error \"Unable to assign a unique short MCP tool prefix for server {server.server_id} after {self._SHORT_PREFIX_MAX_REHASH_ATTEMPTS} attempts; the 3-character prefix space is too crowded.\" thrown in BerriAI/litellm.","triggerScenarios":"Thrown at litellm/proxy/_experimental/mcp_server/mcp_server_manager.py:4337 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Reduce the number of registered MCP servers, or configure explicit tool prefixes to free the 3-character prefix space."],"exampleFix":"Set a custom tool prefix for some servers.","handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}