googleapis/mcp-toolbox · error

description is required for tool %q

Error message

description is required for tool %q

What it means

Config.Initialize for the Looker Conversational Analytics tool requires a non-empty Description field, since MCP tool manifests must advertise what the tool does. If Config.Name is set but Description is empty, Initialize refuses to build the tool and returns this error naming the tool.

Source

Thrown at internal/tools/looker/lookerconversationalanalytics/lookerconversationalanalytics.go:147

}

type Config struct {
	tools.ConfigBase `yaml:",inline"`
	Type             string                 `yaml:"type" validate:"required"`
	Source           string                 `yaml:"source" validate:"required"`
	Annotations      *tools.ToolAnnotations `yaml:"annotations,omitempty"`
}

// validate interface
var _ tools.ToolConfig = Config{}

func (cfg Config) ToolConfigType() string {
	return resourceType
}

func (cfg Config) Initialize(context.Context) (tools.Tool, error) {
	if cfg.Description == "" {
		return nil, fmt.Errorf("description is required for tool %q", cfg.Name)
	}

	userQueryParameter := parameters.NewStringParameter("user_query_with_context", "The user's question, potentially including conversation history and system instructions for context.")

	exploreRefsDescription := `An Array of at least one and up to 5 explore references like [{'model': 'MODEL_NAME', 'explore': 'EXPLORE_NAME'}]`
	exploreRefsParameter := parameters.NewArrayParameter(
		"explore_references",
		exploreRefsDescription,
		parameters.NewMapParameter(
			"explore_reference",
			"An explore reference like {'model': 'MODEL_NAME', 'explore': 'EXPLORE_NAME'}",
			"",
		),
	)

	params := parameters.Parameters{userQueryParameter, exploreRefsParameter}

	// finish tool setup

View on GitHub (pinned to 8cc6e09de2)

Solutions

  1. Add a non-empty description field to the tool's YAML config
  2. Verify the config key is spelled 'description' at the correct nesting level
  3. Check that your config loader isn't overriding/blanking the description
  4. Validate the tool config before server startup

Example fix

// before
tools:
  my_tool:
    kind: looker-conversational-analytics
    name: my_tool
// after
tools:
  my_tool:
    kind: looker-conversational-analytics
    name: my_tool
    description: "Answer questions about Looker data using conversational analytics"
Defensive patterns

Strategy: validation

Validate before calling

// config check before server start
if cfg.Description == "" {
	return fmt.Errorf("tool %q requires a description", cfg.Name)
}

Prevention

When it happens

Trigger: Declaring a looker-conversational-analytics tool in YAML with a name but omitting the description field, then starting the toolbox server.

Common situations: Hand-written tool configs missing the required description; templated config generation leaving description blank; copying a minimal config example that elides description.

Understand the failure class

Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.

Related errors


AI-assisted analysis of googleapis/mcp-toolbox@8cc6e09de2 (2026-09-05). Data as JSON: /api/errors/b96acb1a226f68ab. Report an issue: GitHub.