{"record":{"id":"0d73e1e93239dc69","repo":"googleapis/mcp-toolbox","slug":"unable-to-parse-prebuilt-tool-configuration-for","errorCode":null,"errorMessage":"unable to parse prebuilt tool configuration for '%s': %w","messagePattern":"unable to parse prebuilt tool configuration for '(.+?)': %w","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/internal/options.go","lineNumber":225,"sourceCode":"\t\t\t\t\t\t\tlogger.ErrorContext(ctx, errMsg.Error())\n\t\t\t\t\t\t\treturn isCustomConfigured, errMsg\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsourceName, toolsetName, _ := strings.Cut(configName, \"/\")\n\n\t\t\tbuf, err := prebuiltconfigs.Get(sourceName)\n\t\t\tif err != nil {\n\t\t\t\tlogger.ErrorContext(ctx, err.Error())\n\t\t\t\treturn isCustomConfigured, err\n\t\t\t}\n\n\t\t\t// Parse into Config struct\n\t\t\tparsed, err := parser.ParseConfig(ctx, buf)\n\t\t\tif err != nil {\n\t\t\t\terrMsg := fmt.Errorf(\"unable to parse prebuilt tool configuration for '%s': %w\", configName, err)\n\t\t\t\tlogger.ErrorContext(ctx, errMsg.Error())\n\t\t\t\treturn isCustomConfigured, errMsg\n\t\t\t}\n\n\t\t\tif toolsetName != \"\" {\n\t\t\t\t// Legacy toolsets are folded into groups at unmarshal, so the named\n\t\t\t\t// toolset resolves as a group.\n\t\t\t\ttargetGroup, exists := parsed.Groups[toolsetName]\n\t\t\t\tif !exists {\n\t\t\t\t\tvar available []string\n\t\t\t\t\tfor k := range parsed.Groups {\n\t\t\t\t\t\tif k == \"\" {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tavailable = append(available, k)\n\t\t\t\t\t}\n\t\t\t\t\tslices.Sort(available)\n\t\t\t\t\terrMsg := fmt.Errorf(\"toolset '%s' not found in prebuilt configuration '%s'. Available toolsets: %s\", toolsetName, sourceName, strings.Join(available, \", \"))","sourceCodeStart":207,"sourceCodeEnd":243,"githubUrl":"https://github.com/googleapis/mcp-toolbox/blob/8cc6e09de2ad7b8bffc77751799585a1401a48eb/cmd/internal/options.go#L207-L243","documentation":"When loading a prebuilt configuration, the toolbox fetches the embedded YAML and runs parser.ParseConfig. If parsing/unmarshaling into the Config struct fails, this error wraps the underlying parser error and startup aborts.","triggerScenarios":"parser.ParseConfig fails on the embedded prebuilt YAML for the requested configName — malformed embedded file, or a toolset/group reference inside it that cannot be resolved.","commonSituations":"Running a mismatched toolbox binary version against a prebuilt config name that resolves to incompatible content, or a typo in the toolset portion producing an unresolvable reference.","solutions":["Read the wrapped parser error after the colon for the exact YAML problem","Upgrade or reinstall the toolbox binary to match the prebuilt config expectations","Try a different, known-good prebuilt config (e.g. 'postgres/postgres-sql') to isolate the issue","If using a custom config file, verify it with the parser before launch"],"exampleFix":"// before\n--prebuilt postgres/nonexistent-toolset\n// after\n--prebuilt postgres/postgres-sql","handlingStrategy":"validation","validationCode":"// sanity check: use a known-good prebuilt config before exotic ones\n./toolbox --prebuilt postgres/postgres-sql --prebuilt your-experimental/one","typeGuard":null,"tryCatchPattern":"parsed, err := parser.ParseConfig(ctx, buf)\nif err != nil {\n    return fmt.Errorf(\"unable to parse prebuilt tool configuration for '%s': %w\", configName, err)\n}","preventionTips":["Keep the toolbox binary version aligned with documented prebuilt configs","Verify YAML configs parse before deploying (toolbox parses at startup)"],"tags":["configuration","yaml","prebuilt-configs","parsing"],"backgroundTag":"config-parse-failed","analyzedSha":"8cc6e09de2ad7b8bffc77751799585a1401a48eb","analyzedAt":"2026-09-05T01:10:36.887Z","contentChangedAt":"2026-09-05T01:10:36.887Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}