Skip to content

v1.1.0

Latest

Choose a tag to compare

@github-actions github-actions released this 17 Aug 11:47
0e74dba

Closes the updatePullRequest gap reported in #1, together with two omissions of the same shape found while tracing it. Every change is additive — no tool was removed, renamed or given a new required argument, so upgrading from 1.0.0 needs nothing but the new version number.

Changes

  • updatePullRequest takes closeSourceBranch and draft. Both fields existed on the request model and were serialised correctly, but the tool bound neither, so passing one was accepted, answered 200 OK, and changed nothing — and the arity guard counted only the four fields it did bind, so the flag on its own was refused as "nothing to update" (#1). They are the only way to reach either setting once a pull request is open: draft=false marks a draft ready for review, and closeSourceBranch=true makes the merge delete the branch on a pull request opened without it. Both are nullable, so an omitted flag keeps the current value rather than forcing false.
  • A flag-only update is one PUT carrying one field. Bitbucket documents the endpoint as a partial update but publishes no example without a title, so a 400 on a body that named no title — and only that combination — is answered by fetching the pull request and resending its own title with the change, the same fallback updatePullRequestTask already makes for a state-only update.
  • createPullRequest's closeSourceBranch and draft are nullable too. As plain booleans they defaulted to false and were therefore written into every create body, forcing a value where the caller had expressed no opinion; omitting them now leaves the field out and lets Bitbucket apply its own default.
  • listPullRequests reports closeSourceBranch on each entry. The field set had always requested it and the wire model had always deserialised it — only the summary result lacked the property, so the value was fetched and discarded, and "which of these open pull requests will leave their branch behind?" cost one getPullRequest per entry to answer.

Install

Native AOT binary — recommended. Self-contained, nothing to install, roughly ten milliseconds to start. Every archive below was built and smoke-tested on its own architecture: each release leg publishes the binary and drives a real initialize / tools/list exchange over stdio before uploading, so no binary ships without having answered a handshake on the hardware it targets.

Platform RID Archive
Windows x64 win-x64 bitbucket-mcp-1.1.0-win-x64.zip
Windows ARM64 win-arm64 bitbucket-mcp-1.1.0-win-arm64.zip
Linux x64 linux-x64 bitbucket-mcp-1.1.0-linux-x64.tar.gz
Linux ARM64 linux-arm64 bitbucket-mcp-1.1.0-linux-arm64.tar.gz
macOS Apple silicon osx-arm64 bitbucket-mcp-1.1.0-osx-arm64.tar.gz
tar -xzf bitbucket-mcp-1.1.0-linux-x64.tar.gz
./bitbucket-mcp --version

NuGet. The same server is on nuget.org as bitbucket-mcp, a .NET tool package carrying the McpServer package type, so dnx (part of the .NET 10 SDK) fetches and runs it in one step:

dnx bitbucket-mcp@1.1.0 --yes status

Published by trusted publishing — the workflow exchanges its GitHub OIDC token for an API key that lives minutes, so no nuget.org key exists in this repository or in its secrets.

Claude Code plugin. Delivers the server and the pull-request skill together:

/plugin marketplace add lahma/bitbucket-mcp
/plugin install bitbucket-mcp@bitbucket-mcp

Upgrading from 1.0.0

Change the version you pin and nothing else. Both new updatePullRequest arguments are optional and default to leaving the current value alone, and the new closeSourceBranch field on a listPullRequests entry is additive.

One behaviour change worth naming: createPullRequest no longer writes close_source_branch: false and draft: false into every request body. Passing either argument explicitly behaves exactly as before; omitting it now lets Bitbucket apply its own default instead of having false forced on it.