Add it to Claude Code
claude mcp add -e "GITHUB_APP_PRIVATE_KEY=${GITHUB_APP_PRIVATE_KEY}" -e "GITHUB_APP_ID=${GITHUB_APP_ID}" -e "GITHUB_INSTALLATION_ID=${GITHUB_INSTALLATION_ID}" git-steer -- npx -y git-steerGITHUB_APP_PRIVATE_KEYGITHUB_APP_IDGITHUB_INSTALLATION_IDMake your agent remember this setup
git-steer's config, env vars, and the gotchas you hit — recalled in every future Claude Code, Cursor, and Codex session.
npx conare@latestFree · one command · indexes the sessions already on disk. Set up in the browser instead →
What it does
- Autonomous control over GitHub repositories, branches, and security alerts
- Zero-local-footprint architecture using GitHub as the state database
- Rate-limit-hardened API interactions with ETag caching and GraphQL batching
- Ephemeral cloud-based execution for dependency fixes and linting
- Audit logging and configuration management via a private state repository
Tools 5
repository_managementManage GitHub repositories including creation and configuration settings.branch_operationsPerform branch management tasks such as creation, deletion, and protection.pull_request_workflowsManage pull request lifecycles including creation and review automation.security_scanningExecute security sweeps and manage alerts across repositories.actions_managementControl and monitor GitHub Actions workflows.Environment Variables
GITHUB_APP_PRIVATE_KEYrequiredPrivate key for the GitHub App authentication.GITHUB_APP_IDrequiredThe ID of the GitHub App.GITHUB_INSTALLATION_IDrequiredThe installation ID for the GitHub App.Try it
Original README from ry-ops/git-steer
git-steer
Self-hosting GitHub autonomy engine. A skid steer for your repos.
git-steer gives you autonomous control over your GitHub account through a Model Context Protocol (MCP) server. Manage repos, branches, security, Actions -- everything -- through natural language. Rate-limit-hardened from the ground up: ETag caching, GraphQL batching, concurrency caps, and chunked execution keep it well inside GitHub's API guardrails at any fleet size.
Passed TAEM Phase 04 gate review after two remediation cycles covering security, architecture, and test coverage.
Philosophy: Zero Footprint
Your machine steers. GitHub does everything else.
Nothing lives locally -- no cloned repos, no config files, no build artifacts. git-steer treats your PC or Mac as a thin control plane and GitHub as the entire runtime.
- Zero local code: No repos cloned, no
node_modules, no lock files - Keychain only: GitHub App credentials in macOS Keychain -- nothing else on disk
- Git as database: All config, state, and audit logs live in a private GitHub repo
- Actions as compute: Dependency fixes, linting, and PRs happen in ephemeral cloud runners
- Rate-limit-hardened: Throttle/retry plugins, ETag caching, GraphQL batching, concurrency caps -- safe at any fleet size
+-----------------------------------------------------------------+
| YOUR PC or MAC |
| |
| Keychain: |
| - GitHub App private key |
| - App ID / Installation ID |
| |
| $ npx git-steer (stdio -> Claude Desktop) |
| $ npx git-steer --http (portal -> localhost:3333) |
| | |
| +-> Pulls itself from ry-ops/git-steer |
| +-> Pulls state from ry-ops/git-steer-state |
| +-> Runs MCP server in-memory (rate-limit-aware) |
| +-> Commits state changes back on shutdown |
| |
+-----------------------------------------------------------------+
|
Throttled, ETag-cached,
GraphQL-batched API calls
|
v
+-----------------------------------------------------------------+
| GITHUB |
| |
| ry-ops/git-steer (source of truth for code) |
| | |
| ry-ops/git-steer-state (private repo) |
| +-- config/ |
| | +-- policies.yaml (branch protection templates) |
| | +-- schedules.yaml (job definitions) |
| | +-- managed-repos.yaml (what git-steer controls) |
| +-- state/ |
| | +-- jobs.jsonl (job history, append-only) |
| | +-- audit.jsonl (action log + rate telemetry) |
| | +-- rfcs.jsonl (RFC lifecycle tracking) |
| | +-- quality.jsonl (linter/SAST results) |
| | +-- cache.json (ETag map + sweep cursor) |
| +-- .github/workflows/ |
| +-- heartbeat.yml (scheduled triggers) |
| |
+-----------------------------------------------------------------+
Architecture
Tool Module System
The MCP server is split into per-domain tool modules under src/mcp/tools/. Each module exports getTools() (tool definitions) and handleCall() (tool execution). The server collects tools from all modules at startup and dispatches via a name-to-handler map.
src/mcp/
+-- server.ts # MCP protocol, transport init, tool dispatch (~600 lines)
+-- permissions.ts # Destructive tool registry, dry-run defaults
+-- tools/
+-- index.ts # Re-exports all domain modules
+-- types.ts # Shared ToolDeps interface
+-- repos.ts # Repository management (8 tools)
+-- branches.ts # Branch operations (3 tools)
+-- prs.ts # Pull request workflows (3 tools -- was 5 with dedup)
+-- security.ts # Security scanning and sweeps (7 tools)
+-- actions.ts # GitHub Actions (3 tools)
+-- ops.ts # Observability, co