github-mcp-server icon indicating copy to clipboard operation
github-mcp-server copied to clipboard

Add CreateRelease tool for programmatic release creation

Open zzstoatzz opened this issue 4 months ago • 6 comments

Describe the feature or problem you'd like to solve

Currently, the GitHub MCP server provides excellent read-only access to releases through list_releases, get_latest_release, and get_release_by_tag tools. However, there's no way to create releases programmatically through the MCP interface.

While we can use the GitHub CLI (gh release create) for this, it would be more consistent and convenient to have this capability directly in the MCP server, especially when automating workflows that already use other MCP write operations.

Proposed solution

Add a CreateRelease tool that mirrors the functionality of the GitHub API's Create a release endpoint. The tool would accept parameters like:

  • owner - Repository owner (required)
  • repo - Repository name (required)
  • tag_name - The name of the tag (required)
  • target_commitish - The commitish value for the tag (optional, defaults to repo's default branch)
  • name - The name of the release (optional)
  • body - Text describing the release contents (optional)
  • draft - Whether this is a draft release (optional, default false)
  • prerelease - Whether this is a pre-release (optional, default false)
  • generate_release_notes - Whether to auto-generate release notes (optional)

Why this makes sense

The GitHub MCP server already has:

  • Many other write operations (CreateIssue, CreatePullRequest, CreateRepository, CreateBranch, etc.)
  • Read-only release operations (listing and fetching releases)
  • The authentication and permissions framework to handle write operations

Adding CreateRelease would complete the release management capabilities and provide a consistent interface for automation tools that need to create releases as part of their workflow.

Use cases

  • Any workflow currently using gh release create that would benefit from MCP integration

Additional context

Looking at the existing codebase, this would follow the same pattern as other create operations in pkg/github/repositories.go. The implementation would be straightforward, using the existing GitHub client infrastructure.

Would you be open to a PR adding this functionality? I'd be happy to contribute this feature following your existing patterns and conventions.

zzstoatzz avatar Aug 30 '25 05:08 zzstoatzz

This issue was (thoughtfully) created through Claude Code - it reads like AI because it is, but conveys generally what I wanted

zzstoatzz avatar Aug 30 '25 05:08 zzstoatzz

I like this idea, but as the MCP specification currently stands there's going to be a limitation around uploading files to be included in the release. This means it will not have full feature parity with what the cli offers - is this feature still useful in this scenario?

mattdholloway avatar Sep 01 '25 14:09 mattdholloway

@mattdholloway thanks for taking a look!

is this feature still useful

for my idiosyncratic needs, yes but would understand wanting to hold off pending full parity with the CLI

as the MCP specification currently stands

for my own edification, which part of the spec presents the limitation? like you couldn't practically b64 encode all release assets?

zzstoatzz avatar Sep 02 '25 00:09 zzstoatzz

In theory, yes, this could be done - but it would consume a significant amount of tokens

mattdholloway avatar Sep 02 '25 08:09 mattdholloway

yep that makes sense! will poke around upstream - ty

zzstoatzz avatar Sep 02 '25 16:09 zzstoatzz

Hello guys, I just found out this issue because today, I test updating release note with gemini-cli. I wonder whether we should create a new UpdateRelease tool or do the update with CreateRelease tool

minhngo248 avatar Dec 01 '25 13:12 minhngo248