googleapis/mcp-toolbox · error
invalid kind %s
Error message
invalid kind %s
What it means
Error "invalid kind %s" thrown in googleapis/mcp-toolbox.
Source
Thrown at internal/server/config.go:347
return nil, nil, nil, nil, nil, nil, fmt.Errorf("document %d: error unmarshaling %s %q: %w", docIndex, kind, name, err)
}
return nil, nil, nil, nil, nil, nil, fmt.Errorf("error unmarshaling %s: %w", kind, err)
}
if groupConfigs == nil {
groupConfigs = make(GroupConfigs)
}
if _, exists := groupConfigs[name]; exists {
if name == "" {
return nil, nil, nil, nil, nil, nil, fmt.Errorf("more than one default (nameless) group declared; only one is allowed")
}
return nil, nil, nil, nil, nil, nil, fmt.Errorf("group %q declared more than once", name)
}
groupConfigs[name] = c
default:
if len(file.Docs) > 1 {
return nil, nil, nil, nil, nil, nil, fmt.Errorf("%s invalid kind %q", formatDocLocation(docIndex, keyToken(doc.Body, "kind"), doc.Body), kind)
}
return nil, nil, nil, nil, nil, nil, fmt.Errorf("invalid kind %s", kind)
}
}
// Fold legacy toolsets into groups. An explicit `kind: group` of the same name
// takes precedence over a toolset (matching the prior server-side behavior); warn
// when a toolset is shadowed this way.
if len(toolsetGroups) > 0 {
if groupConfigs == nil {
groupConfigs = make(GroupConfigs)
}
for name, gc := range toolsetGroups {
if _, shadowed := groupConfigs[name]; shadowed {
if l, err := util.LoggerFromContext(ctx); err == nil {
l.WarnContext(ctx, fmt.Sprintf("group %q shadows a toolset of the same name; using the group definition", name))
}
continue
}
groupConfigs[name] = gc
}View on GitHub (pinned to 8cc6e09de2)
When it happens
Trigger: Thrown at internal/server/config.go:347 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of googleapis/mcp-toolbox@8cc6e09de2 (2026-09-05).
Data as JSON: /api/errors/3dbdc1ee1558d8ed.
Report an issue: GitHub.