GitHub
server ทางการของ GitHub ให้ AI อ่านและจัดการโค้ด issue และ pull request ในบัญชีของคุณได้ ใช้ผ่านคลาวด์ของ GitHub หรือรันในเครื่องด้วย Docker ก็ได้
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Task-shaped Zabbix access for AI agents: problems, host triage, metrics, maintenance windows.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"zabbix-ai-cli": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/stufently/zabbix-ai-cli-mcp:0.5.0"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add zabbix-ai-cli -- docker run -i --rm ghcr.io/stufently/zabbix-ai-cli-mcp:0.5.0วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"zabbix-ai-cli": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/stufently/zabbix-ai-cli-mcp:0.5.0"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"zabbix-ai-cli": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/stufently/zabbix-ai-cli-mcp:0.5.0"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 8 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub stufently ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.5.0) เข้า registry 23 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Docker ในเครื่องด้วย
ในหมวดเดียวกันมี 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 รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
`zabbix-ai-cli-mcp` is a Zabbix MCP server and command-line client in one Go binary. It gives Claude Code, Claude Desktop, Codex, Cursor and any other Model Context Protocol client task-shaped access to Zabbix — what is broken right now, why a host is silent, why an alert never arrived — with bounded output, a stable JSON contract, and one setting, allow_write, that decides whether the agent applies a change or a person approves a plan.
It is for the people who get paged: SRE and DevOps teams running Zabbix who want an agent to triage an incident without handing it the whole API.
Requires Zabbix 6.4 or newer. Bearer-token authentication arrived in 6.4 and is the only scheme implemented; earlier versions expect the token in the request body instead.
It never contacts a language model. The AI decides, this program executes, Zabbix monitors.
zabbix-ai-cli-mcp login
zabbix-ai-cli-mcp problems list zabbix-ai-cli-mcp host investigate server01 zabbix-ai-cli-mcp alert why 757474 zabbix-ai-cli-mcp mcp
Wrapping host.get, problem.get and history.get hands the agent the API's sharp edges along with its power. On a current Zabbix 7.4 server:
problem.get has no selectHosts, so a problem list arrives without hosts.history.get defaults to the numeric-unsigned table and returns nothing for a float item — silently, with no error.item.lastvalue and item.lastclock still exist and have returned a constant "0" for several major releases.host.available was removed in 5.4; availability lives on the interface.event.acknowledge takes a bitmask whose own documentation contradicts itself.searchWildcardsEnabled: true disables implicit substring matching, turning a name fragment into an exact match that quietly finds nothing.Every one of those produces a confident, wrong answer rather than an error. This tool absorbs them behind commands that describe the task instead of the endpoint.
| Command | Answers |
|---|---|
problems list | What is broken now — including suppressed problems, with the maintenance window that hides them named |
host investigate | One call: host state, active problems, recent events, silent and unsupported items, maintenance |
host status | A handful of fields instead of twelve thousand characters of configuration |
alert why | Why a notification did or did not arrive — suppression, delivery attempts, actions, media types, per-recipient severity filters |
resolve | Turns a notification pasted out of chat into event, host and trigger identifiers |
unreachable | Monitored hosts Zabbix cannot poll, with the error it recorded |
metrics latest / history | Values with the right history type, human units and min/avg/max |
maintenance | Open, extend, end or remove windows, with host patterns like ms* |
mediatypes enable / disable | Restore or stop alert delivery by changing only a media type's status |
discoveryrules set-lost-resources | Adjust lost LLD resource disable/delete policy with an impact plan |
api call | The escape hatch, under the same rules |
Read operations always run immediately. Whether anything else does is one setting, allow_write, and it is on by default.
# ~/.config/zabbix-ai-cli-mcp/config.toml
allow_write = true # the default; omit the key and you get this
[profiles.prod] url = "https://zabbix.example.com" allow_write = false # this one profile is an exception
If you are not sure, set `allow_write = false`. It costs one command per change and it is the right default for an installation you cannot afford to have an agent surprise you in. A profile override beats the file-wide setting, and ZABBIX_AI_CLI_MCP_ALLOW_WRITE beats both — that is how a container is told, without owning the config file.
| Caller | allow_write = true | allow_write = false |
|---|---|---|
| CLI, a person at a terminal | --apply makes the change | plan, then approve |
| MCP, an agent | zabbix_write makes the change | plan, then approve at a terminal |
With writes off, no tool and no flag applies anything: a change is described, and a person runs zabbix-ai-cli-mcp approve in their own terminal. A confirmation an agent could send would be a confirmation prompt injection could send, so none is offered — the approval lives outside the model's context.
With writes on, the agent applies the change itself and every change lands in an audit log with the profile, the parameters, the objects touched and whether a person or a model asked for it. zabbix-ai-cli-mcp mcp --read-only refuses both paths regardless of the setting, and an HTTP endpoint that can write refuses to start without a bearer token.
Everything else holds either way: a profile's scopes still bound what it may touch, the risk registry still refuses methods that hand out credentials or run code, and a plan is still re-checked against live Zabbix before it executes.
$ zabbix-ai-cli-mcp maintenance create "ms*" --for 2h
PLAN pl_cc89d2e87d15
Create maintenance "ms* (2h0m)" for 2h0m, 2026-08-21T05:39:00Z to 2026-08-21T07:39:00Z
Affects: host ms1.8qw.ru host ms10.8qw.ru ...
Risk: write Expires: 2026-08-21T05:54:22Z
Nothing has changed yet. To apply it: zabbix-ai-cli-mcp approve pl_cc89d2e87d15
Media channel state and lost LLD resource policies also use this approval/audit path. Media state requests are idempotent for external cron use; LLD plans show host scope and lost-item counts and flag history deletion as destructive. See parameters and examples.
Before a plan runs, its parameters are re-hashed, its deadline checked and its preconditions re-read from Zabbix. A window that has been replaced since the plan was made is refused, not deleted. Every applied change is appended to an audit log.
This matters more than a refusal would. When the tool this replaces blocked a write, the work was done anyway with a token copied out of a container — losing the audit trail without preventing anything. A permitted path that is recorded beats a refusal that gets routed around.
On Linux or macOS, paste this into a terminal. It fetches the latest release, checks it against checksums.txt, puts the binary in ~/.local/bin and starts the MCP server over stdio. Replace the two placeholders first:
VERSION=$(curl -fsSLI -o /dev/null -w '%{url_effective}' \
https://github.com/stufently/zabbix-ai-cli-mcp/releases/latest | sed 's|.*/v||') OS=$(uname -s | tr '[:upper:]' '[:lower:]') # linux | darwin ARCH=$(uname -m | sed 's/x86_64/amd64/; s/aarch64/arm64/') # amd64 | arm64 ARCHIVE=zabbix-ai-cli-mcp_${VERSION}_${OS}_${ARCH}.tar.gz BASE=https://github.com/stufently/zabbix-ai-cli-mcp/releases/download/v${VERSION}
TMP=$(mktemp -d) && cd "$TMP" curl -fsSLO "$BASE/$ARCHIVE" && curl -fsSLO "$BASE/checksums.txt" grep " $ARCHIVE\$" checksums.txt | shasum -a 256 -c - # sha256sum -c - works too tar -xzf "$ARCHIVE" mkdir -p ~/.local/bin && install -m 0755 zabbix-ai-cli-mcp ~/.local/bin/ ~/.local/bin/zabbix-ai-cli-mcp --version ZABBIX_AI_CLI_MCP_URL=https://zabbix.example.com ZABBIX_AI_CLI_MCP_TOKEN=your-api-token ~/.local/bin/zabbix-ai-cli-mcp mcp
The last line is the command every client block below runs: zabbix-ai-cli-mcp with arguments ["mcp"], the Zabbix URL and API token taken from the environment. Stop it with Ctrl-C once it starts; the client launches it from then on. ~/.local/bin has to be on PATH, because the client configurations call the binary by name; otherwise give them the absolute path.
Each tagged release publishes archives for Linux, macOS and Windows on amd64 and arm64, plus checksums.txt. The block at the top of this section installs one on Linux or macOS. The archive also carries docs/ and the agent skills.
On Windows (PowerShell), the archive is a zip:
$Version = (Invoke-RestMethod https://api.github.com/repos/stufently/zabbix-ai-cli-mcp/releases/latest).tag_name.TrimStart('v')
$Arch = if ($env:PROCESSOR_ARCHITECTURE -eq 'ARM64') { 'arm64' } else { 'amd64' } $Zip = "zabbix-ai-cli-mcp_${Version}_windows_${Arch}.zip" $Base = "https://github.com/stufently/zabbix-ai-cli-mcp/releases/download/v$Version" Invoke-WebRequest "$Base/$Zip" -OutFile $Zip Invoke-WebRequest "$Base/checksums.txt" -OutFile checksums.txt $Want = ((Select-String -Path checksums.txt -Pattern " $Zip$").Line -split '\s+')[0] if ((Get-FileHash $Zip -Algorithm SHA256).Hash -ne $Want) { throw "checksum mismatch" } Expand-Archive $Zip -DestinationPath "$env:LOCALAPPDATA\zabbix-ai-cli-mcp" -Force & "$env:LOCALAPPDATA\zabbix-ai-cli-mcp\zabbix-ai-cli-mcp.exe" --version
Add %LOCALAPPDATA%\zabbix-ai-cli-mcp to PATH, or use the full path to zabbix-ai-cli-mcp.exe in the client configuration.
For a host-native build, use Go 1.25 or newer:
go install github.com/stufently/zabbix-ai-cli-mcp/cmd/zabbix-ai-cli-mcp@latest
mkdir -p bin go build -trimpath -o bin/zabbix-ai-cli-mcp ./cmd/zabbix-ai-cli-mcp
The Make targets are container-first and do not require Go on the host:
make build # Linux binary in ./bin, built inside Docker
make docker # Linux container image for the MCP server
checksums.txt proves a download is intact, not who built it: whoever could replace an archive could replace the checksum file next to it. From the first release cut after this section was added, the release workflow also signs build provenance for every archive, every .mcpb bundle and the container image (Sigstore, through GitHub artifact attestations). With the GitHub CLI:
verify() {
gh attestation verify "$1" --repo stufently/zabbix-ai-cli-mcp \ --source-ref "refs/tags/v$VERSION" \ --signer-workflow stufently/zabbix-ai-cli-mcp/.github/workflows/release.yml \ --deny-self-hosted-runners } verify "$ARCHIVE" verify "zabbix-ai-cli-mcp-${VERSION}-linux-amd64.mcpb" verify "oci://ghcr.io/stufently/zabbix-ai-cli-mcp:$VERSION"
A pass means the file was built by this repository's release workflow, on a GitHub-hosted runner, from the tag v$VERSION: an attested file from another release, renamed, fails --source-ref. Releases up to and including 0.4.3 carry checksums only.
zabbix-ai-cli-mcp login --profile prod
It asks for the URL and the API token, verifies the token against the server, and stores it. The token is never accepted as a flag, because flag values are visible in shell history and in the process list; pipe it in instead:
printf %s "$TOKEN" | zabbix-ai-cli-mcp login --profile prod --url https://zabbix.example.com --token-stdin
A profile that names no scopes may do anything the write setting allows. Naming any scope narrows it to exactly those:
zabbix-ai-cli-mcp profile scopes prod --add maintenance
zabbix-ai-cli-mcp profile show prod # what it may do, writes included
See docs/authentication.md for the resolution order and the headless and container cases.
ตัดมาแค่ช่วงต้น อ่านต่อใน repo