| """ | |
| Branch listing tool. | |
| """ | |
| from typing import List, Dict | |
| from mcp.server.fastmcp import Context | |
| from pmcp.mcp_server.github_server.services.branches import BranchService | |
| from pmcp.mcp_server.github_server.github import github_client | |
| service = BranchService(github_client) | |
| async def list_branches(ctx: Context, owner: str, repo: str) -> Dict[str, List[str]]: | |
| """ | |
| Gets the list of branches. | |
| Args: | |
| ctx: FastMCP request context (handles errors). | |
| owner (str): Repository owner. | |
| repo (str): Repository name. | |
| Returns: | |
| {"branches": ["main", "dev", …]} | |
| """ | |
| try: | |
| branches = await service.list_branches(owner, repo) | |
| names = [b["name"] for b in branches] | |
| return {"branches": names} | |
| except Exception as exc: | |
| error_msg = f"Error while getting the list of branches for repository {repo}. Error: {str(exc)}" | |
| await ctx.error(str(exc)) | |
| raise |