Ghcli Mcp Connector

io.github.FerhatDundar由 GitHub 帳號 FerhatDundar 發布v0.1.1更新於 Oct 24, 2026

MCP server for the GitHub CLI (gh). Read-only by default; single Go binary.

概覽

AI 產生的概覽

本機 MCP 伺服器,讓助理執行 GitHub CLI(gh)指令,預設唯讀,寫入操作需明確開啟並逐次確認。

可以做什麼
透過單一執行工具執行任意 gh 指令或子指令,涵蓋儲存庫、議題、拉取請求、發行、程式碼片段、工作流程、執行紀錄、密鑰、變數、專案、規則集、程式碼空間、擴充功能以及原始 API 端點,輸出可選 markdown 或 JSON。查詢指令或子指令的 gh 說明文字,以便在執行前確認語法。顯示目前驗證對應的 GitHub 身分。變更狀態的指令預設會被阻擋,除非伺服器允許寫入且該次呼叫確認。
適用情境
適合助理需要超出固定工具集的廣泛 GitHub 操作能力時,例如列出拉取請求、建立議題、觸發工作流程或呼叫 GitHub API。開箱即可唯讀瀏覽儲存庫,僅在需要時才開啟寫入。
執行需求
以本機程序透過 stdio 執行;提供 macOS、Linux 與 Windows 預先建置套件,也可用 Go 從原始碼建置。主機上需安裝並已完成驗證的 gh CLI(gh auth login 或權杖),儲存庫相關指令需明確傳入 owner/repo。選用環境變數:GH_TOKEN 或 GITHUB_TOKEN、GH_HOST(GitHub Enterprise)、GHCLI_MCP_ALLOW_WRITE、GHCLI_MCP_ALLOWED_REPOS 與 GHCLI_MCP_CLI_PATH。
安裝前請注意
GH_TOKEN 或 GITHUB_TOKEN 授予 GitHub 存取權限,不應寫入提交的檔案。將 GHCLI_MCP_ALLOW_WRITE 設為 true 後,助理在呼叫確認後即可變更 GitHub 狀態(建立、編輯、刪除、執行工作流程),應謹慎開啟。儲存庫允許清單僅在呼叫明確傳入儲存庫參數時生效,其他呼叫預設不受限制。指令與資料會傳送到 GitHub。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Ghcli Mcp Connector,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

🔌 ghcli-mcp-connector

Talk to the GitHub CLI (gh) 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 lets an agent run GitHub CLI commands: any gh <command> <subcommand> invocation — repo, issue, pr, release, gist, workflow, run, secret, variable, project, ruleset, codespace, extension, api, and more — with a read-only-by-default safety gate on anything that changes state on GitHub.

No Python, no uv, no runtime dependency to install — just a binary and an .mcp.json. It shells out to the gh binary already installed and authenticated on the host (gh auth login, stored in the OS keychain, or GH_TOKEN/GITHUB_TOKEN) instead of reimplementing a GitHub API client, so it gets the full breadth of the CLI for free rather than a hand-curated subset of endpoints.

Note: this is a sibling of github-mcp-connector, not a replacement. That one talks to the GitHub REST API directly via google/go-github with a curated set of 18 tools. This one shells out to the gh CLI itself — same trade-off as aws-mcp-connector vs. a hand-written AWS SDK client: broader coverage (gh extensions, gh's own filters/formatting, workflow/run/codespace/project/ruleset management) through a single ghcli_exec escape hatch, instead of a curated surface.

✨ Why this exists

An agent that only has a narrow, hand-picked set of GitHub tools hits a wall the moment you need something outside that set. This connector instead wraps the gh CLI itself, so an agent can run gh pr list, gh issue create, gh workflow run, gh api repos/owner/repo/issues — anything the CLI can do — without waiting on a new tool to be written for it. State-changing commands are blocked by default and require both a server-level opt-in and a per-call confirm=true, so exploring/ reading is safe out of the box.

🧰 Tools

ToolWhat it doesWrite?
ghcli_execRun any gh <command> <subcommand> ... command. Read-only by default — commands that change GitHub state need GHCLI_MCP_ALLOW_WRITE=true on the server and confirm=true on the call.✅ (gated)
ghcli_helpShow gh <command> [subcommand] --help text — always safe, use it to check exact syntax before calling ghcli_exec.
ghcli_whoamiShow the GitHub identity (login, name, profile URL) the configured auth resolves to.

Every tool accepts an optional response_format: markdown (default, readable for a chat UI) or json (for programmatic use).

This server has no working-directory git repo, so repo-scoped commands need an explicit -R/--repo owner/repo rather than relying on gh's cwd-based repo detection.

🚀 Quickstart

Fastest path: grab a prebuilt bundle from the latest release — download ghcli-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:

bash
# 1. Buildcd go-servergo mod tidygo build -o ghcli-connector-server .cp ghcli-connector-server ../plugin/servers/go/
# 2. Set up auth — needs the gh CLI itself installed and logged in#    (gh auth login) — see SETUP.mdgh auth status   # should succeed before running the server
# 3. Run./go-server/ghcli-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:

VariablePurposeDefault
GH_TOKEN / GITHUB_TOKENgh CLI's own token env vars. Leave unset to use whatever gh auth login already configured.unset (keychain auth)
GH_HOSTTarget a GitHub Enterprise hostname instead of github.com.unset (github.com)
GHCLI_MCP_ALLOW_WRITE"true" to permit state-changing commands at all (still needs confirm=true per call).false (read-only)
GHCLI_MCP_ALLOWED_REPOSComma-separated allowlist of owner/repo values, e.g. "me/proj,me/other". Only enforced when a call passes an explicit -R/--repo flag.unset (unrestricted)
GHCLI_MCP_CLI_PATHPath to the gh binary.gh resolved via PATH

🧪 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 against real GitHub during development — 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

ghcli-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    ├── skills/ghcli-mcp/SKILL.md ← teaches Claude when/how to use the tools    └── 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

來源:README.md,提交 14b9c4f

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.1最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分