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