goern/forgejo-mcp
9
120
Fork
You've already forked forgejo-mcp
30

PR review tool #59

Closed
opened 2026年01月30日 00:13:48 +01:00 by MalcolmMielle · 4 comments

HI, thanks for taking this on!

I think that this repo was forked for the gitea MCP server. There are (a lot) of new tools on the gitea repo, would it be possible to import them to forgejo MCP server? Especially the latest commit with the PR review :)?

HI, thanks for taking this on! I think that this repo was forked for the gitea MCP server. There are (a lot) of new tools on the gitea repo, would it be possible to import them to forgejo MCP server? Especially the latest commit with the PR review :)?
Owner
Copy link

Hi @MalcolmMielle, thanks for this request!

I've started working on this. Here's what I'm planning to add — 6 new write-side PR review tools to complement the existing read-only ones (list_pull_reviews, get_pull_review, list_pull_review_comments):

Tool Purpose
create_pull_review Create a review with state (approve/request-changes/comment) and optional inline comments
submit_pull_review Submit a pending review with a verdict
dismiss_pull_review Dismiss a review with a reason
delete_pull_review Delete a pending review
create_review_requests Request reviews from specific users/teams
delete_review_requests Cancel pending review requests

All of these are already supported by the Forgejo SDK — this is about exposing them as MCP tools.

Is this what you had in mind? Are there any other tools from the upstream Gitea MCP server you'd particularly like to see prioritized? Happy to adjust scope based on your feedback.

Hi @MalcolmMielle, thanks for this request! I've started working on this. Here's what I'm planning to add — 6 new **write-side PR review tools** to complement the existing read-only ones (`list_pull_reviews`, `get_pull_review`, `list_pull_review_comments`): | Tool | Purpose | |------|---------| | `create_pull_review` | Create a review with state (approve/request-changes/comment) and optional inline comments | | `submit_pull_review` | Submit a pending review with a verdict | | `dismiss_pull_review` | Dismiss a review with a reason | | `delete_pull_review` | Delete a pending review | | `create_review_requests` | Request reviews from specific users/teams | | `delete_review_requests` | Cancel pending review requests | All of these are already supported by the Forgejo SDK — this is about exposing them as MCP tools. **Is this what you had in mind?** Are there any other tools from the upstream Gitea MCP server you'd particularly like to see prioritized? Happy to adjust scope based on your feedback.
goern stopped working 2026年01月30日 08:46:18 +01:00
3 seconds
goern added spent time 2026年01月30日 08:46:26 +01:00
15 minutes

Thanks for your quick answer!

I think the one I was looking at was create_pull_request_review. If I understand correctly, it's about sending PR review with per line comments?

I think the one your proposed also look great

Thanks for your quick answer! I think the one I was looking at was `create_pull_request_review`. If I understand correctly, it's about sending PR review with per line comments? I think the one your proposed also look great
goern added spent time 2026年01月30日 10:28:07 +01:00
35 minutes
Owner
Copy link

Implementation is ready on main (commit 578643c). Here are the 6 new tools:

Tool Purpose
create_pull_review Create a review with state (approve/request-changes/comment) and optional per-line inline comments
submit_pull_review Submit a pending review with a verdict
dismiss_pull_review Dismiss a review with a reason
delete_pull_review Delete a pending review
create_review_requests Request reviews from specific users/teams
delete_review_requests Cancel pending review requests

How to test

The easiest way is with the MCP Inspector:

npx @modelcontextprotocol/inspector ./forgejo-mcp --transport stdio

This gives you a web UI to call each tool individually with parameters and inspect responses.

Test walkthrough

You'll need a Forgejo instance with a repo that has at least one open PR.

1. Create a review with inline comments (the key use case from your request):

Tool: create_pull_review
Params:
 owner: <your-org>
 repo: <your-repo>
 index: <pr-number>
 state: REQUEST_CHANGES
 body: "Some changes needed"
 comments: [{"path":"README.md","body":"Typo here","new_position":1}]

Verify the review appears in the PR timeline and the inline comment shows on the correct line in the diff view.

2. Approve a PR:

Tool: create_pull_review
Params:
 owner / repo / index: (same as above)
 state: APPROVED
 body: "LGTM"

3. Request a review from someone:

Tool: create_review_requests
Params:
 owner / repo / index: (same as above)
 reviewers: "alice,bob"

4. Dismiss a review:

Tool: dismiss_pull_review
Params:
 owner / repo / index: (same as above)
 id: <review-id from step 2>
 message: "Outdated feedback"

@MalcolmMielle — would you be able to give these a spin and let us know if they work for your use case? Especially the inline comments feature (test 1 above) since that's what you were most interested in. Any feedback is welcome!

Implementation is ready on `main` (commit 578643c). Here are the 6 new tools: | Tool | Purpose | |------|---------| | `create_pull_review` | Create a review with state (approve/request-changes/comment) and optional per-line inline comments | | `submit_pull_review` | Submit a pending review with a verdict | | `dismiss_pull_review` | Dismiss a review with a reason | | `delete_pull_review` | Delete a pending review | | `create_review_requests` | Request reviews from specific users/teams | | `delete_review_requests` | Cancel pending review requests | ### How to test The easiest way is with the **MCP Inspector**: ```bash npx @modelcontextprotocol/inspector ./forgejo-mcp --transport stdio ``` This gives you a web UI to call each tool individually with parameters and inspect responses. ### Test walkthrough You'll need a Forgejo instance with a repo that has at least one open PR. **1. Create a review with inline comments** (the key use case from your request): ``` Tool: create_pull_review Params: owner: <your-org> repo: <your-repo> index: <pr-number> state: REQUEST_CHANGES body: "Some changes needed" comments: [{"path":"README.md","body":"Typo here","new_position":1}] ``` Verify the review appears in the PR timeline and the inline comment shows on the correct line in the diff view. **2. Approve a PR:** ``` Tool: create_pull_review Params: owner / repo / index: (same as above) state: APPROVED body: "LGTM" ``` **3. Request a review from someone:** ``` Tool: create_review_requests Params: owner / repo / index: (same as above) reviewers: "alice,bob" ``` **4. Dismiss a review:** ``` Tool: dismiss_pull_review Params: owner / repo / index: (same as above) id: <review-id from step 2> message: "Outdated feedback" ``` --- @MalcolmMielle — would you be able to give these a spin and let us know if they work for your use case? Especially the inline comments feature (test 1 above) since that's what you were most interested in. Any feedback is welcome!

Super! I'll give it a try and come back to you if I have questions/comments

Super! I'll give it a try and come back to you if I have questions/comments
Sign in to join this conversation.
No Branch/Tag specified
main
renovate/fission-ai-openspec-1.x
renovate/lock-file-maintenance
bot/downloads-20260624-061755
bot/downloads-20260623-061757
arena-forge
fix/image-tag-cascade
openspec/signed-sbom-attestation
docs/document-layers-workflow
issues/125
feature/issue-attachments
ignasgil-feat/remove-issue-labels
feature/org-management
v2.30.2
v2.30.1
v2.30.0
v2.29.0
v2.28.0
v2.27.0
v2.27.0-alpha.3
v2.26.0
v2.25.1
v2.25.0
release-tools/v1.0.1
v2.24.2
v2.24.1
v2.24.0
v2.23.1
v2.23.0
v2.22.0
v2.21.0
v2.20.0
v2.19.0
v2.19.0-alpha.1
v2.18.0
v2.17.0
v2.16.0
v2.16.0-beta.1
v2.15.1
v2.15.0
v2.14.0
v2.13.0
v2.12.0
v2.11.0
v2.10.1
v2.10.0
v2.9.1
v2.9.0
v2.8.1
v2.8.0
v2.7.0
v2.6.1
v2.6.0
v2.5.1
v2.5.0
v2.4.2
v2.4.1
v2.4.0
v2.3.0
v2.2.0
v0.0.5
v0.0.4
v0.0.3
v0.0.2
v0.0.1
v2.1.0
v2.0.0
v2.0.0-alpha.1
v1.2.1-alpha.1
v1.2.0
v1.1.0
v1.1.0-alpha.4
v1.1.0-alpha.3
v1.1.0-alpha.2
v1.1.0-alpha.1
v1.0.0
Labels
Clear labels
Compat/Breaking
Breaking change that won't be backward compatible
hermes-attempted
Hermes attempted but produced no changes
hermes-needs-clarification
Quality gate flagged, needs human input
hermes-ready
Ready for hermes to process
hermes-review
Hermes PR awaiting review
hermes-wip
Hermes is working on this
human-required
Hermes gave up after 3 attempts
Kind/Bug
Something is not working
Kind/Documentation
Documentation changes
Kind/Enhancement
Improve existing functionality
Kind/Feature
New functionality
Kind/OpenSpec
OpenSpec change proposal / spec-driven work
Kind/Security
This is security issue
Kind/Testing
Issue or pull request related to testing
Priority
Critical
The priority is critical
Priority
High
The priority is high
Priority
Low
The priority is low
Priority
Medium
The priority is medium
Reviewed
Confirmed
Issue has been confirmed
Reviewed
Duplicate
This issue or pull request already exists
Reviewed
Invalid
Invalid issue
Reviewed
Won't Fix
This issue won't be fixed
RFC - Request For Comments
Request For Comments — design/spec open for feedback before implementation
Status
Abandoned
Somebody has started to work on this but abandoned work
Status
Blocked
Something is blocking this issue or pull request
Status
Need More Info
Feedback is required to reproduce issue or to continue work
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
2 participants
Notifications
Total time spent: 50 minutes 3 seconds
goern
50 minutes 3 seconds
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
goern/forgejo-mcp#59
Reference in a new issue
goern/forgejo-mcp
No description provided.
Delete branch "%!s()"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?