Home / Function/ setupHandlers() — mcp Function Reference

setupHandlers() — mcp Function Reference

Architecture documentation for the setupHandlers() function in server.ts from the mcp codebase.

Entity Profile

Dependency Diagram

graph TD
  4646463d_3032_7be4_79ae_2b8f22f309dd["setupHandlers()"]
  fb3524f1_6068_fb0f_15f3_83e2b15a3f3f["constructor()"]
  fb3524f1_6068_fb0f_15f3_83e2b15a3f3f -->|calls| 4646463d_3032_7be4_79ae_2b8f22f309dd
  c652ed9f_2901_0635_2a5b_fc305e9cd6c1["has()"]
  4646463d_3032_7be4_79ae_2b8f22f309dd -->|calls| c652ed9f_2901_0635_2a5b_fc305e9cd6c1
  b965d3cf_dacd_81fc_77e7_dbe9bdef8bbc["set()"]
  4646463d_3032_7be4_79ae_2b8f22f309dd -->|calls| b965d3cf_dacd_81fc_77e7_dbe9bdef8bbc
  55bde18a_7860_173e_f211_5874970475e3["get()"]
  4646463d_3032_7be4_79ae_2b8f22f309dd -->|calls| 55bde18a_7860_173e_f211_5874970475e3
  8e9da006_7e8b_e75f_f70b_e874951820d2["handler()"]
  4646463d_3032_7be4_79ae_2b8f22f309dd -->|calls| 8e9da006_7e8b_e75f_f70b_e874951820d2
  style 4646463d_3032_7be4_79ae_2b8f22f309dd fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

src/server.ts lines 150–201

  private setupHandlers() {
    const experiment = process.env.SUPERMODEL_EXPERIMENT;

    // Experiment variants: swap tool definitions to test parallel calling behavior
    let allTools: typeof symbolContextTool[];
    switch (experiment) {
      case 'minimal-schema':
        allTools = [{ tool: symbolContextMinimalTool, handler: symbolContextTool.handler }];
        break;
      case 'search-symbol':
        allTools = [searchSymbolEndpoint];
        break;
      case 'split-tools':
        allTools = [findDefinitionEndpoint, traceCallsEndpoint];
        break;
      case 'annotate':
        allTools = [annotateEndpoint];
        break;
      case 'graphrag':
        allTools = [exploreFunctionEndpoint];
        break;
      default:
        allTools = [symbolContextTool];
        break;
    }

    // Create a map for quick handler lookup
    const toolMap = new Map<string, typeof allTools[0]>();
    for (const t of allTools) {
      if (toolMap.has(t.tool.name)) {
        throw new Error(`Duplicate tool name: ${t.tool.name}`);
      }
      toolMap.set(t.tool.name, t);
    }

    this.server.server.setRequestHandler(ListToolsRequestSchema, async () => {
      return {
        tools: allTools.map(t => t.tool),
      };
    });

    this.server.server.setRequestHandler(CallToolRequestSchema, async (request) => {
      const { name, arguments: args } = request.params;

      const tool = toolMap.get(name);
      if (tool) {
        return tool.handler(this.client, args, this.defaultWorkdir);
      }

      throw new Error(`Unknown tool: ${name}`);
    });
  }

Domain

Subdomains

Called By

Frequently Asked Questions

What does setupHandlers() do?
setupHandlers() is a function in the mcp codebase.
What does setupHandlers() call?
setupHandlers() calls 4 function(s): get, handler, has, set.
What calls setupHandlers()?
setupHandlers() is called by 1 function(s): constructor.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free