github-mcp-connector

github-mcp-connector

A single static Go binary that exposes GitHub operations (repos, branches, commits, file contents, issues, PRs, and search) as MCP tools, enabling agents to read and write GitHub data with no runtime dependencies.

Category
Visit Server

README

<div align="center">

๐Ÿ”Œ 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

</div>


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.

๐Ÿงฐ 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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured