add Address Reviews mode

This commit is contained in:
Colin McDonnell
2025-11-26 23:25:36 -08:00
parent 2ed4d445f7
commit 91f8b55167
4 changed files with 85 additions and 0 deletions
+25
View File
@@ -74,6 +74,31 @@ await mcp.call("gh_pullfrog/list_pull_request_reviews", {
});
```
#### `reply_to_review_comment`
reply to a PR review comment thread explaining how the feedback was addressed.
**parameters:**
- `pull_number` (number): the pull request number
- `comment_id` (number): the ID of the review comment to reply to
- `body` (string): the reply text explaining how the feedback was addressed
**replaces:** `gh api repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies`
**returns:**
the created reply comment including:
- comment id, body, html_url
- in_reply_to_id showing it's a reply to the specified comment
**example:**
```typescript
// after addressing a review comment
await mcp.call("gh_pullfrog/reply_to_review_comment", {
pull_number: 47,
comment_id: 2567334961,
body: "removed the function as requested"
});
```
### other tools
see individual files for documentation on other tools:
+32
View File
@@ -168,3 +168,35 @@ export const UpdateWorkingCommentTool = tool({
};
}),
});
export const ReplyToReviewComment = type({
pull_number: type.number.describe("the pull request number"),
comment_id: type.number.describe("the ID of the review comment to reply to"),
body: type.string.describe("the reply text explaining how the feedback was addressed"),
});
export const ReplyToReviewCommentTool = tool({
name: "reply_to_review_comment",
description:
"Reply to a PR review comment thread explaining how the feedback was addressed. Use this after addressing each review comment to provide specific context about the changes made.",
parameters: ReplyToReviewComment,
execute: contextualize(async ({ pull_number, comment_id, body }, ctx) => {
const bodyWithFooter = addFooter(body, ctx.payload);
const result = await ctx.octokit.rest.pulls.createReplyForReviewComment({
owner: ctx.owner,
repo: ctx.name,
pull_number,
comment_id,
body: bodyWithFooter,
});
return {
success: true,
commentId: result.data.id,
url: result.data.html_url,
body: result.data.body,
in_reply_to_id: result.data.in_reply_to_id,
};
}),
});
+2
View File
@@ -8,6 +8,7 @@ import {
CreateCommentTool,
CreateWorkingCommentTool,
EditCommentTool,
ReplyToReviewCommentTool,
UpdateWorkingCommentTool,
} from "./comment.ts";
import { DebugShellCommandTool } from "./debug.ts";
@@ -66,6 +67,7 @@ export async function startMcpHttpServer(): Promise<{ url: string; close: () =>
EditCommentTool,
CreateWorkingCommentTool,
UpdateWorkingCommentTool,
ReplyToReviewCommentTool,
IssueTool,
IssueInfoTool,
GetIssueCommentsTool,