Skip to content

Add create_release, update_release, delete_release, and generate_release_notes tools#2854

Open
Kowshik4593 wants to merge 1 commit into
github:mainfrom
Kowshik4593:add-release-write-tools
Open

Add create_release, update_release, delete_release, and generate_release_notes tools#2854
Kowshik4593 wants to merge 1 commit into
github:mainfrom
Kowshik4593:add-release-write-tools

Conversation

@Kowshik4593

Copy link
Copy Markdown

Summary

Adds four tools that round out release management, which previously only had read tools (list_releases, get_latest_release, get_release_by_tag).

Why

Fixes #2853

Agents can currently read releases but not create, edit, delete them, or preview auto-generated release notes — so any release-management workflow has to drop out of MCP and into the GitHub UI partway through.

What changed

  • Added create_release (POST /repos/{owner}/{repo}/releases).
  • Added update_release (PATCH /repos/{owner}/{repo}/releases/{release_id}), using the same "only send fields that were explicitly provided" pattern as update_pull_request.
  • Added delete_release (DELETE /repos/{owner}/{repo}/releases/{release_id}), annotated with DestructiveHint like delete_file.
  • Added generate_release_notes (POST /repos/{owner}/{repo}/releases/generate-notes), a preview-only endpoint that returns generated notes without creating or modifying a release.
  • Registered all four in the repos toolset (pkg/github/tools.go).
  • Added table-driven tests for each tool in pkg/github/repositories_test.go, plus mock endpoint constants in pkg/github/helper_test.go.
  • Generated toolsnaps (pkg/github/__toolsnaps__/{create,update,delete}_release.snap, generate_release_notes.snap).
  • Regenerated README.md via script/generate-docs.

MCP impact

  • New tool added

Prompts tested (tool changes only)

  • "Create a release for tag v1.0.0 titled 'Initial release' with body 'Initial release'." → create_release
  • "Mark the v1.0.1 release as no longer a draft and rename it 'Release v1.0.1'." → update_release
  • "Delete release 123 from this repo." → delete_release
  • "Generate the release notes for v1.1.0 using v1.0.0 as the previous tag, without creating the release." → generate_release_notes

Security / limits

  • Auth / permissions considered

All four tools require the repo OAuth scope, consistent with the existing release read tools. delete_release is marked DestructiveHint: true so clients can gate or confirm it. Write responses (create_release/update_release) carry the same repo-visibility/draft-state security label as the existing read tools (get_release_by_tag, list_releases), since a draft release is not world-readable even on a public repo.

Tool renaming

  • I am renaming tools as part of this PR (e.g. a part of a consolidation effort)
  • I am not renaming tools as part of this PR

Lint & tests

  • Linted locally with ./script/lint (via golangci-lint run at the CI-pinned v2.9.0)
  • Tested locally with ./script/test (go test ./... — full suite passes)

Docs

  • Updated (README / docs / examples)

…notes tools

Adds four tools that round out release management, which previously
only had read tools (list_releases, get_latest_release,
get_release_by_tag):

- create_release: POST /repos/{owner}/{repo}/releases
- update_release: PATCH /repos/{owner}/{repo}/releases/{release_id}
- delete_release: DELETE /repos/{owner}/{repo}/releases/{release_id}
  (marked DestructiveHint, mirroring delete_file)
- generate_release_notes: POST /repos/{owner}/{repo}/releases/generate-notes,
  a preview-only endpoint that generates release notes from merged PRs
  without creating or modifying a release

update_release follows the same partial-update pattern as
update_pull_request (OptionalParamOK per field, no-op error if nothing
is provided).
Copilot AI review requested due to automatic review settings July 11, 2026 20:17
@Kowshik4593 Kowshik4593 requested a review from a team as a code owner July 11, 2026 20:17

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add create_release, update_release, delete_release, and generate_release_notes tools

2 participants