The coverage is wide enough that most GitHub work never needs a browser — file commits, branch creation, PR review requests and merges are all here — and the two generic REST tools mean an uncovered endpoint is not a dead end, with the write one requiring an explicit confirmation before it fires. The detail worth planning around is the SHA rule: updating or deleting a file needs the current SHA, so a read always precedes a write. Lazy tool loading exists for a real reason — forty-odd schemas is a lot of context to hand a client that only needs to read a file.
A broad GitHub server covering repository exploration and the full issue and pull-request lifecycle, with write operations that commit directly rather than only reading.
- Repository metadata, directory listings, a file's decoded contents with the SHA needed to update it, the README found regardless of casing, and code search within a repository
- Repositories listed for a user or organization, searched globally, created, or forked
- Issues listed, opened in full, created, updated and commented on, with labels created, listed, added, replaced and removed
- Pull requests listed and opened with diff stats and merge status, created, updated, given reviewers and merged
- Commits listed with filters for path, author, branch and date, one commit read with its complete diff, and two refs compared with ahead/behind counts and file changes
- Branches listed with protection status, created from a resolved ref, and deleted
- Files created, updated or deleted by direct commit — updates and deletions requiring the current SHA
- Releases listed with notes and asset URLs, and new ones created; user and organization profiles read
- Two generic tools for anything not covered: an arbitrary REST GET, and an arbitrary REST write guarded behind an explicit confirmation string
- Optional lazy tool loading — groups listed, searched and loaded on demand, so the client is not handed every schema at startup
A GitHub personal access token in GITHUB_TOKEN or GITHUB_PERSONAL_ACCESS_TOKEN — a classic token with repo for private repositories and write operations, public_repo for read-only public access, and read:user for profile lookups. Passing it as a command-line flag is possible but exposes it to anyone who can run ps on the machine. Run it with npx github-mcp-server-kosta over stdio, from the npm package github-mcp-server-kosta, currently 3.1.0. --transport http serves a single Streamable HTTP endpoint, bound to 127.0.0.1 by default; if you bind anywhere else, set --http-auth-token and consider the host and origin allowlists, with --http-require-auth-on-public-bind refusing startup otherwise. An idle timeout exits the process after a period without requests, adjustable through MCP_IDLE_TIMEOUT_MS with 0 disabling it. In lazy tool mode only the bootstrap tools and the preloaded groups are exposed, defaulting to core and search.
One command plus a key — npm install -g github-mcp-server-kosta, then supply credentials
