CC-301j · Module 2
Multi-Tool Server Design
3 min read
A single MCP server can expose multiple tools. The design question is: how do you group tools? The answer follows the same principle as microservice design — group by domain, not by type. A "customer-tools" server that exposes search_customers, get_customer_details, and update_customer_status is cohesive. A "database-tools" server that exposes query_customers, query_orders, and query_inventory is not — it groups by technology rather than by domain.
Cohesive tool groups help Claude use tools effectively. When Claude discovers a "customer-tools" server with three related tools, it understands the domain and can chain tools naturally: search for a customer, get their details, update their status. When tools are scattered across unrelated servers, Claude must discover and coordinate across multiple servers, which increases latency and reduces reliability.
Do This
- Group tools by domain: customer-tools, order-tools, analytics-tools
- Design tools that chain naturally: search → detail → update
- Keep each server focused — 3 to 8 tools per server is the sweet spot
- Use consistent parameter naming across tools in the same server
Avoid This
- Group tools by technology: database-tools, api-tools, file-tools
- Create one mega-server with 30 unrelated tools
- Duplicate functionality across servers — one source of truth per operation
- Use different parameter names for the same concept (userId vs user_id vs id)