from pmcp.mcp_server.github_server.utils.github_api import GithubClient class PullRequestService: """Read-only pull-request queries.""" def __init__(self, client: GithubClient): self.client = client async def get_pr_list(self, owner: str, repo: str, state: str = "open"): """ List pull requests for a repository. Args: owner (str): Repository owner. repo (str): Repository name. state (str): ``open``, ``closed`` or ``all``. Returns: List of PR dicts. """ params = {"state": state} return await self.client.GET(f"{owner}/{repo}/pulls", params=params) async def create( self, owner: str, repo: str, title: str, head: str, base: str, body: str | None = None, draft: bool = False, ): """ Create a pull request (`POST /pulls`). Args: owner: Repository owner. repo: Repository name. title: PR title. head: The branch/tag you want to merge **from** (`user:branch` accepted). base: The branch you want to merge **into** (usually `main`). body: Optional Markdown description. draft: Whether to open as a draft PR. Returns: JSON describing the new pull request. """ payload = { "title": title, "head": head, "base": base, "body": body or "", "draft": draft, } return await self.client.POST(f"{owner}/{repo}/pulls", json=payload)