github/github-mcp-server · error
issue field %q is missing fullDatabaseId
Error message
issue field %q is missing fullDatabaseId
What it means
resolveIssueRequestFieldValues (pkg/github/issues.go:363) extracts each field's FullDatabaseID from the GraphQL metadata and parses it with parseFullDatabaseID. If the ID string is empty or non-numeric, the parse returns 0 and this error fires. It signals an internal contract violation: the repository issue-fields metadata did not include the numeric database ID the REST write API requires.
Source
Thrown at pkg/github/issues.go:363
var fullDatabaseIDStr, dataType string
switch string(node.TypeName) {
case "IssueFieldText":
fullDatabaseIDStr = string(node.IssueFieldText.FullDatabaseID)
dataType = string(node.IssueFieldText.DataType)
case "IssueFieldNumber":
fullDatabaseIDStr = string(node.IssueFieldNumber.FullDatabaseID)
dataType = string(node.IssueFieldNumber.DataType)
case "IssueFieldDate":
fullDatabaseIDStr = string(node.IssueFieldDate.FullDatabaseID)
dataType = string(node.IssueFieldDate.DataType)
case "IssueFieldSingleSelect":
fullDatabaseIDStr = string(node.IssueFieldSingleSelect.FullDatabaseID)
dataType = string(node.IssueFieldSingleSelect.DataType)
}
fieldID := parseFullDatabaseID(fullDatabaseIDStr)
if fieldID == 0 {
return nil, nil, fmt.Errorf("issue field %q is missing fullDatabaseId", fieldInput.FieldName)
}
if fieldInput.Delete {
fieldIDsToDelete = append(fieldIDsToDelete, fieldID)
continue
}
resolvedValue := fieldInput.Value
if fieldInput.FieldOptionName != "" {
if !strings.EqualFold(dataType, "single_select") {
return nil, nil, fmt.Errorf("issue field %q is %q, so field_option_name cannot be used", fieldInput.FieldName, dataType)
}
optionFound := false
for _, option := range node.IssueFieldSingleSelect.Options {
if strings.EqualFold(strings.TrimSpace(string(option.Name)), strings.TrimSpace(fieldInput.FieldOptionName)) {
// REST API expects the option name, not the ID
resolvedValue = string(option.Name)View on GitHub (pinned to 0ea1f775a7)
Solutions
- Update github-mcp-server to the latest release — schema-drift fixes land quickly when previews change
- Retry later — transient metadata inconsistencies during rollout usually resolve
- Report upstream with the repository (no secret material) so maintainers can adjust the metadata query
- As a workaround, set the field through the GitHub web UI or REST API directly
Defensive patterns
Strategy: try-catch
Type guard
func hasFullDatabaseID(raw string) bool {
if strings.TrimSpace(raw) == "" {
return false
}
id, err := strconv.ParseInt(raw, 10, 64)
return err == nil && id != 0
} Try / catch
resolved, toDelete, err := resolveIssueRequestFieldValues(ctx, gqlClient, owner, repo, fields)
if err != nil {
if strings.Contains(err.Error(), "missing fullDatabaseId") {
// upstream metadata contract broken: not fixable client-side
log.Warn("schema drift in issue-fields metadata; update github-mcp-server")
return err
}
return err
} Prevention
- Pin a known-good github-mcp-server version and test upgrades against repos using issue fields
- Watch release notes for issue-fields preview changes before bumping
- Have a non-issue_fields fallback workflow (web UI / direct REST) for critical automations
When it happens
Trigger: A preview/schema change where GitHub returns issue-field nodes without FullDatabaseID; parseFullDatabaseID receiving an ID like "gid://git/IssueField/..." or an empty string; server version out of date relative to the current preview shape.
Common situations: GitHub preview APIs evolving under the feature flag; stale github-mcp-server build after an upstream schema change; extremely rare on stable rollouts.
Related errors
- failed to query issue fields metadata: %w
- issue field %q was not found in %s/%s
- issue field %q is %q, so field_option_name cannot be used
- issue field option %q was not found for field %q
- failed to fetch existing issue field values: %w
AI-assisted analysis of github/github-mcp-server@0ea1f775a7 (2026-08-15).
Data as JSON: /api/errors/2fd199ca2e99c4c9.
Report an issue: GitHub.