googleapis/mcp-toolbox · error · NewHeaderMismatchedError

_meta error: header mismatch: MCP-Protocol-Version header va

Error message

_meta error: header mismatch: MCP-Protocol-Version header value '%s' does not match body value '%s'

What it means

Error "_meta error: header mismatch: MCP-Protocol-Version header value '%s' does not match body value '%s'" thrown in googleapis/mcp-toolbox.

Source

Thrown at internal/server/mcp/v20260728/method.go:75

		return jsonrpc.NewError(id, jsonrpc.METHOD_NOT_FOUND, err.Error(), nil), err
	}
}

// validateMetadata checks the metadata of every requests
func validateMetadata(id jsonrpc.RequestId, params RequestParams, stdio bool) (any, error) {
	// Check _meta field for protocol version
	if params.Meta != nil {
		// check for protocol version metadata
		v := params.Meta.ProtocolVersion
		if v == "" {
			metaErr := fmt.Errorf("_meta error: missing io.modelcontextprotocol/protocolVersion")
			return jsonrpc.NewError(id, jsonrpc.INVALID_PARAMS, metaErr.Error(), nil), metaErr
		}
		// do not have to verify header for stdio; already verified during stdio
		// message processing
		if !stdio {
			if PROTOCOL_VERSION != v {
				metaErr := fmt.Errorf("_meta error: header mismatch: MCP-Protocol-Version header value '%s' does not match body value '%s'", PROTOCOL_VERSION, v)
				return jsonrpc.NewHeaderMismatchedError(id, metaErr), metaErr
			}
		}

		// check for clientInfo
		clientInfo := params.Meta.ClientInfo
		if clientInfo.Version == "" || clientInfo.Name == "" {
			metaErr := fmt.Errorf("_meta error: missing field from io.modelcontextprotocol/clientInfo")
			return jsonrpc.NewError(id, jsonrpc.INVALID_PARAMS, metaErr.Error(), nil), metaErr
		}
		// check for clientCapabilities
		clientCapabilities := params.Meta.MetaClientCapabilities
		if clientCapabilities == nil {
			metaErr := fmt.Errorf("_meta error: missing field from io.modelcontextprotocol/clientCapabilities")
			return jsonrpc.NewError(id, jsonrpc.INVALID_PARAMS, metaErr.Error(), nil), metaErr
		}
		// skip checking clientCapabilities since Toolbox do not utilize any of those
	} else {

View on GitHub (pinned to 8cc6e09de2)

When it happens

Trigger: Thrown at internal/server/mcp/v20260728/method.go:75 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/b9adc22aab6c7c05. Report an issue: GitHub.