googleapis/mcp-toolbox · error

parameter 'type' field must be a string, got %T

Error message

parameter 'type' field must be a string, got %T

What it means

parseParamFromDelayedUnmarshaler type-asserts the 'type' key of a raw parameter map to string. The error fires during config parsing when the parameter's 'type' key in tools.yaml is a non-string YAML value (e.g. a number, list, or nested map), reporting the offending Go type via %T.

Source

Thrown at internal/util/parameters/parameters.go:398

}

// parseParamFromDelayedUnmarshaler is a helper function that is required to parse
// parameters because there are multiple different types
func parseParamFromDelayedUnmarshaler(ctx context.Context, u *util.DelayedUnmarshaler) (Parameter, error) {
	var p map[string]any
	err := u.Unmarshal(&p)
	if err != nil {
		return nil, fmt.Errorf("error parsing parameters: %w", err)
	}

	t, ok := p["type"]
	if !ok {
		return nil, fmt.Errorf("parameter is missing 'type' field")
	}

	typeStr, ok := t.(string)
	if !ok {
		return nil, fmt.Errorf("parameter 'type' field must be a string, got %T", t)
	}

	param, err := ParseParameter(ctx, p, typeStr)
	if err != nil {
		return nil, err
	}

	if err := validateParameter(param); err != nil {
		return nil, err
	}

	return param, nil
}

// ParseParameter parses a raw map into a Parameter object based on its "type" field.
func ParseParameter(ctx context.Context, p map[string]any, paramType string) (Parameter, error) {
	dec, err := util.NewStrictDecoder(p)
	if err != nil {

View on GitHub (pinned to 8cc6e09de2)

Solutions

  1. Quote the 'type' value so YAML parses it as a string (e.g. type: "string")
  2. Replace a list or mapping value with a valid scalar type name
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at internal/util/parameters/parameters.go:398 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/cd18562f448459b8. Report an issue: GitHub.