Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Human approval gate for AI agents: risk-scored requests that only a person can approve
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
APPROVAL_QUEUE_STATE_DIR, APPROVAL_QUEUE_TTL_HOURSต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"approval-queue": {
"command": "npx",
"args": [
"-y",
"@opafex/mcp-approval-queue"
],
"env": {
"APPROVAL_QUEUE_STATE_DIR": "ใส่ค่าของคุณ",
"APPROVAL_QUEUE_TTL_HOURS": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add approval-queue --env APPROVAL_QUEUE_STATE_DIR='ใส่ค่าของคุณ' --env APPROVAL_QUEUE_TTL_HOURS='ใส่ค่าของคุณ' -- npx -y @opafex/mcp-approval-queueเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"approval-queue": {
"command": "npx",
"args": [
"-y",
"@opafex/mcp-approval-queue"
],
"env": {
"APPROVAL_QUEUE_STATE_DIR": "ใส่ค่าของคุณ",
"APPROVAL_QUEUE_TTL_HOURS": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"approval-queue": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@opafex/mcp-approval-queue"
],
"env": {
"APPROVAL_QUEUE_STATE_DIR": "ใส่ค่าของคุณ",
"APPROVAL_QUEUE_TTL_HOURS": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
APPROVAL_QUEUE_STATE_DIR envAPPROVAL_QUEUE_TTL_HOURS envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub opafex ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.2.0) เข้า registry 12 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Symantec Cloud DLP AIops
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.
Governed Symantec Cloud DLP — 14 MCP tools, read-only with audit.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
A human-in-the-loop approval gate for AI agents, as an MCP server.
The agent calls request_approval before doing something risky. The action is risk-scored, and unless a rule you set covers it, you decide — in a form your MCP client shows you (MCP elicitation), or from a terminal. The agent gets a proceed: true|false it can act on.
The agent can ask; only a human can approve. There is no approve, reject or add-rule tool for the model to call. An approval gate the gated agent can open is not a gate.
Requires Node.js 20+.
Add to your client's MCP config (for Claude Code, .mcp.json in your project root):
{
"mcpServers": { "approval-queue": { "command": "npx", "args": ["-y", "@opafex/mcp-approval-queue"] } } }
Then tell the agent when to use it, for example in your project instructions:
Before deleting data, sending email, spending money or deploying, call
request_approvaland only continue ifproceedis true.
bulk_delete_users is a delete wherever the word sits — plus params.estimatedCost. The agent may pass a category, but it can only raise the score, never lower it.check_status:bash npx @opafex/mcp-approval-queue pending npx @opafex/mcp-approval-queue approve appr_3f9c1a2b4d5e --reason "checked the recipient list" npx @opafex/mcp-approval-queue reject appr_3f9c1a2b4d5e
APPROVAL_QUEUE_TTL_HOURS) and can no longer be approved.After five human approvals of the same action with no rejection, the next form suggests *always approve*. Auto-approvals do not count towards that — the system agreeing with itself is not evidence.
| Tool | Description |
|---|---|
request_approval | Submit an action (action, optional params, context, category, wait). Returns status, proceed, risk, and what to do next. |
check_status | Re-read a request by id. |
list_pending | Requests still waiting for a human, newest first. |
list_rules | The auto-approval rules a human has set (read-only). |
status is one of pending, approved, rejected, auto_approved, expired. Proceed only when proceed is true.
| URI | Contents |
|---|---|
approval://stats | Counts by status and the average time a human took to decide |
approval://rules | Current auto-approval rules |
approval://history | Last 50 decisions |
mcp-approval-queue start the MCP server (stdio)
mcp-approval-queue pending list requests waiting for a decision mcp-approval-queue show one request in full mcp-approval-queue approve [--always] [--reason ] mcp-approval-queue reject [--reason ] mcp-approval-queue rules list rules mcp-approval-queue rules add --max-risk [--description ] mcp-approval-queue rules remove mcp-approval-queue history [limit]
Patterns are globs: * matches anything, ? one character, case-insensitive. A rule can never cover high or critical risk.
| Variable | Default | Description |
|---|---|---|
APPROVAL_QUEUE_STATE_DIR | ~/.opafex/approval-queue | Where state.json (requests, rules, history) lives. The server and the CLI must point at the same directory. |
APPROVAL_QUEUE_TTL_HOURS | 24 | Hours before an undecided request expires |
State is one JSON file, written atomically under a lock file, so the server and the CLI can run at the same time.
Be clear about this before relying on it:
state.json are a human channel only if the agent cannot run the command or write the file. Coding agents such as Claude Code usually can. In that setup rely on the elicitation channel, and deny the agent the CLI and the state directory in your client's permission settings — for Claude Code, deny Bash(npx @opafex/mcp-approval-queue approve:*), Bash(npx @opafex/mcp-approval-queue rules:*), and edits under ~/.opafex/.request_approval, and has to honour proceed: false. This is a protocol for a cooperative agent and a record of what was allowed, not a sandbox. Pair it with your client's own tool permissions for anything that must be enforced.import { ApprovalQueueService, StateStore, assessRisk } from '@opafex/mcp-approval-queue';
const queue = new ApprovalQueueService(new StateStore('/var/lib/my-app/approvals')); const { request } = await queue.requestApproval({ action: 'refund_order', params: { estimatedCost: 40 } });
npm install
npm run build npm test
MIT — see LICENSE.