Summary
The _call_tool method is a 50+ line conditional chain with repetitive validation patterns that obscure business logic.
Affected Files
idrac-mcp/working_mcp_server.py:783-838
proxmox-mcp/working_proxmox_server.py:554-895
pfsense-mcp/src/http_pfsense_server.py:475-628
Problem
if name == "power_on":
server_id, error = self._validate_and_get_server_id(arguments)
if error:
return error
result = self.idrac_clients[server_id].power_on()
elif name == "power_off":
server_id, error = self._validate_and_get_server_id(arguments)
if error:
return error
result = self.idrac_clients[server_id].power_off()
# ... 15 more identical patterns
Recommended Fix
Use a dispatch table with declarative tool definitions:
self.tool_handlers = {
"list_servers": ToolDefinition(
handler=lambda args: {"servers": list(self.servers.keys())},
requires_server_validation=False
),
"power_on": ToolDefinition(
handler=lambda args, sid: self.idrac_clients[sid].power_on(),
requires_server_validation=True
),
}
def _call_tool(self, name: str, arguments: Dict) -> Dict:
tool_def = self.tool_handlers.get(name)
if tool_def.requires_server_validation:
server_id, error = self._validate_and_get_server_id(arguments)
if error:
return error
return tool_def.handler(arguments, server_id)
return tool_def.handler(arguments)
🤖 Generated with Claude Code
Summary
The
_call_toolmethod is a 50+ line conditional chain with repetitive validation patterns that obscure business logic.Affected Files
idrac-mcp/working_mcp_server.py:783-838proxmox-mcp/working_proxmox_server.py:554-895pfsense-mcp/src/http_pfsense_server.py:475-628Problem
Recommended Fix
Use a dispatch table with declarative tool definitions:
🤖 Generated with Claude Code