Skip to main content
Glama

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
NameRequiredDescriptionDefault
repo_slugYes
pr_idYes
merge_strategyNomerge_commit
close_source_branchNo
messageNo

Implementation Reference

  • 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), }
  • 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()

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JaviMaligno/mcp-server-bitbucket'

If you have feedback or need assistance with the MCP directory API, please join our Discord server