{"record":{"id":"91d1fbbd1bf37aba","repo":"angular/angular-cli","slug":"unknown-experimental-tool-toolname","errorCode":null,"errorMessage":"Unknown experimental tool: ${toolName}","messagePattern":"Unknown experimental tool: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"packages/angular/cli/src/commands/mcp/mcp-server.ts","lineNumber":217,"sourceCode":"\n  const enabledExperimentalTools = new Set(options.experimentalTools);\n  for (const [toolGroupName, toolGroup] of Object.entries(EXPERIMENTAL_TOOL_GROUPS)) {\n    if (enabledExperimentalTools.delete(toolGroupName)) {\n      for (const tool of toolGroup) {\n        enabledExperimentalTools.add(tool.name);\n      }\n    }\n  }\n\n  if (enabledExperimentalTools.size > 0) {\n    const experimentalToolsMap = new Map(experimentalDeclarations.map((tool) => [tool.name, tool]));\n\n    for (const toolName of enabledExperimentalTools) {\n      const tool = experimentalToolsMap.get(toolName);\n      if (tool) {\n        toolDeclarations.push(tool);\n      } else if (!stableDeclarations.some((t) => t.name === toolName)) {\n        options.logger.warn(`Unknown experimental tool: ${toolName}`);\n      }\n    }\n  }\n\n  return toolDeclarations;\n}\n","sourceCodeStart":199,"sourceCodeEnd":224,"githubUrl":"https://github.com/angular/angular-cli/blob/bb72145f9ab45aee29f523236b3a25cd0813a841/packages/angular/cli/src/commands/mcp/mcp-server.ts#L199-L224","documentation":"assembleToolDeclarations iterates the configured list of enabled experimental MCP tools. If a configured tool name matches neither a known experimental tool nor a stable tool declaration, the CLI warns that the tool is unknown and simply skips it.","triggerScenarios":"Setting an experimental tool name in the MCP tools configuration (e.g. in angular.json / .mcp.json options) that does not exist in experimentalToolsMap — usually a typo or a tool removed/renamed in a newer CLI.","commonSituations":"Configuration copied from blog posts or older CLI versions referencing renamed tools; typos in tool names; enabling experimental tools before upgrading to a CLI version that ships them.","solutions":["Check the tool name spelling against the tools listed by the CLI version in use.","Remove the unknown tool from the experimental tools configuration.","Upgrade @angular/cli to a version that provides the referenced experimental tool."],"exampleFix":"// before (angular.json cli mcp config)\n\"experimentalTools\": [\"find_filees\"]\n// after\n\"experimentalTools\": [\"find_files\"]","handlingStrategy":"validation","validationCode":"const known = new Set([...stableToolNames, ...experimentalToolNames]);\nconst bad = configuredExperimentalTools.filter((t) => !known.has(t));\nif (bad.length) throw new Error(`Unknown experimental tools: ${bad.join(', ')}`);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Copy tool names from the CLI's documented list for your installed version.","Re-validate MCP tool config after upgrading @angular/cli.","Keep experimental tool config minimal to reduce typo risk."],"tags":["mcp","configuration","tools","angular-cli"],"backgroundTag":"unknown-tool-configured","analyzedSha":"bb72145f9ab45aee29f523236b3a25cd0813a841","analyzedAt":"2026-08-30T02:47:34.745Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}