GitHub CLI를 통해 AI agent가 GitHub issue, pull request, project board, repository, release 및 Actions를 관리할 수 있도록 지원합니다.
다른 이름 craft-agent/github-tools, @craftsamo/github-tools
- 스타
- 0
- Tools
- 59
- 다운로드, 30일
- 3,792
- 최신 버전
- 0.15.0
- 마지막 커밋
- 2026년 11월 13일
- 라이선스
- —
github-tools MCP란?
github-tools은(는) MCP server입니다. GitHub CLI를 통해 AI agent가 GitHub issue, pull request, project board, repository, release 및 Actions를 관리할 수 있도록 지원합니다. 59개 도구를 제공합니다. 예: github_issue_read, github_issue_create, github_issue_edit.
프로젝트 README에서 생성된 요약
github-tools MCP server 정보
github-tools를 사용하면 AI agent가 issue, pull request, project board, repository, release 및 Actions에 직접 접근하여 GitHub 워크플로우를 관리할 수 있습니다. 이 MCP server는 GitHub CLI를 활용하여 코딩 agent가 복잡한 관리 및 개발 작업을 수행할 수 있도록 돕습니다. Claude Code, Codex, Grok Build, Antigravity, Hermes Agent를 포함한 다양한 agent 환경과 npx를 사용하는 표준 MCP host에서 사용할 수 있도록 설계되었습니다.
실행을 위해서는 Node.js 24 이상의 버전과 인증이 완료된 GitHub CLI가 필요합니다. 사용자는 설정값을 통해 issue나 pull_requests와 같은 특정 도구 세트를 선택하여 agent의 기능을 커스텀할 수 있습니다. 이러한 세밀한 제어를 통해 agent가 특정 작업에 필요한 GitHub 기능에만 접근하도록 보장합니다. 구현 방식은 매우 유연하며, host harness에 따라 native npm package, Python plugin 또는 직접적인 MCP server 연결 등 다양한 전달 방식을 지원합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
github-tools MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 github-tools MCP 설치
$ claude mcp add github-tools -- npx -y @craftsamo/github-toolsCursor에 github-tools MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"github-tools": {
"command": "npx",
"args": [
"-y",
"@craftsamo/github-tools"
]
}
}
}VS Code에 github-tools MCP 설치
.vscode/mcp.json
{
"servers": {
"github-tools": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@craftsamo/github-tools"
]
}
}
}VS Code CLI에 github-tools MCP 설치
$ code --add-mcp '{"name":"github-tools","type":"stdio","command":"npx","args":["-y","@craftsamo/github-tools"]}'Claude Desktop에 github-tools MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"github-tools": {
"command": "npx",
"args": [
"-y",
"@craftsamo/github-tools"
]
}
}
}Codex에 github-tools MCP 설치
$ codex mcp add github-tools -- npx -y @craftsamo/github-toolsCodex config.toml에 github-tools MCP 설치
~/.codex/config.toml
[mcp_servers.github-tools] command = "npx" args = ["-y", "@craftsamo/github-tools"]
Gemini CLI에 github-tools MCP 설치
$ gemini mcp add -s user github-tools npx -- -y @craftsamo/github-toolsGemini settings.json에 github-tools MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"github-tools": {
"command": "npx",
"args": [
"-y",
"@craftsamo/github-tools"
]
}
}
}github-tools MCP 도구 59
README에서 감지됨github_issue_readgithub_issue_creategithub_issue_editgithub_issue_commentgithub_issue_closegithub_issue_reopengithub_issue_relategithub_issue_developgithub_pr_readgithub_pr_creategithub_pr_editgithub_pr_comment
| github_issue_read | — | |
| github_issue_create | — | |
| github_issue_edit | — | |
| github_issue_comment | — | |
| github_issue_close | — | |
| github_issue_reopen | — | |
| github_issue_relate | — | |
| github_issue_develop | — | |
| github_pr_read | — | |
| github_pr_create | — | |
| github_pr_edit | — | |
| github_pr_comment | — |
도구 59개 모두 보기도구 수 줄이기
github_pr_reviewgithub_pr_readygithub_pr_closegithub_pr_reopengithub_pr_mergegithub_stack_readgithub_stack_linkgithub_stack_unlinkgithub_project_readgithub_project_creategithub_project_field_ensuregithub_project_view_ensuregithub_project_linkgithub_project_unlinkgithub_project_item_addgithub_project_item_creategithub_project_item_editgithub_project_item_archivegithub_project_item_unarchivegithub_project_item_convertgithub_repo_readgithub_repo_creategithub_repo_editgithub_repo_visibilitygithub_repo_archivegithub_repo_unarchivegithub_label_readgithub_label_creategithub_label_editgithub_label_deletegithub_milestone_readgithub_milestone_creategithub_milestone_editgithub_ruleset_readgithub_ruleset_creategithub_ruleset_editgithub_ruleset_deletegithub_release_readgithub_release_creategithub_release_editgithub_release_publishgithub_release_deletegithub_workflow_readgithub_run_readgithub_workflow_rungithub_run_rerungithub_run_cancel
| github_pr_review | — | |
| github_pr_ready | — | |
| github_pr_close | — | |
| github_pr_reopen | — | |
| github_pr_merge | — | |
| github_stack_read | — | |
| github_stack_link | — | |
| github_stack_unlink | — | |
| github_project_read | — | |
| github_project_create | — | |
| github_project_field_ensure | — | |
| github_project_view_ensure | — | |
| github_project_link | — | |
| github_project_unlink | — | |
| github_project_item_add | — | |
| github_project_item_create | — | |
| github_project_item_edit | — | |
| github_project_item_archive | — | |
| github_project_item_unarchive | — | |
| github_project_item_convert | — | |
| github_repo_read | — | |
| github_repo_create | — | |
| github_repo_edit | — | |
| github_repo_visibility | — | |
| github_repo_archive | — | |
| github_repo_unarchive | — | |
| github_label_read | — | |
| github_label_create | — | |
| github_label_edit | — | |
| github_label_delete | — | |
| github_milestone_read | — | |
| github_milestone_create | — | |
| github_milestone_edit | — | |
| github_ruleset_read | — | |
| github_ruleset_create | — | |
| github_ruleset_edit | — | |
| github_ruleset_delete | — | |
| github_release_read | — | |
| github_release_create | — | |
| github_release_edit | — | |
| github_release_publish | — | |
| github_release_delete | — | |
| github_workflow_read | — | |
| github_run_read | — | |
| github_workflow_run | — | |
| github_run_rerun | — | |
| github_run_cancel | — |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식 · 점수를 높이기 위해 수정할 항목
- 소스 저장소 연결 및 접근 가능craft-agent/github-tools is public and reachablegithub.com/craft-agent/github-tools ↗통과
- 패키지가 이 저장소를 소스로 명시@craftsamo/github-tools names craft-agent/github-tools as sourcenpmjs.com/package/@craftsamo/github-tools ↗통과
- 빌드 출처(Sigstore 증명)Sigstore attestation for @craftsamo/github-toolsnpmjs.com/package/@craftsamo/github-tools/v/0.15.0#provenanc ↗통과
- 오픈 소스 라이선스 (OSI)No license결함 발견
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-13github.com/craft-agent/github-tools ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from @craftsamo/github-tools통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음the package checked; no critical advisoryosv.dev ↗통과
- 모델에 대한 숨겨진 지침 없음59 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨No tool named like delete, drop or exec통과
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기github-tools
GitHub tools for coding agents: issues, boards, pull requests, repositories, releases and Actions.
The tools cover issues, project boards, pull requests and native stacks, repositories, releases and Actions, through the GitHub CLI. One implementation, delivered to each agent harness in the form that suits it best.
| Harness | Delivery | Pinned by |
|---|---|---|
| OpenCode V2 | native plugin (npm package, with skills) | the version in the package |
| OpenCode V1 | native plugin (npm package, no skills) | the version in the package |
| Claude Code | plugin: MCP server and skills | the release tag, as the ref |
| Codex | plugin: MCP server and skills | the release tag, as the ref |
| Grok Build | plugin: MCP server and skills | the release tag, as @ref |
| Antigravity | plugin: MCP server and skills | the release tag's tree URL |
| Hermes Agent | native plugin (Python, calls the command line) | the release commit, as the SHA |
| other MCP host | MCP server from npm | the version in the package |
0.3.0 moved the package from craftsamo/agent-github to craft-agent/github-tools and renamed it: npm @craftsamo/github-tools (was @craftsamo/agent-github, now removed from npm), plugin and MCP server github-tools, programs github-tools and github-tools-cli, settings GITHUB_TOOLS_*. Allow rules, plugin installs and MCP configurations written for 0.2.0 change; the tool IDs do not.
The tools need Node.js 24 or later and the
GitHub CLI, authenticated as you.
docs/conventions.md describes how the tools are named
and how they behave.
Install
Install from a release, never from the default branch: a release is a tag whose
commit carries the built dist/, and the default branch does not. In the
commands below, <version> is a release's version (1.2.3) and <sha> is the
commit its tag names:
gh api repos/craft-agent/github-tools/commits/v<version> --jq .sha
OpenCode
OpenCode V2 takes the package and its options in opencode.json:
{
"plugins": [
{
"package": "@craftsamo/github-tools@<version>",
"options": { "toolsets": ["issues", "pull_requests", "projects"] }
}
],
"permissions": [{ "action": "github_*", "resource": "*", "effect": "ask" }]
}
OpenCode V1 takes the package as a string, or as a pair with its options:
{
"plugin": [["@craftsamo/github-tools@<version>", { "toolsets": ["issues", "pull_requests", "projects"] }]],
"permission": { "github_*": "ask" }
}
OpenCode allows any action no rule names, so the plugin's request is granted
silently unless a rule says ask. Read tools never ask, so the github_* glob
is safe.
V1 registers no skills. Unpack the package and copy its skills/* folders into
~/.config/opencode/skills/:
npm pack @craftsamo/github-tools@<version>
tar -xzf craftsamo-github-tools-<version>.tgz
mkdir -p ~/.config/opencode/skills
cp -r package/skills/* ~/.config/opencode/skills/
rm -rf package craftsamo-github-tools-<version>.tgz
Claude Code
claude plugin marketplace add craft-agent/github-tools#v<version>
claude plugin install github-tools@craft-agent
Codex
codex plugin marketplace add craft-agent/github-tools --ref v<version>
codex plugin add github-tools@craft-agent
Codex turns - into _ in server names, so it shows the tools as
mcp__github_tools__github_issue_*. It starts the MCP server in the plugin's
install directory and passes no roots, so the server takes each call's directory
from what Codex sends with the call: its sandbox state, which the server asks
for, else the one workspace it names.
The plugin declares default_tools_approval_mode = "writes": Codex asks before
every tool not marked read-only. A user's
[plugins."<plugin>".mcp_servers.<server>] setting can only tighten it. Setting
auto there yields prompt (reads asked too), since Codex treats auto and
writes as incomparable.
Grok Build
grok plugin install craft-agent/github-tools@v<version> --trust
Grok starts the MCP server in the session's working directory, so inside a clone a bare issue number names an issue of that repository.
Antigravity
Install from the tree of the release tag, never from the default branch, which
has no built dist/; Antigravity clones the tag into
~/.gemini/config/plugins/github-tools.
agy plugin install https://github.com/craft-agent/github-tools/tree/v<version>
Hermes Agent
Hermes installs a commit, not a tag, and the plugin installs disabled:
hermes plugins install craft-agent/github-tools --ref <sha>
hermes plugins enable github-tools
If a Hermes gateway is already running, restart it (hermes gateway restart) to
load the plugin.
The plugin runs the Node it found when Hermes started. If a version manager
removes that version while Hermes runs, a call looks for Node again; when it
finds none, restart Hermes from a shell where node runs.
Any other MCP host
Add the server to the host's MCP configuration. Flags go in args:
{
"mcpServers": {
"github-tools": {
"command": "npx",
"args": ["-y", "@craftsamo/github-tools@<version>", "--toolsets", "issues,pull_requests,projects"]
}
}
}
Tools and skills
Each toolset comes with a skill that tells an agent how to use its tools. A
skill names its toolset under metadata in its frontmatter
(metadata: { toolset: issues }, written as a block). OpenCode V2 and Hermes
register it only when the settings register at least one of that toolset's
tools, so a profile with the toolset off, or with all its tools removed, does
not see it; a skill without a toolset is always registered. Claude Code,
Codex, Grok Build and Antigravity install the skill folder whole and pass the
settings only to the MCP server, so they list every skill whatever the
settings select. OpenCode V1 registers no skills, and its copied skills are
all listed too.
Issues (issues)
| Tool | What it does | Class |
|---|---|---|
github_issue_read |
view one issue in full, or list a repository's issues or a parent's sub-issues, with their issue fields |
read |
github_issue_create |
create an issue with its kind, labels, assignees, milestone, parent and blocked-by issues, issue fields and a board | add |
github_issue_edit |
change the title, body (or append to it), kind, labels, assignees, milestone or issue fields | overwrite |
github_issue_comment |
comment on an issue | add |
github_issue_close |
close with a reason (completed, not_planned, duplicate) |
overwrite |
github_issue_reopen |
reopen a closed issue | overwrite |
github_issue_relate |
set the parent, sub-issues, blocked-by and blocking issues, sending only what differs | idempotent |
github_issue_develop |
create a branch on GitHub linked to the issue, or return the one already linked | idempotent |
The skill is github-issues, shown as
github-tools:github-issues in Claude Code and github-tools:issues in Hermes.
An issue's kind is the organization's Issue Type of that name when it defines
one, otherwise a type:<kind> label. Issue fields (Priority, Effort, Start
date, Target date and any others) are the organization's own, so only an
organization's repositories have them; list filters by one with
field.<name>:<value> in query.
Pull requests and stacks (pull_requests)
| Tool | What it does | Class |
|---|---|---|
github_pr_read |
view one pull request in full, list a repository's pull requests, read its checks (waiting up to 45 seconds, with failed job logs) or its diff |
read |
github_pr_create |
open a pull request from a pushed branch, with labels, assignees, reviewers, milestone, closing issues, a board and attachments | add |
github_pr_edit |
change the title, body (or append to it), base, labels, assignees, reviewers, milestone or closing issues | overwrite |
github_pr_comment |
comment, with attachments | add |
github_pr_review |
approve, request changes or comment, with line comments | add |
github_pr_ready |
mark ready for review, or turn back into a draft | idempotent |
github_pr_close |
close | overwrite |
github_pr_reopen |
reopen a closed pull request | overwrite |
github_pr_merge |
merge, with the open layers below it in a stack when asked | administrative |
github_stack_read |
view a native stack by its number or a pull request in it, or list a repository's stacks |
read |
github_stack_link |
join pull requests into a stack, or add them on top of one | idempotent |
github_stack_unlink |
dissolve a stack, leaving its pull requests open | overwrite |
The skill is
github-pull-requests, shown as
github-tools:github-pull-requests in Claude Code and
github-tools:pull-requests in Hermes. The tools do not push: push the branch
first and pass the commit it pushed as head_sha, so a pull request opens, is
reviewed or merges on exactly that commit. Closing issues are kept as Closes #N lines in the body, since GitHub has no other way to link them. Stacks use
GitHub's REST stack endpoints, so the gh stack extension is not needed.
Attachments need gh 2.99 or newer.
Project boards (projects)
| Tool | What it does | Class |
|---|---|---|
github_project_read |
view a board with its fields and views, list boards, or item_list a board's items |
read |
github_project_create |
create a board, or reuse the one of that title, with the standard fields and views | idempotent |
github_project_field_ensure |
add a field, or the missing options of a single select | idempotent |
github_project_view_ensure |
add a saved view with its fields, columns, grouping and sort | idempotent |
github_project_link |
link a board to a repository of the same owner | idempotent |
github_project_unlink |
unlink a board from a repository | idempotent |
github_project_item_add |
put an issue or pull request on a board, or return its item, with field values | idempotent |
github_project_item_create |
create a draft item with field values | add |
github_project_item_edit |
set or clear field values, and change a draft's title and body | overwrite |
github_project_item_archive |
archive an item | overwrite |
github_project_item_unarchive |
bring an archived item back | overwrite |
github_project_item_convert |
turn a draft into an issue, with its kind, labels and milestone | add |
The skill is
github-projects, shown as
github-tools:github-projects in Claude Code and github-tools:projects in
Hermes. A board is named by its number, owner/N, URL or title (Roadmap when
none is given), and found among the boards linked to the repository, then its
organization's, then the viewer's. The token needs the project scope
(gh auth refresh -s project). No API sets a roadmap view's date fields, so
after github_project_create set the Roadmap view's "Date fields" to Start and
Target in the web UI. A column that mirrors an organization's issue field is
read like any other, but its value is the issue's own: the board tools refuse
to set or clear it, and github_issue_edit does both.
github_project_field_ensure with issue_field: true adds such a column, and
github_project_create with dates: "issue_fields" uses the issue fields Start
date and Target date as an organization board's dates.
Repositories (repos)
| Tool | What it does | Class |
|---|---|---|
github_repo_read |
view a repository's settings, features, merge settings and the viewer's permission, or list an owner's repositories |
read |
github_repo_create |
create a repository, empty or from a template | administrative |
github_repo_edit |
change the description, homepage, default branch, topics, features or merge settings | overwrite |
github_repo_visibility |
make a repository public, private or internal | administrative |
github_repo_archive |
archive a repository | administrative |
github_repo_unarchive |
unarchive a repository | overwrite |
github_label_read |
list a repository's labels |
read |
github_label_create |
create a label | add |
github_label_edit |
rename, recolor or redescribe a label | overwrite |
github_label_delete |
delete a label, removing it from every issue and pull request | administrative |
github_milestone_read |
list a repository's milestones, with progress |
read |
github_milestone_create |
create a milestone | add |
github_milestone_edit |
change a milestone's title, due date or description, or close or reopen it | overwrite |
github_ruleset_read |
list the rulesets and classic branch protection, or view one ruleset |
read |
github_ruleset_create |
create a ruleset with its refs, rules and bypass actors | administrative |
github_ruleset_edit |
replace parts of a ruleset, stopping as stale when it changed since it was read |
administrative |
github_ruleset_delete |
delete a ruleset | administrative |
The toolset is off by default: add repos to toolsets. The skill is
github-repos, shown as
github-tools:github-repos in Claude Code and github-tools:repos in Hermes.
Most settings changes need admin permission on the repository, and rulesets on
a private repository need a paid plan. Deleting, renaming, transferring or
forking a repository is left to the user.
Releases (releases)
| Tool | What it does | Class |
|---|---|---|
github_release_read |
list a repository's releases, drafts included, or view one by tag with its notes and commit |
read |
github_release_create |
create a draft release, optionally with generated notes | add |
github_release_edit |
change the title, notes, prerelease flag, latest status or a draft's target | overwrite |
github_release_publish |
publish a draft, stopping as stale when its commit differs from head_sha |
administrative |
github_release_delete |
delete a release and its assets, keeping its tag | administrative |
The toolset is off by default: add releases to toolsets. The skill is
github-releases, shown as
github-tools:github-releases in Claude Code and github-tools:releases in
Hermes. A new release is always a draft; assets are not covered yet.
Actions (actions)
| Tool | What it does | Class |
|---|---|---|
github_workflow_read |
list a repository's workflows, disabled ones included, or view one with its file at a branch or tag |
read |
github_run_read |
list workflow runs by branch, workflow, status, event or commit, or view one with its jobs and failed logs, waiting while it runs |
read |
github_workflow_run |
start a workflow by hand with its inputs, stopping as stale when the ref differs from head_sha |
administrative |
github_run_rerun |
re-run a finished run's failed jobs, every job, or one job | administrative |
github_run_cancel |
cancel a queued or running run | administrative |
The toolset is off by default: add actions to toolsets. The skill is
github-actions, shown as
github-tools:github-actions in Claude Code and github-tools:actions in
Hermes. Every Actions write asks each time, since a workflow can deploy or
publish whatever its name says. Enabling or disabling a workflow, deleting a
run and downloading artifacts are not covered yet.
Planning
github-planning adds no tool. It says how
to plan with the issue and board tools: when work is one issue or a parent
issue with sub-issues, how to size a sub-issue, how steps outside the
repository (an approval, a vendor's answer) enter the plan, the form of each
body, the order to file in, and what a later change rewrites in a body or
says in a comment. It is shown as github-tools:github-planning in Claude
Code and github-tools:planning in Hermes. It is linked to the issues
toolset, which it cannot work without, and says what to skip when the board
tools are off.
Adding a tool
- Write the spec in
src/core/<domain>/<verb>.tswithdefineTool: an ID<prefix>_<domain>_<verb>, a title and description, the Zod argument and output schemas, its toolset and write class, andexecute(args, context). A write tool also givestargets(args, context): what the call writes to, as a permission rule should name it. - Test it beside the spec (
<verb>.test.ts), calling it throughinvokeas the entry points do. A tool that runs a program is tested against a fake of that program onPATH; no test reaches a real service. - List it in
src/tools.ts. A new toolset goes intotoolsetsinsrc/project.ts(anddefaultToolsetswhen it is on by default), a setting of the package's own intooptions(andOPTIONSinproject.pywithconfig_schemainplugin.yaml), and a variable the tool reads besides the settings intotoolVariables. - Add or update the toolset's skill,
skills/<prefix>-<toolset>/SKILL.md, whose frontmatter names the toolset undermetadata. - Run
pnpm run build && pnpm run manifeststo list the tool inplugin.yamland its variables in Codex's manifest, then describe it under "Tools and skills".
docs/conventions.md has the rules each step follows.
github-tools MCP 질문
github-tools MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add github-tools -- npx -y @craftsamo/github-tools를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
github-tools MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
github-tools MCP는 어떤 도구를 제공하나요?
59개 도구를 제공합니다. 예: github_issue_read, github_issue_create, github_issue_edit, github_issue_comment, github_issue_close.
이 도구로 pull request stack을 관리할 수 있나요?
네, GitHub REST stack endpoint를 사용하여 네이티브 stack을 조회하고 연결하거나 연결을 해제하는 도구를 포함하고 있습니다.