github-mcp-connector
Provides tools for interacting with GitHub, including repository management, branch and commit listing, file content read/write, issue and pull request management, and repository search.
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-mcp-connectorList the open issues for this repo"
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-mcp-connector
Talk to GitHub from an MCP-speaking agent.
A single static Go binary that speaks the Model Context Protocol and exposes 18 tools for working with GitHub: repositories, branches, commits, file contents, issues, pull requests, and search.
No Python, no uv, no runtime dependency to install β just a binary and
an .mcp.json.
β¨ Why this exists
An agent that can only talk about your GitHub repos isn't that useful. This gives it hands: it can read and write files in a repo, open and triage issues, push a branch and open a PR, and merge it β all against the real GitHub API, with the same guardrails (size caps, friendly errors, destructive-action annotations) as the sibling connectors.
Related MCP server: ghcli-mcp-connector
π§° Tools
Tool | What it does | Write? |
| Get the user authenticated by | |
| List repos for a user/org, or the authenticated user | |
| Get one repository's details | |
| Create a new repository | βοΈ |
| List branches in a repository | |
| List commits, optionally filtered by branch/path | |
| Read a file's content, or list a directory | |
| Create/update a file via a commit (β€ 5 MB) | βοΈ |
| List issues in a repository | |
| Get one issue's full details | |
| Create a new issue | βοΈ |
| Update an issue's title/body/state/labels | βοΈ |
| Comment on an issue or PR | βοΈ |
| List pull requests | |
| Get one PR's full details, incl. diff stats | |
| Open a pull request | βοΈ |
| Merge a pull request | ποΈ destructive |
| Search repositories with GitHub search qualifiers |
Every tool accepts an optional response_format: markdown (default,
pretty tables for a chat UI) or json (for programmatic use).
π Quickstart
Fastest path: grab a prebuilt bundle from the latest release β
download github-mcp-connector-plugin-<version>-<os>-<arch>.zip, unzip it,
and point Cowork/Claude at the plugin/ folder inside (see step 4 of
SETUP.md). No Go toolchain required.
From source:
# 1. Build
cd go-server
go mod tidy
go build -o github-connector-server .
cp github-connector-server ../plugin/servers/go/
# 2. Set up auth β a personal access token, see SETUP.md
export GITHUB_TOKEN=ghp_...
# 3. Run
./go-server/github-connector-server # serves MCP over stdioOr make build β see the Makefile for every shortcut
(test, vet, fmt, lint, tidy).
Full walkthrough β including wiring this up as a Claude/Cowork plugin β is in SETUP.md.
π Configuration
Everything is environment variables, passed through by the plugin's
.mcp.json:
Variable | Purpose | Default |
| Personal access token (classic or fine-grained). Needs | β (required) |
| GitHub Enterprise Server API base URL, e.g. | (unset β github.com) |
π§ͺ Quality bar
This isn't a toy script β it's got the same checks you'd expect from a production Go service:
β Unit tests for every input-validation path (
go test ./...)β
go vet+gofmtcleanβ golangci-lint (govet, staticcheck, errcheck, gosec, and more)
β govulncheck β no known vulnerabilities in the dependency graph
β CodeQL static security analysis on every push
β End-to-end verified β every tool (repos, branches, commits, file read/write, issues, comments, PRs, merge, search) was exercised against a real, dedicated GitHub sandbox repo, not mocks
β Dependabot keeps Go modules and Actions current
All of it runs in CI on every push and PR.
π·οΈ Releases & versioning
Versions follow semver and are cut automatically by
release-please from
Conventional Commits on main:
fix: ...β patch (v0.1.0βv0.1.1)feat: ...β minor (v0.1.1βv0.2.0)feat!: .../BREAKING CHANGE:footer β major (v0.2.0βv1.0.0)
Every merged PR updates a standing "chore(main): release vX.Y.Z" PR with an auto-generated CHANGELOG.md. Merging that PR:
tags the release and publishes it on GitHub
builds and attaches zipped, ready-to-install plugin bundles for linux/darwin/windows Γ amd64/arm64
regenerates
server.jsonfrom those exact assets (fresh version + SHA-256 hashes) and publishes it to the official MCP Registry viamcp-publisher, authenticated with GitHub OIDC β no stored secrets
See .github/workflows/release-please.yml
and .github/workflows/publish-mcp-registry.yml
(also runnable by hand for an existing tag via workflow_dispatch).
π Layout
github-mcp-connector/
βββ README.md β you are here
βββ SETUP.md β step-by-step setup guide
βββ CONTRIBUTING.md β how to contribute
βββ CODE_OF_CONDUCT.md
βββ SECURITY.md β vulnerability reporting
βββ CODEOWNERS
βββ LICENSE β MIT
βββ Makefile β build / test / lint shortcuts
βββ .golangci.yml β lint rules
βββ release-please-config.json β semver/changelog automation config
βββ .release-please-manifest.json
βββ server.json β MCP Registry manifest (regenerated fresh per release by CI)
βββ scripts/
β βββ render-server-json.sh β rebuilds server.json from a release's zip assets
βββ .github/
β βββ workflows/
β β βββ ci.yml β build, vet, test, lint, govulncheck
β β βββ codeql.yml β security scanning
β β βββ pr-title.yml β Conventional Commits PR title check
β β βββ release-please.yml β version PRs, tagging, GitHub releases
β β βββ publish-mcp-registry.yml β publishes server.json to the MCP Registry
β β βββ rebuild-release-assets.yml β manual re-attach fallback
β βββ ISSUE_TEMPLATE/
β βββ PULL_REQUEST_TEMPLATE.md
β βββ dependabot.yml
βββ go-server/ β the MCP server source
β βββ main.go
β βββ main_test.go
β βββ go.mod / go.sum
β βββ README.md
βββ plugin/ β installable Cowork/Claude plugin
βββ .claude-plugin/plugin.json
βββ .mcp.json β holds credentials locally β never commit real ones
βββ servers/go/ β compiled binary goes hereπ€ Contributing
PRs and issues are very welcome β see CONTRIBUTING.md for the full guide (setup, coding conventions, how to add a new tool) and the Code of Conduct.
main is protected: every change, including the maintainer's, lands via
pull request with CI green. PR titles must follow
Conventional Commits β that's what
drives the automatic versioning above.
Found a security issue? Please follow SECURITY.md instead of opening a public issue.
π License
MIT Β© FerhatDundar
This server cannot be deployed
Maintenance
Related MCP Connectors
Access the GitHub API, enabling file operations, repository management, search functionality, andβ¦
Search GitHub, npm, PyPI, StackOverflow, ArXiv from one MCP β built for coding agents.
GitHub MCP β wraps the GitHub public REST API (no auth required for public endpoints)
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
Related MCP Servers
- AlicenseBqualityCmaintenanceMCP server that exposes GitHub operations as tools for AI agents, enabling code search, issue management, and PR review.12MIT
- AlicenseNot gradedqualityAmaintenanceghcli-mcp-connector is an MCP server that lets agents run any GitHub CLI (gh) commandβrepos, issues, PRs, releases, workflows, gists, and moreβas a single static Go binary with a read-only-by-default safety gate on state-changing operations.MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that wraps the GitHub REST API into tools for repo queries, issue/PR management, code review, search, and authentication, letting coding agents operate GitHub directly in conversations.2 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables MCP-compatible LLM clients to query GitHub repository dataβcommits, issues, contributor stats, and code searchβas typed callable tools over stdio.-