{"record":{"id":"86628916932dfef6","repo":"multica-ai/multica","slug":"server-name-must-not-be-empty","errorCode":null,"errorMessage":"server name must not be empty","messagePattern":"server name must not be empty","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/cmd/multica/cmd_workspace.go","lineNumber":633,"sourceCode":"\tif err != nil {\n\t\treturn err\n\t}\n\n\tctx, cancel := cli.APIContext(context.Background())\n\tdefer cancel()\n\n\tvar servers []workspaceMcpServer\n\tif err := client.GetJSON(ctx, \"/api/workspaces/\"+wsID+\"/mcp-servers\", &servers); err != nil {\n\t\treturn fmt.Errorf(\"list workspace mcp servers: %w\", err)\n\t}\n\n\treturn printWorkspaceMcpServers(cmd, servers)\n}\n\nfunc runWorkspaceMcpAdd(cmd *cobra.Command, args []string) error {\n\tserverName := strings.TrimSpace(args[0])\n\tif serverName == \"\" {\n\t\treturn fmt.Errorf(\"server name must not be empty\")\n\t}\n\twsID, err := resolveWorkspaceArg(cmd, args[1:])\n\tif err != nil {\n\t\treturn err\n\t}\n\tif wsID == \"\" {\n\t\treturn fmt.Errorf(\"workspace ID is required: pass an id/slug/prefix as argument or set MULTICA_WORKSPACE_ID\")\n\t}\n\n\tentry, ok, err := resolveMcpJSONObject(cmd, \"server-config\", false)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif !ok {\n\t\treturn fmt.Errorf(\"one of --server-config, --server-config-stdin, or --server-config-file is required\")\n\t}\n\n\tclient, err := newAPIClient(cmd)","sourceCodeStart":615,"sourceCodeEnd":651,"githubUrl":"https://github.com/multica-ai/multica/blob/2c0912b6ec764b373d44eeea1e80f0d9f11ab417/server/cmd/multica/cmd_workspace.go#L615-L651","documentation":"Local validation in `multica workspace mcp add`: the first positional argument (the MCP server name) is empty after trimming whitespace. Cobra guarantees an argument is present (Args constraint), but it can be an empty or whitespace-only string, which is not a usable server name.","triggerScenarios":"Running `multica workspace mcp add \"\" <ws>` or `multica workspace mcp add \"   \" <ws>` — an explicitly empty server-name argument.","commonSituations":"Shell scripts passing an unset variable (`multica workspace mcp add \"$NAME\" ...` with NAME empty); copy-paste commands with a missing name placeholder; argument order confusion where flags land in the first position.","solutions":["Provide a real server name: `multica workspace mcp add github acme --server-config '{...}'`","Check argument order: name first, then optional workspace identifier","In scripts, guard: `[ -n \"$NAME\" ] || exit 1` before invoking"],"exampleFix":"# before\nmultica workspace mcp add \"$SERVER_NAME\" acme --server-config \"$CFG\"\n\n# after\n: \"${SERVER_NAME:?server name required}\"\nmultica workspace mcp add \"$SERVER_NAME\" acme --server-config \"$CFG\"","handlingStrategy":"validation","validationCode":"serverName := strings.TrimSpace(args[0])\nif serverName == \"\" {\n    return errors.New(\"server name must not be empty\")\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use shell parameter defaults that fail fast: `: \"${SERVER_NAME:?}\"","Trim and check user-supplied names before invoking the CLI","Remember argument order: name first, workspace second"],"tags":["cli","validation","mcp","arguments"],"backgroundTag":null,"analyzedSha":"2c0912b6ec764b373d44eeea1e80f0d9f11ab417","analyzedAt":"2026-08-15T13:25:18.241Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}