Description
Fixes#343
This is a very large PR as a result of needing to:
- Split an existing tool into multiple finer grained tools
- Introducing GraphQL support
Previously, PR review submission and commenting was provided by:
add_pull_request_review_comment
create_pull_request_review
However, Gemini experienced issues with the schema for comments oncreate_pull_request_review
. The original desire was to remove comments from that schema and require users to useadd_pull_request_review_comment
but as it turns out, this tool isn't that useful because it was backed by the REST API which only allows the addition of a single comment and then submits the review.
As a result, this PR has introduced a number of new tools backed by the GraphQL API:
create_pending_pull_request_review
add_pull_request_review_comment_to_pending_review
submit_pending_pull_request_review
A tool was added to create and submit a review without comments:
create_and_submit_pull_request_review
A tool was added to clean up pending reviews which were previously not a valid state:
delete_pending_pull_request_review
Finally, in order to help the LLM determine line numbers for pull requests we added:
It's important to note that these tools are focused on working with a review that the caller owns. It does not allow adding arbitrary comments to review threads.
Example:

Created:https://github.com/github/github-mcp-server/pull/410/files#r2095483869
This worked with both GPT-4.1 and Gemini.
E2E Tests
github.com
➜ github-mcp-server git:(343-remove-comments-from-create_pull_request_review) ✗ GOMAXPROCS=1 GITHUB_MCP_SERVER_E2E_HOST=https://github.com GITHUB_MCP_SERVER_E2E_TOKEN=$(gh auth token --hostname github.com) go test -v -count=1 --tags e2e ./e2e=== RUN TestGetMe=== PAUSE TestGetMe=== RUN TestToolsets=== PAUSE TestToolsets=== RUN TestTags=== PAUSE TestTags=== RUN TestFileDeletion=== PAUSE TestFileDeletion=== RUN TestDirectoryDeletion=== PAUSE TestDirectoryDeletion=== RUN TestRequestCopilotReview=== PAUSE TestRequestCopilotReview=== RUN TestPullRequestAtomicCreateAndSubmit=== PAUSE TestPullRequestAtomicCreateAndSubmit=== RUN TestPullRequestReviewCommentSubmit=== PAUSE TestPullRequestReviewCommentSubmit=== RUN TestPullRequestReviewDeletion=== PAUSE TestPullRequestReviewDeletion=== CONT TestGetMe e2e_test.go:76: Building Docker image for e2e tests... e2e_test.go:159: Starting Stdio MCP client...--- PASS: TestGetMe (2.44s)=== CONT TestPullRequestReviewDeletion e2e_test.go:159: Starting Stdio MCP client... e2e_test.go:1360: Getting current user... e2e_test.go:1389: Creating repository williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652889839... e2e_test.go:1413: Creating branch in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652889839... e2e_test.go:1430: Creating commit with new file in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652889839... e2e_test.go:1447: Creating pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652889839... e2e_test.go:1462: Creating pending review for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652889839... e2e_test.go:1480: Getting reviews for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652889839... e2e_test.go:1507: Deleting review for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652889839... e2e_test.go:1513: Getting reviews for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652889839... e2e_test.go:1398: Deleting repository williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652889839...--- PASS: TestPullRequestReviewDeletion (6.96s)=== CONT TestPullRequestReviewCommentSubmit e2e_test.go:159: Starting Stdio MCP client... e2e_test.go:1115: Getting current user... e2e_test.go:1144: Creating repository williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652896783... e2e_test.go:1168: Creating branch in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652896783... e2e_test.go:1185: Creating commit with new file in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652896783... e2e_test.go:1214: Creating pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652896783... e2e_test.go:1229: Creating pending review for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652896783... e2e_test.go:1250: Adding file review comment to pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652896783... e2e_test.go:1270: Adding single line review comment to pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652896783... e2e_test.go:1292: Adding multi line review comment to pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652896783... e2e_test.go:1308: Submitting review for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652896783... e2e_test.go:1322: Getting reviews for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652896783... e2e_test.go:1153: Deleting repository williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652896783...--- PASS: TestPullRequestReviewCommentSubmit (11.26s)=== CONT TestPullRequestAtomicCreateAndSubmit e2e_test.go:159: Starting Stdio MCP client... e2e_test.go:955: Getting current user... e2e_test.go:984: Creating repository williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652908027... e2e_test.go:1008: Creating branch in williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652908027... e2e_test.go:1025: Creating commit with new file in williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652908027... e2e_test.go:1054: Creating pull request in williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652908027... e2e_test.go:1071: Creating and submitting review for pull request in williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652908027... e2e_test.go:1085: Getting reviews for pull request in williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652908027... e2e_test.go:993: Deleting repository williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652908027...--- PASS: TestPullRequestAtomicCreateAndSubmit (5.49s)=== CONT TestRequestCopilotReview e2e_test.go:159: Starting Stdio MCP client... e2e_test.go:810: Getting current user... e2e_test.go:839: Creating repository williammartin/github-mcp-server-e2e-TestRequestCopilotReview-1747652913523... e2e_test.go:863: Creating branch in williammartin/github-mcp-server-e2e-TestRequestCopilotReview-1747652913523... e2e_test.go:880: Creating commit with new file in williammartin/github-mcp-server-e2e-TestRequestCopilotReview-1747652913523... e2e_test.go:908: Creating pull request in williammartin/github-mcp-server-e2e-TestRequestCopilotReview-1747652913523... e2e_test.go:922: Requesting Copilot review for pull request in williammartin/github-mcp-server-e2e-TestRequestCopilotReview-1747652913523... e2e_test.go:934: Getting reviews for pull request in williammartin/github-mcp-server-e2e-TestRequestCopilotReview-1747652913523... e2e_test.go:848: Deleting repository williammartin/github-mcp-server-e2e-TestRequestCopilotReview-1747652913523...--- PASS: TestRequestCopilotReview (4.53s)=== CONT TestDirectoryDeletion e2e_test.go:159: Starting Stdio MCP client... e2e_test.go:611: Getting current user... e2e_test.go:639: Creating repository williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652918067... e2e_test.go:663: Creating branch in williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652918067... e2e_test.go:680: Creating commit with new file in williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652918067... e2e_test.go:698: Getting file contents in williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652918067... e2e_test.go:726: Deleting directory in williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652918067... e2e_test.go:740: Listing commits in williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652918067... e2e_test.go:774: Getting commit williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652918067:19469e4668a4c95924f09208dcd5dcd2531cbff1... e2e_test.go:648: Deleting repository williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652918067...--- PASS: TestDirectoryDeletion (5.28s)=== CONT TestFileDeletion e2e_test.go:159: Starting Stdio MCP client... e2e_test.go:419: Getting current user... e2e_test.go:447: Creating repository williammartin/github-mcp-server-e2e-TestFileDeletion-1747652923359... e2e_test.go:471: Creating branch in williammartin/github-mcp-server-e2e-TestFileDeletion-1747652923359... e2e_test.go:488: Creating commit with new file in williammartin/github-mcp-server-e2e-TestFileDeletion-1747652923359... e2e_test.go:503: Getting file contents in williammartin/github-mcp-server-e2e-TestFileDeletion-1747652923359... e2e_test.go:531: Deleting file in williammartin/github-mcp-server-e2e-TestFileDeletion-1747652923359... e2e_test.go:545: Listing commits in williammartin/github-mcp-server-e2e-TestFileDeletion-1747652923359... e2e_test.go:579: Getting commit williammartin/github-mcp-server-e2e-TestFileDeletion-1747652923359:c19b22660f4bd4206bc295b772b113df8f353df6... e2e_test.go:456: Deleting repository williammartin/github-mcp-server-e2e-TestFileDeletion-1747652923359...--- PASS: TestFileDeletion (5.22s)=== CONT TestTags e2e_test.go:159: Starting Stdio MCP client... e2e_test.go:281: Getting current user... e2e_test.go:310: Creating repository williammartin/github-mcp-server-e2e-TestTags-1747652928525... e2e_test.go:327: Creating tag williammartin/github-mcp-server-e2e-TestTags-1747652928525:v0.0.1... e2e_test.go:357: Listing tags for williammartin/github-mcp-server-e2e-TestTags-1747652928525... e2e_test.go:390: Getting tag williammartin/github-mcp-server-e2e-TestTags-1747652928525:v0.0.1... e2e_test.go:319: Deleting repository williammartin/github-mcp-server-e2e-TestTags-1747652928525...--- PASS: TestTags (4.03s)=== CONT TestToolsets e2e_test.go:159: Starting Stdio MCP client...--- PASS: TestToolsets (0.18s)PASSok github.com/github/github-mcp-server/e2e 45.657s
GHES
➜ github-mcp-server git:(343-remove-comments-from-create_pull_request_review) GOMAXPROCS=1 GITHUB_MCP_SERVER_E2E_HOST=https://ghe.io GITHUB_MCP_SERVER_E2E_TOKEN=$(gh auth token --hostname ghe.io) go test -v -count=1 --tags e2e ./e2e=== RUN TestGetMe=== PAUSE TestGetMe=== RUN TestToolsets=== PAUSE TestToolsets=== RUN TestTags=== PAUSE TestTags=== RUN TestFileDeletion=== PAUSE TestFileDeletion=== RUN TestDirectoryDeletion=== PAUSE TestDirectoryDeletion=== RUN TestRequestCopilotReview e2e_test.go:797: Skipping test because the host does not support copilot reviews--- SKIP: TestRequestCopilotReview (0.00s)=== RUN TestPullRequestAtomicCreateAndSubmit=== PAUSE TestPullRequestAtomicCreateAndSubmit=== RUN TestPullRequestReviewCommentSubmit=== PAUSE TestPullRequestReviewCommentSubmit=== RUN TestPullRequestReviewDeletion=== PAUSE TestPullRequestReviewDeletion=== CONT TestGetMe e2e_test.go:76: Building Docker image for e2e tests... e2e_test.go:159: Starting Stdio MCP client...--- PASS: TestGetMe (1.43s)=== CONT TestPullRequestReviewDeletion e2e_test.go:159: Starting Stdio MCP client... e2e_test.go:1360: Getting current user... e2e_test.go:1389: Creating repository williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652364427... e2e_test.go:1413: Creating branch in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652364427... e2e_test.go:1430: Creating commit with new file in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652364427... e2e_test.go:1447: Creating pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652364427... e2e_test.go:1462: Creating pending review for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652364427... e2e_test.go:1480: Getting reviews for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652364427... e2e_test.go:1507: Deleting review for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652364427... e2e_test.go:1513: Getting reviews for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652364427... e2e_test.go:1398: Deleting repository williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652364427...--- PASS: TestPullRequestReviewDeletion (15.82s)=== CONT TestPullRequestReviewCommentSubmit e2e_test.go:159: Starting Stdio MCP client... e2e_test.go:1115: Getting current user... e2e_test.go:1144: Creating repository williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652380360... e2e_test.go:1168: Creating branch in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652380360... e2e_test.go:1185: Creating commit with new file in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652380360... e2e_test.go:1214: Creating pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652380360... e2e_test.go:1229: Creating pending review for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652380360... e2e_test.go:1250: Adding file review comment to pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652380360... e2e_test.go:1270: Adding single line review comment to pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652380360... e2e_test.go:1292: Adding multi line review comment to pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652380360... e2e_test.go:1308: Submitting review for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652380360... e2e_test.go:1322: Getting reviews for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652380360... e2e_test.go:1153: Deleting repository williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652380360...--- PASS: TestPullRequestReviewCommentSubmit (20.76s)=== CONT TestPullRequestAtomicCreateAndSubmit e2e_test.go:159: Starting Stdio MCP client... e2e_test.go:955: Getting current user... e2e_test.go:984: Creating repository williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652401180... e2e_test.go:1008: Creating branch in williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652401180... e2e_test.go:1025: Creating commit with new file in williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652401180... e2e_test.go:1054: Creating pull request in williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652401180... e2e_test.go:1071: Creating and submitting review for pull request in williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652401180... e2e_test.go:1085: Getting reviews for pull request in williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652401180... e2e_test.go:993: Deleting repository williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652401180...--- PASS: TestPullRequestAtomicCreateAndSubmit (15.77s)=== CONT TestDirectoryDeletion e2e_test.go:159: Starting Stdio MCP client... e2e_test.go:611: Getting current user... e2e_test.go:639: Creating repository williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652416798... e2e_test.go:663: Creating branch in williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652416798... e2e_test.go:680: Creating commit with new file in williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652416798... e2e_test.go:698: Getting file contents in williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652416798... e2e_test.go:726: Deleting directory in williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652416798... e2e_test.go:740: Listing commits in williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652416798... e2e_test.go:774: Getting commit williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652416798:acc838ff4168023b112c524208c18b025e4d5bf6... e2e_test.go:648: Deleting repository williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652416798...--- PASS: TestDirectoryDeletion (16.60s)=== CONT TestFileDeletion e2e_test.go:159: Starting Stdio MCP client... e2e_test.go:419: Getting current user... e2e_test.go:447: Creating repository williammartin/github-mcp-server-e2e-TestFileDeletion-1747652433355... e2e_test.go:471: Creating branch in williammartin/github-mcp-server-e2e-TestFileDeletion-1747652433355... e2e_test.go:488: Creating commit with new file in williammartin/github-mcp-server-e2e-TestFileDeletion-1747652433355... e2e_test.go:503: Getting file contents in williammartin/github-mcp-server-e2e-TestFileDeletion-1747652433355... e2e_test.go:531: Deleting file in williammartin/github-mcp-server-e2e-TestFileDeletion-1747652433355... e2e_test.go:545: Listing commits in williammartin/github-mcp-server-e2e-TestFileDeletion-1747652433355... e2e_test.go:579: Getting commit williammartin/github-mcp-server-e2e-TestFileDeletion-1747652433355:0f170b760e7e4e73de707f300cd68f6e260af44b... e2e_test.go:456: Deleting repository williammartin/github-mcp-server-e2e-TestFileDeletion-1747652433355...--- PASS: TestFileDeletion (17.15s)=== CONT TestTags e2e_test.go:159: Starting Stdio MCP client... e2e_test.go:281: Getting current user... e2e_test.go:310: Creating repository williammartin/github-mcp-server-e2e-TestTags-1747652450592... e2e_test.go:327: Creating tag williammartin/github-mcp-server-e2e-TestTags-1747652450592:v0.0.1... e2e_test.go:357: Listing tags for williammartin/github-mcp-server-e2e-TestTags-1747652450592... e2e_test.go:390: Getting tag williammartin/github-mcp-server-e2e-TestTags-1747652450592:v0.0.1... e2e_test.go:319: Deleting repository williammartin/github-mcp-server-e2e-TestTags-1747652450592...--- PASS: TestTags (10.59s)=== CONT TestToolsets e2e_test.go:159: Starting Stdio MCP client...--- PASS: TestToolsets (0.18s)PASSok github.com/github/github-mcp-server/e2e 98.542s
GHEC
➜ github-mcp-server git:(343-remove-comments-from-create_pull_request_review) GOMAXPROCS=1 GITHUB_MCP_SERVER_E2E_HOST=https://staffship-01.ghe.com GITHUB_MCP_SERVER_E2E_TOKEN=$(gh auth token --hostname staffship-01.ghe.com) go test -v -count=1 --tags e2e ./e2e=== RUN TestGetMe=== PAUSE TestGetMe=== RUN TestToolsets=== PAUSE TestToolsets=== RUN TestTags=== PAUSE TestTags=== RUN TestFileDeletion=== PAUSE TestFileDeletion=== RUN TestDirectoryDeletion=== PAUSE TestDirectoryDeletion=== RUN TestRequestCopilotReview e2e_test.go:797: Skipping test because the host does not support copilot reviews--- SKIP: TestRequestCopilotReview (0.00s)=== RUN TestPullRequestAtomicCreateAndSubmit=== PAUSE TestPullRequestAtomicCreateAndSubmit=== RUN TestPullRequestReviewCommentSubmit=== PAUSE TestPullRequestReviewCommentSubmit=== RUN TestPullRequestReviewDeletion=== PAUSE TestPullRequestReviewDeletion=== CONT TestGetMe e2e_test.go:76: Building Docker image for e2e tests... e2e_test.go:159: Starting Stdio MCP client...--- PASS: TestGetMe (3.66s)=== CONT TestPullRequestReviewDeletion e2e_test.go:159: Starting Stdio MCP client... e2e_test.go:1360: Getting current user... e2e_test.go:1389: Creating repository williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652508440... e2e_test.go:1413: Creating branch in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652508440... e2e_test.go:1430: Creating commit with new file in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652508440... e2e_test.go:1447: Creating pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652508440... e2e_test.go:1462: Creating pending review for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652508440... e2e_test.go:1480: Getting reviews for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652508440... e2e_test.go:1507: Deleting review for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652508440... e2e_test.go:1513: Getting reviews for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652508440... e2e_test.go:1398: Deleting repository williammartin/github-mcp-server-e2e-TestPullRequestReviewDeletion-1747652508440...--- PASS: TestPullRequestReviewDeletion (10.60s)=== CONT TestPullRequestReviewCommentSubmit e2e_test.go:159: Starting Stdio MCP client... e2e_test.go:1115: Getting current user... e2e_test.go:1144: Creating repository williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652519303... e2e_test.go:1168: Creating branch in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652519303... e2e_test.go:1185: Creating commit with new file in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652519303... e2e_test.go:1214: Creating pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652519303... e2e_test.go:1229: Creating pending review for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652519303... e2e_test.go:1250: Adding file review comment to pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652519303... e2e_test.go:1270: Adding single line review comment to pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652519303... e2e_test.go:1292: Adding multi line review comment to pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652519303... e2e_test.go:1308: Submitting review for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652519303... e2e_test.go:1322: Getting reviews for pull request in williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652519303... e2e_test.go:1153: Deleting repository williammartin/github-mcp-server-e2e-TestPullRequestReviewCommentSubmit-1747652519303...--- PASS: TestPullRequestReviewCommentSubmit (18.60s)=== CONT TestPullRequestAtomicCreateAndSubmit e2e_test.go:159: Starting Stdio MCP client... e2e_test.go:955: Getting current user... e2e_test.go:984: Creating repository williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652537651... e2e_test.go:1008: Creating branch in williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652537651... e2e_test.go:1025: Creating commit with new file in williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652537651... e2e_test.go:1054: Creating pull request in williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652537651... e2e_test.go:1071: Creating and submitting review for pull request in williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652537651... e2e_test.go:1085: Getting reviews for pull request in williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652537651... e2e_test.go:993: Deleting repository williammartin/github-mcp-server-e2e-TestPullRequestAtomicCreateAndSubmit-1747652537651...--- PASS: TestPullRequestAtomicCreateAndSubmit (9.81s)=== CONT TestDirectoryDeletion e2e_test.go:159: Starting Stdio MCP client... e2e_test.go:611: Getting current user... e2e_test.go:639: Creating repository williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652547435... e2e_test.go:663: Creating branch in williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652547435... e2e_test.go:680: Creating commit with new file in williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652547435... e2e_test.go:698: Getting file contents in williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652547435... e2e_test.go:726: Deleting directory in williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652547435... e2e_test.go:740: Listing commits in williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652547435... e2e_test.go:774: Getting commit williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652547435:2e082560a63f76f6604af4ccbd413e665b33fff7... e2e_test.go:648: Deleting repository williammartin/github-mcp-server-e2e-TestDirectoryDeletion-1747652547435...--- PASS: TestDirectoryDeletion (8.51s)=== CONT TestFileDeletion e2e_test.go:159: Starting Stdio MCP client... e2e_test.go:419: Getting current user... e2e_test.go:447: Creating repository williammartin/github-mcp-server-e2e-TestFileDeletion-1747652555997... e2e_test.go:471: Creating branch in williammartin/github-mcp-server-e2e-TestFileDeletion-1747652555997... e2e_test.go:488: Creating commit with new file in williammartin/github-mcp-server-e2e-TestFileDeletion-1747652555997... e2e_test.go:503: Getting file contents in williammartin/github-mcp-server-e2e-TestFileDeletion-1747652555997... e2e_test.go:531: Deleting file in williammartin/github-mcp-server-e2e-TestFileDeletion-1747652555997... e2e_test.go:545: Listing commits in williammartin/github-mcp-server-e2e-TestFileDeletion-1747652555997... e2e_test.go:579: Getting commit williammartin/github-mcp-server-e2e-TestFileDeletion-1747652555997:8ce03e432fcd67b4ead2d763199365becf0c33d6... e2e_test.go:456: Deleting repository williammartin/github-mcp-server-e2e-TestFileDeletion-1747652555997...--- PASS: TestFileDeletion (8.05s)=== CONT TestTags e2e_test.go:159: Starting Stdio MCP client... e2e_test.go:281: Getting current user... e2e_test.go:310: Creating repository williammartin/github-mcp-server-e2e-TestTags-1747652563993... e2e_test.go:327: Creating tag williammartin/github-mcp-server-e2e-TestTags-1747652563993:v0.0.1... e2e_test.go:357: Listing tags for williammartin/github-mcp-server-e2e-TestTags-1747652563993... e2e_test.go:390: Getting tag williammartin/github-mcp-server-e2e-TestTags-1747652563993:v0.0.1... e2e_test.go:319: Deleting repository williammartin/github-mcp-server-e2e-TestTags-1747652563993...--- PASS: TestTags (6.14s)=== CONT TestToolsets e2e_test.go:159: Starting Stdio MCP client...--- PASS: TestToolsets (0.20s)PASSok github.com/github/github-mcp-server/e2e 65.794s
Uh oh!
There was an error while loading.Please reload this page.
Description
Fixes#343
This is a very large PR as a result of needing to:
Previously, PR review submission and commenting was provided by:
add_pull_request_review_comment
create_pull_request_review
However, Gemini experienced issues with the schema for comments on
create_pull_request_review
. The original desire was to remove comments from that schema and require users to useadd_pull_request_review_comment
but as it turns out, this tool isn't that useful because it was backed by the REST API which only allows the addition of a single comment and then submits the review.As a result, this PR has introduced a number of new tools backed by the GraphQL API:
create_pending_pull_request_review
add_pull_request_review_comment_to_pending_review
submit_pending_pull_request_review
A tool was added to create and submit a review without comments:
create_and_submit_pull_request_review
A tool was added to clean up pending reviews which were previously not a valid state:
delete_pending_pull_request_review
Finally, in order to help the LLM determine line numbers for pull requests we added:
get_pull_request_diff
It's important to note that these tools are focused on working with a review that the caller owns. It does not allow adding arbitrary comments to review threads.
Example:
Created:https://github.com/github/github-mcp-server/pull/410/files#r2095483869
This worked with both GPT-4.1 and Gemini.
E2E Tests
github.com
GHES
GHEC