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 分