hitl-gate-mcp
This server acts as a Human-in-the-Loop (HITL) approval gate for AI agents, intercepting dangerous operations and requiring explicit human approval before they proceed. It integrates directly into the Cursor IDE via MCP elicitation.
assess_and_gate: Evaluate whether a proposed action is dangerous. If risky, automatically creates an approval ticket and triggers an in-IDE approval form for the user to approve or reject. The agent must not proceed unless the ticket isapproved.list_dangerous_ops: Browse the built-in catalog of operations considered dangerous (e.g., delete files,git push --force,DROP/TRUNCATE,curl|bash,chmod 777, production deploys, bulk payments, etc.).request_approval: Manually create an approval ticket for an action (specifying risk level:low,medium,high,critical) without going through automatic risk assessment.get_approval_status: Check the current status of a specific approval ticket (approved,rejected,pending,expired,cancelled).list_pending: List all approval tickets currently awaiting a human decision.list_approval_history: View an audit log of past approval decisions, filterable by status and count, showing time, action type, requester, approver, status, and reason.
Approval records are persisted to a configurable data directory (HITL_DATA_DIR), and the server optionally supports a standalone web panel in addition to the Cursor IDE form.
Provides Human-in-the-Loop approval gates for dangerous operations within VS Code (GitHub Copilot) IDE environment, allowing AI agents to request human approval before executing risky actions.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@hitl-gate-mcp assess dropping the users table"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
hitl-gate-mcp
给 AI Agent 用的 Human-in-the-Loop 审批门 MCP:危险操作先评估、再在 IDE 里点选批准/拒绝,并可在对话中查看审批记录。
运行时:Node.js ≥ 18
传输:stdio MCP
默认审批:IDE 内建表单(MCP elicitation);不可用时走聊天文案 / 可选网页面板
客户端:Cursor 与 VS Code(GitHub Copilot) 同一套接入步骤
推荐接入(两步,双端相同)
① 配置 MCP(让工具连上)
两边最终都跑:npx -y hitl-gate-mcp。差异只在配置文件路径。
Cursor(macOS 推荐,复制即用) — .cursor/mcp.json:
{
"mcpServers": {
"hitl_mcp": {
"command": "/bin/zsh",
"args": ["-lic", "npx -y hitl-gate-mcp"],
"env": {
"HITL_ELICIT": "1",
"HITL_ENABLE_PANEL": "0"
}
}
}
}用登录 shell 启动,自动带上 nvm / Homebrew 的 Node,不必写绝对路径。
若写裸"command": "npx",Cursor 从图标启动时经常报spawn npx ENOENT。
VS Code — .vscode/mcp.json:
{
"servers": {
"hitl_mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "hitl-gate-mcp"],
"env": {
"HITL_ELICIT": "1",
"HITL_ENABLE_PANEL": "0"
}
}
}
}VS Code 若同样 ENOENT,把 command/args 改成与上面 Cursor 相同的 /bin/zsh + -lic 写法即可。
init 也会生成示例:.cursor/mcp.json.example、.vscode/mcp.json.example。
保存后在 MCP 面板确认 hitl_mcp 已连接。
② 手动 init(装上硬约束,提高遵从率)
在目标项目根目录:
hitl-gate-mcp init
# 或
npx hitl-gate-mcp init默认 --client all,一次写入 Cursor + VS Code 钩子:
客户端 | 写入内容 |
Cursor |
|
VS Code / Copilot |
|
只要其中一个客户端:
hitl-gate-mcp init --client cursor
hitl-gate-mcp init --client vscode已存在则跳过;覆盖加 --force。预览 --dry-run。
npm install -g hitl-gate-mcp # 一次
hitl-gate-mcp init # 任意项目诚实边界:只配 MCP、不跑
init→ 依赖模型遵从instructions,不保证每次都调闸门。
MCP 不能拦截 IDE 原生 Delete/Terminal。
Related MCP server: gotoHuman MCP Server
审批弹窗不可用时(VS Code 更常见)
Agent 应把返回的
user_prompt_zh贴到对话里,停止执行可选:MCP env 设
HITL_ENABLE_PANEL=1,浏览器打开http://127.0.0.1:8787批/拒再调
get_approval_status,仅approved后继续
方式二:源码本地运行
git clone <本仓库地址>
cd <克隆下来的目录名>
npm install
npm run build把 MCP 的 command/args 改成:
node /绝对路径/到/本项目/dist/index.jsHITL_DATA_DIR 建议用绝对路径。示例见 mcp.local.example.json。
怎么用
危险操作审批
Agent 在副作用前调用
assess_and_gate(带code_context)五档风险;仅 高/致命 开审批
表单批准 / 拒绝;聊天「可以」不算批准
高/致命附带 爆炸半径;执行后
submit_execution_report
查看审批记录
说:「看审批记录」 → list_approval_history → 展示 summary_zh 表格。
可用工具
工具 | 作用 |
| 五档风险 + 爆炸半径;仅高/致命开单 |
| 批后计划 vs 实际对照 |
| 内置危险操作表 |
| 手动开单 |
| 查工单 |
| 待审列表 |
| 审批历史 |
环境变量
变量 | 默认 | 说明 |
|
| 是否使用 IDE 内审批表单 |
|
| 本机网页备用面板 |
|
| 审批数据目录(建议绝对路径) |
|
| 面板端口 |
|
| 面板是否自动开浏览器 |
本地自检
npm run smokeLicense
MIT
Available Tools
6 toolsassess_and_gateA
BUILTIN POLICY: Assess risk; if dangerous, create a ticket and request approval via Cursor in-IDE form (MCP elicitation). Returns approved/rejected when user decides in Cursor. Fallback: pending + chat/panel instructions. Call BEFORE side effects. Do NOT execute while pending/rejected.
Inputs: intent (required), action, params, requester, +2 more.
get_approval_statusA
Get approval ticket status. Only proceed when status is approved. Stop when rejected or expired.
Inputs: ticket_id (required).
list_approval_historyA
List approval audit history for the user. Call when the user asks to 看审批记录 / view approval history / audit log. Present summary_zh in chat. Optional status filter and limit.
Inputs: limit, status.
list_dangerous_opsB
List the built-in dangerous operation catalog used by assess_and_gate (MCP-embedded policy).
Inputs: no named parameters.
list_pendingB
List all pending approval tickets waiting for human decision.
Inputs: no named parameters.
request_approvalA
Manually request human approval (skip assessment). Uses Cursor elicitation when available. Prefer assess_and_gate for normal flow.
Inputs: action (required), summary (required), risk, params, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 6 tools
Each tool has a distinct purpose: assess_and_gate is the main gating action, get_approval_status checks a specific ticket, list_approval_history provides audit history, list_dangerous_ops catalogs risky operations, list_pending shows pending tickets, and request_approval allows manual bypass. No two tools have ambiguous overlap.
All tool names follow a consistent verb_noun pattern (e.g., list_pending, request_approval). The slight deviation in 'assess_and_gate' is minor and still clear.
With 6 tools, the server covers the essential operations for human-in-the-loop gating without being excessive or sparse. Each tool handles a specific, necessary function.
The tool set covers the full lifecycle: assessment (assess_and_gate), manual request (request_approval), status checking (get_approval_status), pending list (list_pending), history (list_approval_history), and catalog (list_dangerous_ops). No obvious gaps for the stated purpose.
Related MCP Connectors
Preventive human-approval write-gate for AI agents: writes commit only after a human approves.
Human approval for AI agents: one ask, one person, one boolean.
Set up human approval for your AI agents' tool calls.
Human-in-the-loop review and approval for AI agents. Audit trail, approval policies, native MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceHuman-in-the-Loop authorization gateway for AI Agents. Securely pause MCP workflows and route high-risk actions to human approvers via Slack or Email.52 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to request human approvals with customizable forms, webhooks, and team features.68 npmMIT
- FlicenseNot gradedqualityDmaintenanceHuman-in-the-loop approval gate for MCP agents, classifying tool calls by risk and requiring Slack-based human approval for medium/high risk actions.-
- FlicenseNot gradedqualityDmaintenanceEnables AI coding agents to evaluate actions against team-defined policies, record decisions, and obtain human approvals for potentially risky operations.63 npm1-