aaif-goose/goose · warning

Missing required parameter: cmd

Error message

Missing required parameter: cmd

What it means

Thrown by the deeplink generator page when the query string matches neither the built-in branch (cmd=goose plus an arg 'mcp') nor the remote branch (a url param), and also has no cmd parameter. cmd is the entry point of the stdio fallback branch (command plus args joined into one command string), so without it the page cannot build any server config and throws. The catch block renders the message inline via setError.

Source

Thrown at documentation/src/pages/deeplink-generator.tsx:134

          });
          urlParams.getAll('header').forEach(header => {
            const separatorIndex = header.indexOf('=');
            if (separatorIndex > 0) {
              server.headers.push({
                name: header.slice(0, separatorIndex),
                description: header.slice(separatorIndex + 1),
                required: true,
              });
            }
          });
          const link = generateDeeplink(server);
          handleGeneratedLink(link, true);
          return;
        }

        const cmd = urlParams.get('cmd');
        if (!cmd) {
          throw new Error('Missing required parameter: cmd');
        }

        const args = urlParams.getAll('arg') || [];
        const command = [cmd, ...args].join(' ');
        const id = urlParams.get('id');
        const name = urlParams.get('name');
        const description = urlParams.get('description');

        if (!id || !name || !description) {
          throw new Error('Missing required parameters. Need: id, name, and description');
        }

        const server: ServerConfig = {
          is_builtin: false,
          type: 'stdio',
          id,
          name,
          description,

View on GitHub (pinned to 3810898a74)

Solutions

  1. Add the command parameter, e.g. ?cmd=npx&arg=-y&arg=some-mcp-server plus id/name/description
  2. If you meant a built-in extension, use ?cmd=goose&arg=mcp&arg=<extensionId> instead
  3. If you meant a remote server, replace cmd with url= plus id/name/description
Defensive patterns

Strategy: validation

Validate before calling

const cmd = new URLSearchParams(window.location.search).get('cmd');
const hasCmd = Boolean(cmd);

Try / catch

} catch (error) {
  setError(error instanceof Error ? error.message : 'Invalid query string');
}

Prevention

When it happens

Trigger: Loading ?id=x&name=y&description=z (metadata but no cmd); loading ?arg=npx&arg=some-server without cmd; a typo'd or empty param like ?cmdd=npx or ?cmd=.

Common situations: Copying only the tail of a generator URL and losing the cmd param; assuming the page infers the command from arg values; using a parameter name the page does not read (e.g. command= instead of cmd=).

Related errors


AI-assisted analysis of aaif-goose/goose@3810898a74 (2026-08-16). Data as JSON: /api/errors/c40f523871ae9a82. Report an issue: GitHub.