ruvnet/ruflo · error

Tool already registered

Error message

Tool already registered

What it means

Log warning in the MCP tool registry's register: a tool with the same name is already registered and options.override was not set, so the duplicate registration is refused and register returns false — a sentinel guard, not a thrown error.

Source

Thrown at v3/@claude-flow/mcp/src/tool-registry.ts:67

  private readonly tools: Map<string, ToolMetadata> = new Map();
  private readonly categoryIndex: Map<string, Set<string>> = new Map();
  private readonly tagIndex: Map<string, Set<string>> = new Map();
  private defaultContext?: ToolContext;
  private authorizer?: ToolAuthorizer;

  private totalRegistrations = 0;
  private totalLookups = 0;
  private totalExecutions = 0;

  constructor(private readonly logger: ILogger) {
    super();
  }

  register(tool: MCPTool, options: ToolRegistrationOptions = {}): boolean {
    const startTime = performance.now();

    if (this.tools.has(tool.name) && !options.override) {
      this.logger.warn('Tool already registered', { name: tool.name });
      return false;
    }

    if (options.validate !== false) {
      const validation = this.validateTool(tool);
      if (!validation.valid) {
        this.logger.error('Tool validation failed', {
          name: tool.name,
          errors: validation.errors,
        });
        return false;
      }
    }

    const metadata: ToolMetadata = {
      tool,
      registeredAt: new Date(),
      callCount: 0,

View on GitHub (pinned to fa13ee4ad6)

Solutions

  1. Unregister the existing tool first or choose a different tool name; duplicate registration is rejected.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at v3/@claude-flow/mcp/src/tool-registry.ts:67 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18). Data as JSON: /api/errors/f390e44678665c53. Report an issue: GitHub.