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)