GitHub
server ทางการของ GitHub ให้ AI อ่านและจัดการโค้ด issue และ pull request ในบัญชีของคุณได้ ใช้ผ่านคลาวด์ของ GitHub หรือรันในเครื่องด้วย Docker ก็ได้
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
GitHub tools for coding agents: issues, project boards, pull requests, releases and Actions.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"github-tools": {
"command": "npx",
"args": [
"-y",
"@craftsamo/github-tools"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add github-tools -- npx -y @craftsamo/github-toolsวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"github-tools": {
"command": "npx",
"args": [
"-y",
"@craftsamo/github-tools"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"github-tools": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@craftsamo/github-tools"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub craft-agent ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.7.0) เข้า registry วันนี้
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี GitHub, Desktop Commander, Cloudflare MCP
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
server ทางการของ GitHub ให้ AI อ่านและจัดการโค้ด issue และ pull request ในบัญชีของคุณได้ ใช้ผ่านคลาวด์ของ GitHub หรือรันในเครื่องด้วย Docker ก็ได้
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
GitHub tools for coding agents: issues, project boards, pull requests, repositories, releases and Actions. 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 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, is a release's version (1.2.3) and is the commit its tag names:
gh api repos/craft-agent/github-tools/commits/v<version> --jq .sha
OpenCode V2 takes the package and its options in opencode.json:
{
"plugins": [ { "package": "@craftsamo/github-tools@ ", "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@ ", { "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- .tgz mkdir -p ~/.config/opencode/skills cp -r package/skills/* ~/.config/opencode/skills/ rm -rf package craftsamo-github-tools- .tgz
claude plugin marketplace add craft-agent/github-tools#v<version>
claude plugin install github-tools@craft-agent
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, so name issues as owner/repo#N or pass repo (a bare number fails there with a message saying so).
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.
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 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.
Add the server to the host's MCP configuration. Flags go in args:
{
"mcpServers": { "github-tools": { "command": "npx", "args": ["-y", "@craftsamo/github-tools@ ", "--toolsets", "issues,pull_requests,projects"] } } }
Each toolset comes with a skill that tells an agent how to use its tools. A toolset with no tools yet registers none (so far issues and projects have tools).
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 | read |
github_issue_create | create an issue with its kind, labels, assignees, milestone, parent and blocked-by issues | add |
github_issue_edit | change the title, body (or append to it), kind, labels, assignees or milestone | 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: label.
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.
Every read tool is named github_ _read. Reads can run unasked; writes are confirmed by the harness.
| Harness | Reads without asking |
|---|---|
| OpenCode | always; the plugin asks only before a write |
| Claude Code | the rule mcp__plugin_github-tools_github-tools__*_read in permissions.allow of ~/.claude/settings.json or a project |
| Codex | always; Codex runs tools that declare readOnlyHint unasked, as the read tools do |
| Grok Build | grok --allow 'MCPTool(github-tools__*_read)' --allow 'MCPTool(github_*_read)' (both rules; see below) |
| Antigravity | the rule mcp(github-tools_github-tools/github_issue_read) in permissions.allow of ~/.gemini/antigravity-cli/settings.json, one for each read tool |
| Hermes | always; the plugin asks only before a write |
Where a write is asked about, and where it is not:
github_* rule shown under OpenCode.codex exec, and Grok Build under grok -p, refuse a write they cannot ask about, unless it is allowed beforehand.use_tool tool, and the agent often names a tool without its server first (github_project_read). Grok checks the rules against the name as given, so the server-qualified rule alone does not match that first call, and grok -p refuses it and stops instead of letting the agent retry with github-tools__github_project_read. The second rule matches the short name; a write still matches neither.github-tools_github-tools (plugin, then server). agy -p refuses a tool it cannot ask about; --dangerously-skip-permissions runs every tool unasked.hermes chat -q refuses a write it cannot ask about; hermes -z and --yolo skip approval, so writes then run unasked.Every entry point
ตัดมาแค่ช่วงต้น อ่านต่อใน repo