feat(issue): add issue dependency tools with correct Forgejo API contract #335
No reviewers
Labels
No labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/OpenSpec
Kind/Security
Kind/Testing
Priority/Critical
Priority/High
Priority/Low
Priority/Medium
RFC - Request For Comments
Reviewed/Confirmed
Reviewed/Duplicate
Reviewed/Invalid
Reviewed/Won't Fix
Status/Abandoned
Status/Blocked
Status/Need More Info
hermes-attempted
hermes-needs-clarification
hermes-ready
hermes-review
hermes-wip
human-required
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
agentic-forges/forgejo-mcp!335
Loading…
Reference in a new issue
No description provided.
Delete branch "feature/issue-dependency-tools-upstream-api"
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?
Adds four MCP tools for managing issue dependencies:
list_issue_dependencies — issues the given issue depends on
list_issue_dependents — issues that depend on the given issue
add_issue_dependency — create a dependency relationship
remove_issue_dependency — remove a dependency relationship
Uses the raw HTTP helpers in forgejo because the pinned SDK does not expose typed dependency methods. The mutation endpoints use the Forgejo IssueMeta body shape ({index, owner, repo}), confirmed against a live Codeberg instance.
Includes handler tests for request paths, body shape, self-dependency rejection, API error surfacing, and 404-as-empty-list behavior.
Closes the issue dependency feature gap.
op1st Pipelines as Code is skipping this commit.
User MaherMakerHallerErne is not allowed to trigger CI via pull_request in this repo.
/ok-to-test
op1st Pipelines as Code/forgejo-mcp-code-scans-qlwbk is running.
Starting Pipelinerun forgejo-mcp-code-scans-qlwbk in namespace op1st-pipelines
You can monitor the execution using the op1st Pipelines as Code PipelineRun viewer or through the command line by
using the tkn CLI with the following command:
tkn pr logs -n op1st-pipelines forgejo-mcp-code-scans-qlwbk -fop1st Pipelines as Code/forgejo-mcp-on-pull-request-nbs9x is running.
Starting Pipelinerun forgejo-mcp-on-pull-request-nbs9x in namespace op1st-pipelines
You can monitor the execution using the op1st Pipelines as Code PipelineRun viewer or through the command line by
using the tkn CLI with the following command:
tkn pr logs -n op1st-pipelines forgejo-mcp-on-pull-request-nbs9x -fop1st Pipelines as Code/forgejo-mcp-code-scans-qlwbk has successfully validated your commit.
Task Statuses:
fetch-source
gitleaks-version
gitleaks
op1st Pipelines as Code/forgejo-mcp-on-pull-request-nbs9x has successfully validated your commit.
Task Statuses:
fetch-source
build-and-test
commit-title-check
op1st Pipelines as Code/forgejo-mcp-code-scans-n6bw6 is running.
Starting Pipelinerun forgejo-mcp-code-scans-n6bw6 in namespace op1st-pipelines
You can monitor the execution using the op1st Pipelines as Code PipelineRun viewer or through the command line by
using the tkn CLI with the following command:
tkn pr logs -n op1st-pipelines forgejo-mcp-code-scans-n6bw6 -fop1st Pipelines as Code/forgejo-mcp-on-pull-request-lp47v is running.
Starting Pipelinerun forgejo-mcp-on-pull-request-lp47v in namespace op1st-pipelines
You can monitor the execution using the op1st Pipelines as Code PipelineRun viewer or through the command line by
using the tkn CLI with the following command:
tkn pr logs -n op1st-pipelines forgejo-mcp-on-pull-request-lp47v -fop1st Pipelines as Code/forgejo-mcp-code-scans-n6bw6 has successfully validated your commit.
Task Statuses:
fetch-source
gitleaks-version
gitleaks
op1st Pipelines as Code/forgejo-mcp-on-pull-request-lp47v has successfully validated your commit.
Task Statuses:
fetch-source
build-and-test
commit-title-check
We took this PR for a spin against Codeberg (live instance) and want to share the results as a datapoint: all four tools work as specified; the pagination revision (page/limit echoed in the response) behaves as documented; and the 404-as-empty-list behavior matches Forgejo's habit. Handler tests pass. Nice work.
One gap worth considering before merge: the mutation body hardcodes
owner/repoto the target issue's repo, so cross-repo dependencies can't be created — even though theIssueMetabody shape exists precisely to express them, and Codeberg accepts them (we verified a cross-repo add → list → remove cycle live). We extended the tools with optionaldepends_on_owner/depends_on_repo(add) anddependency_owner/dependency_repo(remove), defaulting to the target repo, with the self-dependency check scoped to same-repo — including tests for the cross-repo body shape and the same-index-different-repo case. The change is one commit on top of this branch:synath/forgejo-mcp@658e7f2(branchfeat/issue-dependency-cross-repo). Happy to open it as a follow-up PR once this lands, or @MaherMakerHallerErne is welcome to cherry-pick it into this PR directly.(Posted by synath's Claude agent on David's behalf — testing and the cross-repo extension were agent work.)