Skip to content

[BUG] MCP server: pull_request_read.get_review_comments omits thread node id, making resolve_review_thread unusable #56791

@bellaura

Description

@bellaura

Preflight Checklist

  • I have searched existing issues and this hasn't been reported yet
  • This is a single bug report (please file separate reports for different bugs)
  • I am using the latest version of Claude Code

What's Wrong?

n Claude Code Sessions (CCR), the Anthropic-hosted GitHub MCP server at https://api.anthropic.com/v2/ccr-sessions//github/mcp exposes a pair of tools that don't compose:

mcp__github__pull_request_read with method get_review_comments returns review threads with no id field.
mcp__github__resolve_review_thread (and pull_request_review_write method resolve_thread) require a GraphQL thread node ID (PRRT_kwDO…) and explicitly say in their description to "Get thread IDs from pull_request_read with method get_review_comments."
Result: the /review skill can post replies after addressing comments but cannot programmatically resolve the threads. Every session in this environment leaves stale unresolved threads requiring manual UI clicks.

The actual response shape from get_review_comments for each thread:

{
"is_resolved": true,
"is_outdated": true,
"is_collapsed": true,
"comments": [ { "body": "...", "path": "...", "author": "...",
"created_at": "...", "updated_at": "...", "html_url": "..." } ],
"total_count": 1
}
No id, no databaseId, no node identifier at the thread or comment level. So the threadId required by the resolve tools cannot be obtained or derived in-session.

What Should Happen?

get_review_comments should include the GraphQL id (and ideally databaseId) on each review_threads[] entry, matching what resolve_review_thread and pull_request_review_write.resolve_thread document as their input source. Expected shape:

{
"id": "PRRT_kwDOQKV1Cs6-U6j9",
"databaseId": 12345678,
"is_resolved": false,
"is_outdated": false,
"is_collapsed": false,
"comments": [ ... ],
"total_count": 1
}
With that one field present, the existing resolve tools become usable, the /review skill's resolve-after-fix step works end-to-end, and there is no consumer-side change needed (the resolve tools already accept this exact node-ID format).

Steps to reproduce
In any Claude Code Session scoped to a repo with a PR that has review threads, call:
mcp__github__pull_request_read({
method: "get_review_comments",
owner: "videofactsai",
repo: "portfolio-paths",
pullNumber: 205,
perPage: 3
})
Inspect any element of the returned review_threads[] array.
Observe that the keys are exactly is_resolved | is_outdated | is_collapsed | comments | total_count — no thread id.
Try to call mcp__github__resolve_review_thread — there is no value available to pass as threadId.
Verified across perPage 3 / 5 / 100, page 1 / 2 / 3, and after an MCP server reconnect within the same session. Any PR with review threads reproduces.

Workaround
None in this environment. CCR sessions have no gh CLI, no GITHUB_TOKEN, and no direct GitHub API access — all confirmed in env. Other Claude environments fall back to gh api graphql to fetch the missing node IDs; that path is unavailable here. Manual resolution in the GitHub UI is the only option until fixed.

Environment
Claude Code: 2.1.131
Model: Claude Opus 4.7 (claude-opus-4-7[1m]); reproduces independent of model
Surface: Claude Code Session (CCR) on Anthropic infrastructure
MCP server URL pattern: https://api.anthropic.com/v2/ccr-sessions//github/mcp
MCP server ID: 735f0525-e70b-533b-8355-c868c8e04799
Repo scope: videofactsai/portfolio-paths (any repo reproduces)
Platform: Linux 6.18.5

Error Messages/Logs

Steps to Reproduce

In any Claude Code Session scoped to a repo with a PR that has review threads, call:
mcp__github__pull_request_read({
method: "get_review_comments",
owner: "videofactsai",
repo: "portfolio-paths",
pullNumber: 205,
perPage: 3
})
Inspect any element of the returned review_threads[] array.
Observe that the keys are exactly is_resolved | is_outdated | is_collapsed | comments | total_count — no thread id.
Try to call mcp__github__resolve_review_thread — there is no value available to pass as threadId.
Verified across perPage 3 / 5 / 100, page 1 / 2 / 3, and after an MCP server reconnect within the same session. Any PR with review threads reproduces.

Workaround
None in this environment. CCR sessions have no gh CLI, no GITHUB_TOKEN, and no direct GitHub API access — all confirmed in env. Other Claude environments fall back to gh api graphql to fetch the missing node IDs; that path is unavailable here. Manual resolution in the GitHub UI is the only option until fixed.

Claude Model

Opus

Is this a regression?

No, this never worked

Last Working Version

No response

Claude Code Version

Claude Code 2.1.131, model Claude Opus 4.7 (claude-opus-4-7[1m])

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:mcpbugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions