Add support for linking issues to Projects and Milestones #22

Closed
opened 2026-06-20 11:57:21 +00:00 by Bartender · 2 comments
Owner

Problem

The MCP can create and list issues, labels and milestones, but it cannot associate an existing issue with a Project (Kanban board) or a Milestone. This came up while planning Driftwell Sprint 1: 7 issues were created via the MCP, but they could not be added to the existing "Sprint 1" Project board, nor assigned to a milestone, without manual work in the Gitea UI.

Current gaps

  • Projects: no tooling at all. Cannot list projects, cannot read board/columns, cannot add an issue to a project or move it between columns.
  • Milestones: create_milestone and list_milestones exist, but there is no way to assign an issue to a milestone. create_issue and update_issue have no milestone field.

The only grouping mechanism that currently works end-to-end on existing issues is labels (add_labels).

Proposed scope

1. Milestone assignment (smaller, likely lowest-hanging)

  • Add a milestone parameter to create_issue (milestone id or title).
  • Add a milestone field to update_issue, so existing issues can be moved into/out of a milestone.
  • Gitea REST API: PATCH /repos/{owner}/{repo}/issues/{index} accepts a milestone id. Should be straightforward.

2. Project / board support (larger, verify API first)

  • list_projects (repo and/or org scope).
  • add_issue_to_project (and ideally column/board placement).
  • Caveat: Gitea's Projects API coverage has historically been limited/partial. First step is to verify which project endpoints the running Gitea version actually exposes before committing to tool design. If the API can't move issues between columns, at least support listing projects + adding an issue to a project.

Acceptance criteria

  • An issue can be assigned to a milestone via the MCP (on create and on update).
  • Project API support investigated; findings documented in this issue.
  • If supported: an existing issue can be added to a Project via the MCP.
  • Respect the existing write-mode / policy guardrails (these are write operations).

Context

Surfaced 2026-06-20 during Driftwell Sprint 1 issue creation (Bartender.studio/driftwell #1-#7). Related: #21 (full read/write mode), #15 (label write tool).

## Problem The MCP can create and list issues, labels and milestones, but it cannot **associate** an existing issue with a **Project** (Kanban board) or a **Milestone**. This came up while planning Driftwell Sprint 1: 7 issues were created via the MCP, but they could not be added to the existing "Sprint 1" Project board, nor assigned to a milestone, without manual work in the Gitea UI. ### Current gaps - **Projects:** no tooling at all. Cannot list projects, cannot read board/columns, cannot add an issue to a project or move it between columns. - **Milestones:** `create_milestone` and `list_milestones` exist, but there is **no way to assign an issue to a milestone**. `create_issue` and `update_issue` have no `milestone` field. The only grouping mechanism that currently works end-to-end on existing issues is labels (`add_labels`). ## Proposed scope ### 1. Milestone assignment (smaller, likely lowest-hanging) - Add a `milestone` parameter to `create_issue` (milestone id or title). - Add a `milestone` field to `update_issue`, so existing issues can be moved into/out of a milestone. - Gitea REST API: `PATCH /repos/{owner}/{repo}/issues/{index}` accepts a `milestone` id. Should be straightforward. ### 2. Project / board support (larger, verify API first) - `list_projects` (repo and/or org scope). - `add_issue_to_project` (and ideally column/board placement). - **Caveat:** Gitea's Projects API coverage has historically been limited/partial. First step is to verify which project endpoints the running Gitea version actually exposes before committing to tool design. If the API can't move issues between columns, at least support listing projects + adding an issue to a project. ## Acceptance criteria - [ ] An issue can be assigned to a milestone via the MCP (on create and on update). - [ ] Project API support investigated; findings documented in this issue. - [ ] If supported: an existing issue can be added to a Project via the MCP. - [ ] Respect the existing write-mode / policy guardrails (these are write operations). ## Context Surfaced 2026-06-20 during Driftwell Sprint 1 issue creation (Bartender.studio/driftwell #1-#7). Related: #21 (full read/write mode), #15 (label write tool).
Owner

Update — milestone assignment implemented; Projects investigated

Milestone assignment (done): create_issue and update_issue now take a milestone argument (numeric id or title, resolved case-insensitively; 0 clears it on update). Implemented in PR above, behind the existing write-mode/policy guardrails, with tests + docs.

Projects API (investigated, not implementable): Gitea 1.26.2 on this instance exposes zero project endpoints in its REST API (verified against swagger.v1.json — no list_projects, no board/column read, no add-issue-to-project). So project/board tooling cannot be built against the current Gitea version; documented as intentionally unsupported in docs/api-reference.md and docs/write-mode.md.

Acceptance criteria status:

  • Issue assignable to a milestone via the MCP (create + update)
  • Project API support investigated; findings documented here
  • Add an issue to a Project via the MCP — not possible on Gitea 1.26.2 (no API)
  • Respects write-mode / policy guardrails

Will close once the PR is merged.

### Update — milestone assignment implemented; Projects investigated **Milestone assignment (done):** `create_issue` and `update_issue` now take a `milestone` argument (numeric id **or** title, resolved case-insensitively; `0` clears it on update). Implemented in PR above, behind the existing write-mode/policy guardrails, with tests + docs. **Projects API (investigated, not implementable):** Gitea 1.26.2 on this instance exposes **zero project endpoints** in its REST API (verified against `swagger.v1.json` — no `list_projects`, no board/column read, no add-issue-to-project). So project/board tooling cannot be built against the current Gitea version; documented as intentionally unsupported in `docs/api-reference.md` and `docs/write-mode.md`. Acceptance criteria status: - [x] Issue assignable to a milestone via the MCP (create + update) - [x] Project API support investigated; findings documented here - [ ] ~Add an issue to a Project via the MCP~ — not possible on Gitea 1.26.2 (no API) - [x] Respects write-mode / policy guardrails Will close once the PR is merged.
Owner

PR #25 merged (commit 026f3a6, 2026-06-22). Milestone assignment now ships on create_issue/update_issue (id or title; 0 clears). The Gitea Projects API is unavailable on 1.26.2 and is documented as intentionally unsupported. Closing — all actionable acceptance criteria are met; project/board support can be revisited if a future Gitea version exposes the endpoints.

PR #25 merged (commit 026f3a6, 2026-06-22). Milestone assignment now ships on `create_issue`/`update_issue` (id or title; `0` clears). The Gitea Projects API is unavailable on 1.26.2 and is documented as intentionally unsupported. Closing — all actionable acceptance criteria are met; project/board support can be revisited if a future Gitea version exposes the endpoints.
Latte closed this issue 2026-06-22 16:02:41 +00:00
Sign in to join this conversation.