Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Review comments pinned to a running frontend, read and resolved by your coding agent.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
GITHUB_TOKEN, MAPLE_GITHUB_OWNER, MAPLE_GITHUB_REPO, MAPLE_STOREค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"maple": {
"command": "npx",
"args": [
"-y",
"@maple-kit/mcp"
],
"env": {
"GITHUB_TOKEN": "ใส่ค่าของคุณ",
"MAPLE_GITHUB_OWNER": "ใส่ค่าของคุณ",
"MAPLE_GITHUB_REPO": "ใส่ค่าของคุณ",
"MAPLE_STORE": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add maple --env GITHUB_TOKEN='ใส่ค่าของคุณ' --env MAPLE_GITHUB_OWNER='ใส่ค่าของคุณ' --env MAPLE_GITHUB_REPO='ใส่ค่าของคุณ' --env MAPLE_STORE='ใส่ค่าของคุณ' -- npx -y @maple-kit/mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"maple": {
"command": "npx",
"args": [
"-y",
"@maple-kit/mcp"
],
"env": {
"GITHUB_TOKEN": "ใส่ค่าของคุณ",
"MAPLE_GITHUB_OWNER": "ใส่ค่าของคุณ",
"MAPLE_GITHUB_REPO": "ใส่ค่าของคุณ",
"MAPLE_STORE": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"maple": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@maple-kit/mcp"
],
"env": {
"GITHUB_TOKEN": "ใส่ค่าของคุณ",
"MAPLE_GITHUB_OWNER": "ใส่ค่าของคุณ",
"MAPLE_GITHUB_REPO": "ใส่ค่าของคุณ",
"MAPLE_STORE": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
MAPLE_GITHUB_OWNER envMAPLE_GITHUB_REPO envMAPLE_STORE envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub maple-kit ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: GITHUB_TOKEN
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.17.1) เข้า registry 34 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Dechonet MCP
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
30 security tools for AI agents: phishing links, exposure maps, DNS, SSL, PQC, history, pivots.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
The Model Context Protocol server that hands a coding agent the review comments Maple collected on a preview deployment.
Pre-release. Every package here is 0.x and makes no compatibility promise.
The agent waits for a comment, reads it with its context — file:line from the tagger, the viewport, the screenshot, the mock it was written under — makes the change, and resolves it against the commit that fixed it. The reviewer's half is the overlay; the two meet in the store.
npm install @maple-kit/mcp
Two binaries ship: maple-mcp, the server, and maple-stop-hook, which stops an agent from calling itself finished while comments are still open.
A client starts the server with no arguments, so it is configured through the environment. In Claude Code's .mcp.json:
{
"mcpServers": { "maple": { "command": "npx", "args": ["-y", "-p", "@maple-kit/mcp", "maple-mcp"], "env": { "MAPLE_GITHUB_OWNER": "acme", "MAPLE_GITHUB_REPO": "web" } } } }
and run the client under op run --env-file so GITHUB_TOKEN never lands in a file. A missing value fails at startup rather than on the first tool call.
| Name | Secret | What it is |
|---|---|---|
GITHUB_TOKEN | Yes | A token that can read and write pull-request comments. Required for the github store. |
MAPLE_GITHUB_OWNER | No | The repository's owner. Required for the github store. |
MAPLE_GITHUB_REPO | No | The repository. Required for the github store. |
MAPLE_GITHUB_API | No | The API root, for Enterprise Server. |
MAPLE_STORE | No | github, the default when a forge is configured, or file, the default when none is: the comments under .maple/. |
MAPLE_BRANCH | No | The branch the Stop hook checks, else the one checked out. The server ignores it. |
MAPLE_URL | No | The deployed route's mount URL. A resolve asks it to republish the gate. |
MAPLE_GATE_TOKEN | Yes | For CI only: the gate App's installation token. Not with MAPLE_URL. |
MAPLE_GATE_APP_ID | No | The gate App's id, so it updates its own check run rather than another's. |
MAPLE_REQUIRE_APPROVAL | No | true to hold the gate until somebody approves, matching the route and CI. |
Set none of GITHUB_TOKEN, MAPLE_GITHUB_OWNER and MAPLE_GITHUB_REPO and the server reads and writes the comments fileStore() keeps under .maple/ in its working directory's repository, so the loop works on a laptop with no pull request. MAPLE_STORE=file says so explicitly. It is a laptop's store, not a preview pod's: docs/connectors.md has the argument. The Stop hook reads the same folder for the branch checked out in the session's working directory, and stays silent where there is no .maple/ folder, no comments for the branch or no repository.
| Tool | Reads | What it does |
|---|---|---|
list_comments(branch, statuses?) | ✓ | Return the review comments on a branch, newest first. |
wait_for_comments(branch, cursor?, timeoutMs?) | ✓ | Block until a new comment arrives or the wait elapses. Returns status "timeout" rather than failing when nothing arrives. |
resolve_comment(id, sha, note?) | Mark a comment resolved, recording the commit that addressed it. | |
get_comment_context(id, branch) | ✓ | Return everything needed to act on one comment: anchor, viewport, surrounding markup and any replay link. A comment written under a Maple Mock carries mock.recipe and mock.replay, a link to the page in that state. |
start_solo(previewUrl) | Start a bridge on localhost and return the link that pairs a deployed preview with it. The reviewer opens the link in their browser and the comments they write there land in .maple/ for list_comments and wait_for_comments to read. They never count toward the merge gate. |
wait_for_comments is clamped to 55 seconds because every coding client cuts a tool call off at 60, and it emits notifications/progress every 15 seconds. A timeout is a result: an agent that treats one as an error stops looping the first time nobody is looking. Its cursor is a timestamp; omit it on the first call to drain whatever is already waiting.
MCP gives a server no way to interrupt a client, so the loop is closed from the other end. Claude Code's Stop hook runs when the agent believes it is finished, and Maple's answers with the comments still open:
{
"hooks": { "Stop": [ { "hooks": [{ "type": "command", "command": "npx -y -p @maple-kit/mcp maple-stop-hook" }] } ] } }
The Maple Claude Code plugin registers it for you. It blocks while a comment is open or needs_reverify, at most eight stops in a row per session; on the ninth it lets the session end and says what is still open, which beats an agent resolving comments to escape. The count is kept per session_id in the system temp directory, and a stop no block caused starts it again.
The hook does not see `.mcp.json`'s `env`. That block is handed to the MCP server alone; a hook runs in the client's own environment. So MAPLE_GITHUB_OWNER, MAPLE_GITHUB_REPO and GITHUB_TOKEN have to be set where the client itself starts — under the same op run --env-file — or the hook fails naming the one missing. With neither of the first two set, it reads the comments under .maple/ for the current branch instead, and lets every stop through where there are none. MAPLE_BRANCH defaults to the branch checked out in the session's working directory.
With MAPLE_URL set to a deployed route's mount URL, such as https://web-482.preview.acme.dev/api/maple, resolve_comment asks that route to republish maple/visual-review, so an agent that resolves the last comment with nothing left to push does not leave the check holding on finished work. The request carries the branch and GITHUB_TOKEN, which must be able to push to the repository. The route decides the verdict and publishes with the gate App's own credentials, which never leave it. A failed refresh is logged to stderr and the resolve is still recorded.
MAPLE_GATE_TOKEN is the other way, for CI: a gate App installation token the server publishes with directly. It expires an hour after it is minted, so it suits a job, not a session. Setting both fails at startup.
maple-review skill turns a pull request's maple ` comments into a worklist without the server.Apache-2.0. See LICENSE and NOTICE.