| """ | |
| Repository-level stats tool. | |
| """ | |
| from mcp.server.fastmcp import Context | |
| from pmcp.mcp_server.github_server.services.repo import RepoService | |
| from pmcp.mcp_server.github_server.github import github_client | |
| service = RepoService(github_client) | |
| async def get_repo_stats(ctx: Context, owner: str, repo: str): | |
| """ | |
| Gets the statistics of the repository | |
| Args: | |
| ctx: FastMCP request context (handles errors). | |
| owner (str): Repository owner. | |
| repo (str): Repository name. | |
| Returns: | |
| {"stars": 0, "forks": 0, "watchers": 0, "open_issues": 0} | |
| """ | |
| try: | |
| data = await service.get_stats(owner, repo) | |
| return { | |
| "stars": data["stargazers_count"], | |
| "forks": data["forks_count"], | |
| "watchers": data["watchers_count"], | |
| "open_issues": data["open_issues_count"], | |
| } | |
| except Exception as exc: | |
| error_msg = f"Failed to get statistics of repository {repo}. Error: {str(exc)}" | |
| await ctx.error(str(exc)) | |
| raise |