Skip to main content
Glama

list_pull_requests

Retrieve pull requests from a Bitbucket repository with filtering options for state and result limits.

Instructions

List pull requests in a repository.

Args:
    repo_slug: Repository slug
    state: Filter by state: OPEN, MERGED, DECLINED, SUPERSEDED (default: OPEN)
    limit: Maximum number of results (default: 20, max: 100)

Returns:
    List of PRs with basic info

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
repo_slugYes
stateNoOPEN
limitNo

Implementation Reference

  • The primary MCP tool handler function 'list_pull_requests'. It validates input parameters, calls the Bitbucket client method, formats the response using PullRequestSummary models, and handles errors.
    @mcp.tool()
    @handle_bitbucket_error
    @formatted
    def list_pull_requests(
        repo_slug: str,
        state: str = "OPEN",
        limit: int = 20,
    ) -> dict:
        """List pull requests in a repository.
    
        Args:
            repo_slug: Repository slug
            state: Filter by state: OPEN, MERGED, DECLINED, SUPERSEDED (default: OPEN)
            limit: Maximum number of results (default: 20, max: 100)
    
        Returns:
            List of PRs with basic info
        """
        # Validate state - use enum value or default to OPEN
        try:
            validated_state = PRState(state.upper()).value
        except ValueError:
            validated_state = PRState.OPEN.value
    
        client = get_client()
        prs = client.list_pull_requests(repo_slug, state=validated_state, limit=validate_limit(limit))
        return {
            "pull_requests": [
                PullRequestSummary.from_api(pr, client.extract_pr_url(pr)).model_dump()
                for pr in prs
            ],
        }
  • The BitbucketClient helper method that implements the paginated API request to Bitbucket's pullrequests endpoint.
    def list_pull_requests(
        self,
        repo_slug: str,
        state: str = "OPEN",
        limit: int = 50,
    ) -> list[dict[str, Any]]:
        """List pull requests for a repository.
    
        Args:
            repo_slug: Repository slug
            state: PR state filter (OPEN, MERGED, DECLINED, SUPERSEDED)
            limit: Maximum results to return
    
        Returns:
            List of PR info dicts
        """
        return self._paginated_list(
            self._repo_path(repo_slug, "pullrequests"),
            limit=limit,
            max_page=50,
            state=state,
        )
  • Pydantic model PullRequestSummary used for output schema validation and transformation in the list_pull_requests tool response.
    class PullRequestSummary(BaseModel):
        """PR info for list responses."""
    
        id: int
        title: str
        state: str
        author: Optional[str] = None
        source_branch: Optional[str] = None
        destination_branch: Optional[str] = None
        url: str = ""
    
        @classmethod
        def from_api(cls, data: dict, url: str = "") -> "PullRequestSummary":
            return cls(
                id=data.get("id", 0),
                title=data.get("title", ""),
                state=data.get("state", ""),
                author=(data.get("author") or {}).get("display_name"),
                source_branch=(data.get("source") or {}).get("branch", {}).get("name"),
                destination_branch=(data.get("destination") or {}).get("branch", {}).get("name"),
                url=url,
            )

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