github-ops-mcp
Provides tools for managing GitHub repositories, including issue triage, PR review monitoring, repo health audits, and team access reviews.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@github-ops-mcp triage untriaged issues in pallets/flask"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
github-ops-mcp
An MCP server that provides operational tooling over the GitHub API — issue triage, PR review monitoring, repo health audits, and team access reviews. Built for use with Claude Code or Claude Desktop, it gives ops teams a conversational interface to automate the manual toil of managing GitHub-based workflows.
Quick Start
git clone https://github.com/avg-ape/github-ops-mcp.git
cd github-ops-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e .Optionally set a GitHub token for higher rate limits and write operations:
cp .env.example .env
# Edit .env and add your tokenUse with Claude Code
Add to your Claude Code MCP config (~/.claude/settings.json):
{
"mcpServers": {
"github-ops": {
"command": "/path/to/github-ops-mcp/.venv/bin/python",
"args": ["-m", "github_ops_mcp.server"]
}
}
}Then ask Claude things like:
"Triage untriaged issues in pallets/flask"
"Show me the PR review dashboard for my-org/my-repo"
"Run a health audit on fastapi/fastapi"
"Find stale PRs in my-org/backend that haven't been touched in 14 days"
Related MCP server: GitHub MCP Agent Server
Tools
Tool | Description |
| Find issues missing labels, assignees, or milestones |
| Apply a label to issues matching a text filter (dry-run by default) |
| Find issues with no activity in N days, grouped by label/assignee |
| Bulk-close labeled issues older than N days (dry-run by default) |
| Open PRs grouped by review status with wait times |
| PRs with no activity in N days |
| CI/check status aggregated across all open PRs |
| Scorecard: branch protection, CODEOWNERS, CI, license, security policy |
| Compare health audits across multiple repos |
| List users and permission levels for a repo or org |
| Find outside collaborators and direct access bypassing teams |
Architecture
GitHub Client (github_client.py): Async HTTP client built on httpx — not a wrapper library like PyGitHub. Supports both REST and GraphQL endpoints, automatic pagination via Link headers, rate limit tracking, and structured error handling.
Why httpx over PyGitHub: Demonstrates understanding of HTTP fundamentals, async patterns, and API design. The client is ~120 lines and does exactly what's needed — no framework overhead.
REST vs GraphQL: REST for writes and simple reads. GraphQL for complex queries that would require multiple REST calls (e.g., PR reviews with check status in a single request).
Pydantic Models (models.py): All tool outputs are typed Pydantic models with human-readable __str__ methods. Claude gets structured data to reason about, not raw JSON dumps.
Rate Limiting: The client reads X-RateLimit-Remaining headers and surfaces clear errors when limits are hit. Works unauthenticated for public repos (60 req/hr) or authenticated with a personal access token (5,000 req/hr).
Development
# Install with dev dependencies
pip install -e ".[dev]"
# Run unit tests
pytest tests/ -v
# Run integration tests (hits real GitHub API)
pytest tests/ -v --integrationLicense
MIT
Available Tools
11 toolsbulk_label_issuesC
Apply a label to all issues matching a text filter. Defaults to dry-run mode.
Inputs: repo (required), label (required), owner (required), filter_text (required), +1 more. Returns: result
close_resolved_issuesB
Bulk-close issues with a specific label that are older than N days. Defaults to dry-run mode.
Inputs: repo (required), label (required), owner (required), older_than_days (required), +2 more. Returns: result
permission_auditC
Audit an org for permission issues: outside collaborators, direct access bypassing teams.
Inputs: owner (required). Returns: result
pr_check_statusA
Aggregate CI/check status across all open PRs — quick 'is anything red' overview.
Inputs: repo (required), owner (required). Returns: result
pr_review_dashboardA
Show open PRs grouped by review status (awaiting, changes requested, approved) with wait times.
Inputs: repo (required), owner (required). Returns: result
repo_compareC
Compare health audit results across multiple repos to find inconsistencies.
Inputs: owner (required), repos (required). Returns: result
repo_health_auditA
Audit a repo for operational hygiene: branch protection, CODEOWNERS, CI, license, security policy.
Inputs: repo (required), owner (required). Returns: result
stale_issue_reportB
Find issues with no activity in N days, grouped by label and assignee.
Inputs: repo (required), owner (required), days. Returns: result
stale_pr_reportB
Find pull requests with no activity in N days.
Inputs: repo (required), owner (required), days. Returns: result
team_access_reviewB
List users and their permission levels for a repo or org. Shows who has admin, write, or read access.
Inputs: owner (required), repo, team. Returns: result
triage_issuesB
Find issues missing labels, assignees, or milestones. Use this to identify untriaged work.
Inputs: repo (required), owner (required), since. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 11 tools
Each tool targets a distinct operational task on GitHub, such as labeling, closing, auditing, or reviewing. Even similar tools like stale_issue_report and triage_issues address different aspects (activity vs. metadata gaps), so there is no risk of confusion.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., bulk_label_issues, repo_health_audit, team_access_review). The naming is predictable and clear.
Eleven tools is an ideal size for a focused operations server, covering a range of common GitHub management tasks without being overwhelming or underdeveloped.
The tool set covers essential ops workflows: bulk actions, audits, stale management, and triage. Minor gaps exist (e.g., no tool for bulk commenting or branch management), but the core ops surface is well-covered.
Maintenance
Related MCP Connectors
Create, deploy, and operate MCP servers directly from your GitHub repositories.
GitHub MCP — wraps the GitHub public REST API (no auth required for public endpoints)
A MCP server built for developers enabling Git based project management with project and personal…
A Model Context Protocol (MCP) application for automated GitHub PR analysis and issue management.…
Related MCP Servers
- AlicenseBqualityBmaintenanceSelf-hosted GitHub MCP server for PR, repo file, and Dependabot operations, supporting multiple MCP clients with personal access token auth.7MIT
- AlicenseBqualityCmaintenanceMCP server that exposes GitHub operations as tools for AI agents, enabling code search, issue management, and PR review.12MIT
- AlicenseCqualityDmaintenanceA production-ready MCP server for GitHub operations, providing tools for repository management, issues, pull requests, and more via both MCP stdio and REST API.27MIT
- AlicenseAqualityDmaintenanceA production-ready MCP server for triaging and reviewing GitHub pull requests via the GitHub REST API, providing typed tools to list, inspect, comment, add labels, and submit reviews.810 npmMIT