The GitHub surface is ordinary; the interesting work is underneath it. Tokens are Fernet-encrypted at rest with automatic expiry and cleanup, and rate-limit handling retries with exponential backoff instead of failing the call — which is what separates a wrapper that survives an agent hammering it from one that does not. Merge strategy is explicit on pull requests, so squash-versus-merge is a decision the caller makes rather than a default it inherits.
A FastMCP server wrapping the GitHub API for repository, pull request and issue work. Tokens are encrypted at rest with Fernet, expire on a TTL, and rate-limit responses are retried automatically with backoff.
- Repository creation and management, branch and commit handling, file create, update and delete, repository search, and commit comparison and history — `create_repository`, `list_commits`
- Pull requests end to end: creation including drafts, merge strategies across merge, squash and rebase, status check validation, and conflict detection — `create_pull_request`
- Issue work: create and update, manage labels and assignees, handle comments, and search and filter
- Commit listing filtered by branch, author and a date range, with a result cap
A GitHub account and a Personal Access Token, supplied as `GITHUB_TOKEN` in a `.env` file at the project root. Python 3.12 or higher. Install with `uv pip install -e .` after creating a virtual environment, then run `uv run main.py`; the client entry points at the repository directory. Tuning lives in a Config class covering token TTL, retry count and delay, and results per page.
One command plus a key — uv pip install -e ., then supply credentials
