{"record":{"id":"18917ba91a268f62","repo":"github/github-mcp-server","slug":"update-project-item-requires-either-item-id-or-it","errorCode":null,"errorMessage":"update_project_item requires either item_id, or item_owner + item_repo + issue_number to resolve the item by issue","messagePattern":"update_project_item requires either item_id, or item_owner \\+ item_repo \\+ issue_number to resolve the item by issue","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/github/projects_resolver.go","lineNumber":576,"sourceCode":"\t\tprojectItems = nextPageQuery.Repository.Issue.ProjectItems\n\t}\n\n\treturn \"\", 0, ghErrors.NewStructuredResolutionError(\n\t\t\"item_not_in_project\",\n\t\tfmt.Sprintf(\"%s/%s#%d\", issueOwner, issueRepo, issueNumber),\n\t\t\"the issue exists but is not an item on the named project; add it first via add_project_item\",\n\t\tnil,\n\t)\n}\n\n// resolveItemIDFromIssueArgs reads (item_owner, item_repo, issue_number) from args\n// and resolves them to a project item ID. Returns a single friendly error if any input is missing.\nfunc resolveItemIDFromIssueArgs(ctx context.Context, gqlClient *githubv4.Client, owner, ownerType string, projectNumber int, args map[string]any) (int64, error) {\n\tissueOwner, ownerErr := RequiredParam[string](args, \"item_owner\")\n\tissueRepo, repoErr := RequiredParam[string](args, \"item_repo\")\n\tissueNumber, numErr := RequiredInt(args, \"issue_number\")\n\tif ownerErr != nil || repoErr != nil || numErr != nil {\n\t\treturn 0, fmt.Errorf(\"update_project_item requires either item_id, or item_owner + item_repo + issue_number to resolve the item by issue\")\n\t}\n\treturn resolveProjectItemIDByIssueNumber(ctx, gqlClient, owner, ownerType, projectNumber, issueOwner, issueRepo, issueNumber)\n}\n\nfunc parseInt64(s string) (int64, error) {\n\treturn strconv.ParseInt(s, 10, 64)\n}\n\n// resolveFieldNamesToIDs resolves field names to numeric IDs in one GraphQL\n// hop. Fails fast with a structured error on any unresolved or ambiguous name.\nfunc resolveFieldNamesToIDs(ctx context.Context, gqlClient *githubv4.Client, owner, ownerType string, projectNumber int, names []string, idParameter string) ([]int64, error) {\n\tif len(names) == 0 {\n\t\treturn nil, nil\n\t}\n\n\tall, err := listAllProjectFields(ctx, gqlClient, owner, ownerType, projectNumber)\n\tif err != nil {\n\t\treturn nil, err","sourceCodeStart":558,"sourceCodeEnd":594,"githubUrl":"https://github.com/github/github-mcp-server/blob/0ea1f775a7c73eff1bd2e25904d01136756bbfe2/pkg/github/projects_resolver.go#L558-L594","documentation":"Error \"update_project_item requires either item_id, or item_owner + item_repo + issue_number to resolve the item by issue\" thrown in github/github-mcp-server.","triggerScenarios":"Thrown at pkg/github/projects_resolver.go:576 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0ea1f775a7c73eff1bd2e25904d01136756bbfe2","analyzedAt":"2026-08-15T18:10:19.804Z","schemaVersion":2},"datasetVersion":"2026-08-16T03:17:38.424Z"}