angular/angular-cli · warning
Unknown experimental tool: ${toolName}
Error message
Unknown experimental tool: ${toolName} What it means
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.
Source
Thrown at packages/angular/cli/src/commands/mcp/mcp-server.ts:217
const enabledExperimentalTools = new Set(options.experimentalTools);
for (const [toolGroupName, toolGroup] of Object.entries(EXPERIMENTAL_TOOL_GROUPS)) {
if (enabledExperimentalTools.delete(toolGroupName)) {
for (const tool of toolGroup) {
enabledExperimentalTools.add(tool.name);
}
}
}
if (enabledExperimentalTools.size > 0) {
const experimentalToolsMap = new Map(experimentalDeclarations.map((tool) => [tool.name, tool]));
for (const toolName of enabledExperimentalTools) {
const tool = experimentalToolsMap.get(toolName);
if (tool) {
toolDeclarations.push(tool);
} else if (!stableDeclarations.some((t) => t.name === toolName)) {
options.logger.warn(`Unknown experimental tool: ${toolName}`);
}
}
}
return toolDeclarations;
}
View on GitHub (pinned to bb72145f9a)
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.
Example fix
// before (angular.json cli mcp config) "experimentalTools": ["find_filees"] // after "experimentalTools": ["find_files"]
Defensive patterns
Strategy: validation
Validate before calling
const known = new Set([...stableToolNames, ...experimentalToolNames]);
const bad = configuredExperimentalTools.filter((t) => !known.has(t));
if (bad.length) throw new Error(`Unknown experimental tools: ${bad.join(', ')}`); Prevention
- 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.
When it happens
Trigger: 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.
Common situations: 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.
Related errors
- Workspace path is outside the allowed MCP roots: ${workspace
- Watch mode execution (serve target or watch option) is not y
- Workspace path is outside the allowed MCP roots: ${workspace
- The current directory resolves to a workspace outside the al
- No project name provided and no default project found in wor
AI-assisted analysis of angular/angular-cli@bb72145f9a (2026-08-30).
Data as JSON: /api/errors/91d1fbbd1bf37aba.
Report an issue: GitHub.