BerriAI/litellm · error · ValueError
description is required for tool {name}
Error message
description is required for tool {name} What it means
Raised while loading MCP tools from config.yaml when a tool entry has a name and handler but no description (or an empty one). Every registered tool needs a description for the MCP tool listing exposed to clients, so the offending entry is rejected instead of being registered silently. It sits next to the analogous 'handler is required' check on the same all([...]) guard.
Source
Thrown at litellm/proxy/_experimental/mcp_server/tool_registry.py:132
if not all([name, description, handler_name]):
continue
# Try to resolve the handler
# First check if it's a module path (e.g., "module.submodule.function")
if handler_name is None:
raise ValueError(f"handler is required for tool {name}")
handler = get_instance_fn(handler_name, config_file_path)
if handler is None:
verbose_logger.warning("Warning: Could not find handler %s for tool %s", handler_name, name)
continue
# Register the tool
if name is None:
raise ValueError(f"name is required for tool {name}")
if description is None:
raise ValueError(f"description is required for tool {name}")
self.register_tool(
name=name,
description=description,
input_schema=input_schema,
handler=handler,
)
verbose_logger.debug("all registered tools: %s", json.dumps(self.tools, indent=4, default=str))
global_mcp_tool_registry: Final = MCPToolRegistry()
View on GitHub (pinned to 77b7c6c40c)
Solutions
- Add a 'description' field to the tool entry in mcp_tools config.
Example fix
mcp_tools: [{name: 'my_tool', description: '...', ...}] Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at litellm/proxy/_experimental/mcp_server/tool_registry.py:132 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18).
Data as JSON: /api/errors/fc1c18fb7b9e34ae.
Report an issue: GitHub.