MCP server for GitHub: repos, files, issues, PRs, search. Single Go binary.
git clone https://github.com/FerhatDundar/github-mcp-connector{
"mcpServers": {
"github-mcp-connector": {
"command": "github-mcp-connector",
"env": {
"GITHUB_TOKEN": "<github_token>"
}
}
}
}GITHUB_TOKENMCP Servers overview
<div align="center">
# 🔌 github-mcp-connector
**Talk to GitHub from an MCP-speaking agent.**
[](https://github.com/FerhatDundar/github-mcp-connector/actions/workflows/ci.yml)
[](https://github.com/FerhatDundar/github-mcp-connector/actions/workflows/codeql.yml)
[](https://github.com/FerhatDundar/github-mcp-connector/releases/latest)
[](https://registry.modelcontextprotocol.io/?q=github-mcp-connector)
[](https://go.dev/)
[](LICENSE)
[](https://modelcontextprotocol.io/)
[](https://www.conventionalcommits.org/)
[](CONTRIBUTING.md)
</div>
---
A single static Go binary that speaks the [Model Context Protocol](https://modelcontextprotocol.io/)
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.
## 🧰 Tools
| Tool | What it does | Write? |
|---|---|:---:|
| `github_whoami` | Get the user authenticated by `GITHUB_TOKEN` | |
| `github_list_repos` | List repos for a user/org, or the authenticated user | |
| `github_get_repo` | Get one repository's details | |
| `github_create_repo` | Create a new repository | ✍️ |
| `github_list_branches` | List branches in a repository | |
| `github_list_commits` | List commits, optionally filtered by branch/path | |
| `github_get_file_contents` | Read a file's content, or list a directory | |
| `github_create_or_update_file` | Create/update a file via a commit (≤ 5 MB) | ✍️ |
| `github_list_issues` | List issues in a repository | |
| `github_get_issue` | Get one issue's full details | |
| `github_create_issue` | Create a new issue | ✍️ |
| `github_update_issue` | Update an issue's title/body/state/labels | ✍️ |
| `github_add_issue_comment` | Comment on an issue or PR | ✍️ |
| `github_list_pull_requests` | List pull requests | |
| `github_get_pull_request` | Get one PR's full details, incl. diff stats | |
| `github_create_pull_request` | Open a pull request | ✍️ |
| `github_merge_pull_request` | Merge a pull request | 🗑️ destructive |
| `github_search_repositories` | 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](https://github.com/FerhatDundar/github-mcp-connector/releases/latest) —
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](SETUP.md)). No Go toolchain required.
**From source:**
```bash
# 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 stdio
```
Or `make build` — see the [Makefile](Makefile) for every shortcut
(`test`, `vet`, `fmt`, `lint`, `tidy`).
Full walkthrough — including wiring this up as a Claude/Cowork plugin — is
in **[SETUP.md](SETUP.md)**.
## 🔐 Configuration
Everything is environment variables, passed through by the plugin's
`.mcp.json`:
| Variable | Purpose | Default |
|---|---|---|
| `GITHUB_TOKEN` | Personal access token (classic or fine-grained). Needs `repo`/`public_repo` and `read:org` scopes depending on what you use it for. | — (required) |
| `GITHUB_API_URL` | GitHub Enterprise Server API base URL, e.g. `https://github.example.com/api/v3`. | *(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`** + **`gofmt`** clean
- ✅ **[golangci-lint](https://golangci-lint.run/)** (govet, staticcheck, errcheck, gosec, and more)
- ✅ **[govulncheck](https://go.dev/blog/vuln)** — no known vulnerabilities in the dependency graph
- ✅ **[CodeQL](https://codeql.github.com/)** 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](.github/dependabot.yml)** keeps Go modules and Actions current
All of it runs in [CI](.github/workflows/ci.yml) on every push and PR.
## 🏷️ Releases & versioning
Versions follow [semver](https://semver.org/) and are cut automatically by
[release-please](https://github.com/googleapis/release-please) from
[Conventional Commits](https://www.conventionalcommits.org/) 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](CHANGELOG.md). Merging that PR:
1. tags the release and publishes it on GitHub
2. builds and attaches zipped, ready-to-install plugin bundles for
linux/darwin/windows × amd64/arm64
3. regenerates `server.json` from those exact assets (fresh version +
SHA-256 hashes) and publishes it to the
[official MCP Registry](https://registry.modelcontextprotocol.io/) via
`mcp-publisher`, authenticated with GitHub OIDC — no stored secrets
See [.github/workflows/release-please.yml](.github/workflows/release-please.yml)
and [.github/workflows/publish-mcp-registry.yml](.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](CONTRIBUTING.md)**
for the full guide (setup, coding conventions, how to add a new tool) and
the **[Code of Conduct](CODE_OF_CONDUCT.md)**.
`main` is protected: every change, including the maintainer's, lands via
pull request with CI green. PR titles must follow
[Conventional Commits](https://www.conventionalcommits.org/) — that's what
drives the automatic versioning above.
Found a security issue? Please follow **[SECURITY.md](SECURITY.md)**
instead of opening a public issue.
## 📄 License
[MIT](LICENSE) © FerhatDundar
What people ask about github-mcp-connector
What is FerhatDundar/github-mcp-connector?
+
FerhatDundar/github-mcp-connector is mcp servers for the Claude AI ecosystem. MCP server for GitHub: repos, files, issues, PRs, search. Single Go binary. It has 0 GitHub stars and was last updated today.
How do I install github-mcp-connector?
+
You can install github-mcp-connector by cloning the repository (https://github.com/FerhatDundar/github-mcp-connector) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is FerhatDundar/github-mcp-connector safe to use?
+
FerhatDundar/github-mcp-connector has not been audited yet by our security agent. Review the original repository on GitHub before using it in production.
Who maintains FerhatDundar/github-mcp-connector?
+
FerhatDundar/github-mcp-connector is maintained by FerhatDundar. The last recorded GitHub activity is from today, with 0 open issues.
Are there alternatives to github-mcp-connector?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy github-mcp-connector to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/ferhatdundar-github-mcp-connector)<a href="https://claudewave.com/repo/ferhatdundar-github-mcp-connector"><img src="https://claudewave.com/api/badge/ferhatdundar-github-mcp-connector" alt="Featured on ClaudeWave: FerhatDundar/github-mcp-connector" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!