Skip to main content
Glama
FerhatDundar

github-mcp-connector

by FerhatDundar

๐Ÿ”Œ github-mcp-connector

Talk to GitHub from an MCP-speaking agent.

CI CodeQL Latest release MCP Registry Go Reference License: MIT MCP Conventional Commits PRs Welcome


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: GitHub MCP Agent Server

๐Ÿงฐ 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 โ€” 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 stdio

Or 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

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 (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:

  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 via mcp-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

A
license - permissive license
-
quality - not tested
A
maintenance

Maintenance

โ€“Maintainers
โ€“Response time
0dRelease cycle
2Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/FerhatDundar/github-mcp-connector'

If you have feedback or need assistance with the MCP directory API, please join our Discord server