gitea-issues asserted flatly that a merge never closes an issue, contradicting gitea-prs' references/merging.md, which documents that closing keywords in commits landing on the default branch do close one. The qualifier that made the claim true had been deleted; both sides now agree. gitea-releases had lost an epistemic hedge and its verification step, leaving conventions.md asserting unconfirmed tag auto-creation as fact. Nothing in the research corpus sources it, so the hedge and the verify-afterward instruction are back rather than upgraded. Descriptions were cut 50-240 chars under the 400 budget and shed routing with them: gitea-workflow's boundary named no target, gitea-prs lost the issue/PR number-space directive the suite is built around at 163/400, gitea-releases lost its boundary and every trigger. Restored, inside budget. Also restores delete_branch's hard-refusal strength and gitea-files' Read/Write/Edit pointer. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EJJrm5YmacbwMdzZpXcoti
61 lines
3.6 KiB
Markdown
61 lines
3.6 KiB
Markdown
---
|
|
name: gitea-prs
|
|
|
|
description: >
|
|
Use when listing, reading, creating, updating, merging, or reviewing Gitea pull requests — even
|
|
when the user does not say "Gitea". A number the user names may be an issue or a PR — they share
|
|
one number space — so confirm which domain applies before dispatching. Not issues ->
|
|
`gitea-issues`. Not branch or commit operations -> `gitea-branches`.
|
|
|
|
compatibility: Requires Gitea MCP server configured with write:issue and write:repository token
|
|
scopes. Requires git remote "origin" pointing to the Gitea instance for owner/repo resolution when
|
|
invoked directly by a human; an orchestrating caller (e.g. gitea-workflow) may pass owner/repo
|
|
already resolved.
|
|
|
|
metadata:
|
|
category: integration
|
|
source_keys:
|
|
- gitea-mcp-repo
|
|
- gitea-mcp-slim-go
|
|
- context7-websites-gitea
|
|
- context7-gitea-tea-cli
|
|
version: "0.1.2"
|
|
|
|
allowed-tools: Bash mcp__gitea__list_pull_requests mcp__gitea__pull_request_read mcp__gitea__pull_request_write mcp__gitea__pull_request_review_write
|
|
---
|
|
|
|
## Gotchas
|
|
|
|
- **Issues and PRs share one number space.** `#42` may be an issue rather than a PR. When unsure, call `pull_request_read method: "get"` and read a 404 as "that number is an issue" — hand it to `gitea-issues`.
|
|
- **`pull_request_write method: "create"` discards most optional parameters in silence.** `milestone`, `assignee`, `assignees`, `reviewers` and `team_reviewers` are accepted, dropped, and left out of the response, so a drop is indistinguishable from never passing them. `labels` *does* apply on `"create"`, so labels landing is no evidence the milestone did.
|
|
|
|
## Step 1 — Resolve owner and repo
|
|
|
|
Extract them from the git remote before any tool call, skipping this when an orchestrating caller already passed them in:
|
|
|
|
```bash
|
|
git remote get-url origin
|
|
```
|
|
|
|
If origin is not set or the URL is not a Gitea URL, stop and report: "No Gitea remote found — set origin to your Gitea instance URL."
|
|
|
|
## Step 2 — Dispatch
|
|
|
|
Confirm the number names a PR, not an issue, before writing to it.
|
|
|
|
| Task | Tool | Reference |
|
|
|---|---|---|
|
|
| List PRs; read a PR's details, diff, changed files or CI status | `list_pull_requests`, `pull_request_read` | `references/pull-requests.md` |
|
|
| Create a PR — subject to the silent-drop Gotcha above | `pull_request_write` | `references/pull-requests.md` |
|
|
| Update, close, reopen or retarget a PR, sync it with its base, or add/remove reviewers | `pull_request_write` | `references/pull-requests.md` |
|
|
| Merge a PR, or judge whether it can merge | `pull_request_write method: "merge"` | `references/merging.md` |
|
|
| Read, create, submit, dismiss or delete a code review, or reply to and resolve a review comment thread | `pull_request_read`, `pull_request_review_write` | `references/reviews.md` |
|
|
|
|
Read the reference for the row you land on before making the call. Each carries the parameter signatures, the per-method behaviour and the response-shape quirks the row cannot, and every write method has at least one parameter that behaves differently from its issue-side counterpart.
|
|
|
|
## Step 3 — Resolving labels and milestones
|
|
|
|
`labels` and `milestone` take numeric IDs, never name or title strings. Before a `pull_request_write` call carrying either, resolve them through `gitea-labels-milestones`: `label_read method: "list_repo_labels"` for a label name, `milestone_read method: "list"` for a milestone title.
|
|
|
|
Resolve a milestone only when the call is an `"update"` — on `"create"` the lookup is wasted, per the Gotcha above. Recovering an existing PR's milestone ID needs the same lookup, because `pull_request_read` returns `milestone` as a bare title string and never an ID.
|