merge_pull_request
Merge a pull request in Bitbucket with configurable merge strategy, optional branch cleanup, and custom commit message.
Instructions
Merge a pull request.
Args:
repo_slug: Repository slug
pr_id: Pull request ID
merge_strategy: One of 'merge_commit', 'squash', 'fast_forward' (default: merge_commit)
close_source_branch: Delete source branch after merge (default: True)
message: Optional merge commit message
Returns:
Merged PR info
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| repo_slug | Yes | ||
| pr_id | Yes | ||
| merge_strategy | No | merge_commit | |
| close_source_branch | No | ||
| message | No |
Implementation Reference
- src/server.py:306-348 (handler)MCP tool handler decorated with @mcp.tool(). Handles input validation using MergeStrategy enum, calls BitbucketClient.merge_pull_request, and formats the response with PR id, state, merge commit hash, and URL.@mcp.tool() @handle_bitbucket_error @formatted def merge_pull_request( repo_slug: str, pr_id: int, merge_strategy: str = "merge_commit", close_source_branch: bool = True, message: Optional[str] = None, ) -> dict: """Merge a pull request. Args: repo_slug: Repository slug pr_id: Pull request ID merge_strategy: One of 'merge_commit', 'squash', 'fast_forward' (default: merge_commit) close_source_branch: Delete source branch after merge (default: True) message: Optional merge commit message Returns: Merged PR info """ # Validate merge strategy - use enum value or default to merge_commit try: validated_strategy = MergeStrategy(merge_strategy.lower()).value except ValueError: validated_strategy = MergeStrategy.MERGE_COMMIT.value client = get_client() result = client.merge_pull_request( repo_slug=repo_slug, pr_id=pr_id, merge_strategy=validated_strategy, close_source_branch=close_source_branch, message=message, ) return { "id": result.get("id"), "state": result.get("state"), "merge_commit": result.get("merge_commit", {}).get("hash"), "url": client.extract_pr_url(result), }
- src/bitbucket_client.py:472-505 (helper)BitbucketClient method that constructs the API payload and makes the POST request to /pullrequests/{pr_id}/merge endpoint to perform the merge.def merge_pull_request( self, repo_slug: str, pr_id: int, merge_strategy: str = "merge_commit", close_source_branch: bool = True, message: Optional[str] = None, ) -> dict[str, Any]: """Merge a pull request. Args: repo_slug: Repository slug pr_id: Pull request ID merge_strategy: One of 'merge_commit', 'squash', 'fast_forward' close_source_branch: Delete source branch after merge message: Optional merge commit message Returns: Merged PR info """ payload = { "type": merge_strategy, "close_source_branch": close_source_branch, } if message: payload["message"] = message result = self._request( "POST", self._repo_path(repo_slug, "pullrequests", str(pr_id), "merge"), json=payload, ) return self._require_result(result, "merge PR", f"#{pr_id}")
- src/server.py:306-306 (registration)The @mcp.tool() decorator registers this function as an MCP tool named "merge_pull_request".@mcp.tool()