io.github.Aderix/vantagate-mcp-server

平台与服务

by aderix

VantaGate 的 MCP Server 与 OpenAPI 集成方案,为 AI Agents 提供 Human-in-the-Loop 支持。

什么是 io.github.Aderix/vantagate-mcp-server

VantaGate 的 MCP Server 与 OpenAPI 集成方案,为 AI Agents 提供 Human-in-the-Loop 支持。

README

VantaGate MCP Server & OpenAPI Integration

npm version License: MIT Node.js >= 20

Human-in-the-Loop authorization for AI Agents. VantaGate intercepts high-risk actions, routes them to a human approver via Slack or Email, and returns a cryptographically-signed decision - so your agent resumes or halts with a full audit trail.


What is VantaGate?

AI agents are increasingly capable of executing consequential real-world actions: sending emails to thousands of users, deleting database records, moving money, deploying to production. VantaGate is the trust layer that ensures humans remain in control.

code
Agent hits risky action
        ↓
POST /v1/checkpoint  ──→  Human receives Slack/Email notification
        ↓                          ↓
   id + dashboard_url    Human reviews payload & decides
        ↓                          ↓
Poll GET /v1/checkpoint/{id}  ←──  Decision recorded + payload purged
        ↓
   APPROVED → Resume workflow
   REJECTED → Halt + report reason

Key Guarantees

  • < 100ms API response - your agent is never blocked waiting for I/O
  • AES-256 payload encryption at rest - payload is permanently destroyed after the decision
  • Zero-Retention polling - GET /checkpoint/{id} never returns the original payload
  • Cryptographic audit trail - every decision is HMAC-SHA256 signed
  • Stateless protocol - no SDK required; plain HTTP from any language

This Package

This package ships two integration artifacts for connecting any AI agent to VantaGate:

ArtifactFileBest for
OpenAPI 3.0 Specvanta-gate-openapi.jsonNo-code tools, OpenAI GPTs, Alice, n8n, Zapier
MCP Serversrc/index.ts / dist/index.jsClaude Desktop, Cursor, Cline, any MCP-compatible agent

Prerequisites

  • Node.js >= 20
  • A VantaGate account: https://vanta-gate.com
  • A VantaGate API key (Dashboard → Projects → New Project)

Quick Start

Option A: Use the MCP Server with Claude Desktop

The fastest path. No manual setup required.

Step 1: Get your API key from https://vanta-gate.com/dashboard/projects

Step 2: Add VantaGate to your Claude Desktop config.

Open your claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
json
{
  "mcpServers": {
    "vantagate": {
      "command": "npx",
      "args": ["-y", "@vantagate/mcp-server"],
      "env": {
        "VANTA_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Step 3: Restart Claude Desktop. The tools create_vantagate_checkpoint and check_vantagate_status will appear in Claude's tool list.

Step 4: Ask Claude to do something that requires approval:

"Delete all records from the staging database where created_at < 2024-01-01"

Claude will automatically pause, create a checkpoint, and tell you to visit the dashboard_url to approve or reject.


Option B: Use the OpenAPI Spec (No-Code / Low-Code)

Import vanta-gate-openapi.json directly into your tool of choice.

OpenAI GPTs / Custom Actions

  1. Open your GPT editor at https://platform.openai.com/gpts
  2. Click "Add actions""Import from URL" or paste the JSON
  3. Set AuthenticationAPI Key → Header: X-API-KEY
  4. Enter your VantaGate API key

The GPT will now pause before high-risk tool calls and ask for human approval.

Alice (AI Agent Platform)

  1. Go to IntegrationsImport OpenAPI
  2. Upload or paste vanta-gate-openapi.json
  3. Set header X-API-KEY to your VantaGate API key in the credential store
  4. Map create_vantagate_checkpoint to your agent's "before high-risk action" trigger

n8n / Zapier

  1. Add an HTTP Request node
  2. Import the OpenAPI spec to auto-populate endpoints
  3. Set X-API-KEY header in the credential configuration

LangChain / LlamaIndex

python
from langchain.tools import OpenAPITool

vanta_tool = OpenAPITool.from_openapi_spec(
    spec_path="./vanta-gate-openapi.json",
    headers={"X-API-KEY": os.environ["VANTA_API_KEY"]}
)
agent = initialize_agent([vanta_tool], llm, agent=AgentType.OPENAI_FUNCTIONS)

Available MCP Tools

create_vantagate_checkpoint

Pauses the agent workflow and routes a human approval request.

When Claude uses it: Before any high-risk action - financial operations, data deletion, production deployments, bulk communications.

ParameterTypeRequiredDescription
titlestringShort title shown to approver. Max 200 chars.
payloadobjectFull JSON context for the decision. Encrypted + purged after decision.
descriptionstringAdditional context below the title. Max 1000 chars.
optionsstring[]Decision options. First = approve action. Default: ["Approve", "Reject"]. Min 2, max 5.
timeoutstringAuto-expire duration: 30m, 4h, 2d. Default: 24h.
notify_emailstringEmail address for magic-link notification.
slack_webhook_urlstringSlack webhook URL (Pro/Scale plans). From Dashboard → Add to Slack.
callback_urlstringYour HTTPS endpoint for signed decision webhook.

Returns: checkpoint_id, dashboard_url, and step-by-step instructions for the agent.

check_vantagate_status

Polls the decision status of a pending checkpoint.

ParameterTypeRequiredDescription
checkpoint_idstringThe ID from create_vantagate_checkpoint.

Returns: status (PENDING / APPROVED / REJECTED / RESOLVED / EXPIRED), selected_option, reject_reason, and the full audit trail.


API Reference Summary

Base URL: https://api.vanta-gate.com/v1
Authentication: X-API-KEY header

MethodEndpointDescription
POST/checkpointCreate a checkpoint - pauses agent
GET/checkpoint/{id}Poll for human decision
GET/checkpoint/secure/{token}Decision UI (internal - magic link)
POST/checkpoint/secure/{token}/decideSubmit decision (internal - decision UI)

Checkpoint Status Lifecycle

code
PENDING → APPROVED   (human chose first/positive option)
        → REJECTED   (human rejected with optional reason)
        → RESOLVED   (human chose non-primary option)
        → EXPIRED    (timeout elapsed, no decision)

Error Codes

HTTPCodeDescription
400Invalid_Webhook_URLslack_webhook_url must start with https://hooks.slack.com/
400Invalid_Callback_URLcallback_url is malformed or points to private IP
400Invalid_DecisionDecision value not in checkpoint's options array
400Validation_ErrorRequest body field validation failure
401UnauthorizedMissing, invalid, or rotated API key
402Upgrade_RequiredFeature requires Pro or Scale plan
403ForbiddenAPI key doesn't match the checkpoint's project
404Not_FoundCheckpoint ID or token does not exist
409Already_DecidedDecision already recorded for this checkpoint
410Checkpoint_ExpiredTimeout window has passed
429Rate_LimitedToo many requests - back off and retry

All errors follow the envelope:

json
{
  "statusCode": 400,
  "error": "Machine_Readable_Code",
  "message": "Human-readable description."
}

Subscription Tiers

FeatureFreePro ($49/mo)Scale ($199/mo)
Checkpoints/month502,50025,000
Email notifications
Slack notifications
Webhook callbacks
Max timeout24h7 days30 days
Log retention7 days90 days365 days

Timeout values are silently clamped to your plan's maximum. A Free plan request with timeout: "7d" will be capped to 24h.


Webhooks

When a human decides, VantaGate sends a signed HTTPS POST to your callback_url (up to 5 retry attempts with exponential back-off).

Request headers:

code
Content-Type: application/json
X-Vanta-Signature: sha256=<HMAC-SHA256 of body>
User-Agent: VantaGate-Webhook/1.0

Signature verification (Node.js):

javascript
const crypto = require('crypto')

function verifyVantaSignature(rawBody, signature, projectSecret) {
  const expected = 'sha256=' + crypto
    .createHmac('sha256', projectSecret)
    .update(rawBody)
    .digest('hex')
  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  )
}

app.post('/webhook/vanta', express.raw({ type: 'application/json' }), (req, res) => {
  const sig = req.headers['x-vanta-signature']
  if (!verifyVantaSignature(req.body, sig, process.env.VANTA_PROJECT_SECRET)) {
    return res.status(401).json({ error: 'Invalid signature' })
  }
  const event = JSON.parse(req.body)
  if (event.status === 'APPROVED') {
    // ✅ Resume agent workflow
  } else if (event.status === 'REJECTED') {
    // ❌ Halt - check event.reject_reason
  }
  res.json({ received: true })
})

Your Webhook Signing Secret (VANTA_PROJECT_SECRET) is distinct from your API key. Find it in Dashboard → Project Settings.


Building from Source

bash
# Install dependencies
npm install

# Build TypeScript
npm run build

# Run the server directly
VANTA_API_KEY=YOUR_API_KEY_HERE npm start

Advanced: MCP Config for Other Clients

Cursor / Cline / Windsurf

json
{
  "mcpServers": {
    "vantagate": {
      "command": "npx",
      "args": ["-y", "@vantagate/mcp-server"],
      "env": {
        "VANTA_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

With local build (development)

json
{
  "mcpServers": {
    "vantagate": {
      "command": "node",
      "args": ["/absolute/path/to/dist/index.js"],
      "env": {
        "VANTA_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Security

  • Your X-API-KEY is hashed server-side - VantaGate never stores plaintext keys.
  • Your slack_webhook_url is sent per-request and purged atomically after the decision. Zero retention.
  • All payload data is encrypted at rest with AES-256 and destroyed after the human decision. It cannot be reconstructed.
  • callback_url is validated against private IP ranges (SSRF prevention).
  • All webhook deliveries are signed with HMAC-SHA256. Always verify signatures.

License

MIT - see LICENSE


Links

常见问题

io.github.Aderix/vantagate-mcp-server 是什么?

VantaGate 的 MCP Server 与 OpenAPI 集成方案,为 AI Agents 提供 Human-in-the-Loop 支持。

相关 Skills

MCP构建

by anthropics

Universal
热门

聚焦高质量 MCP Server 开发,覆盖协议研究、工具设计、错误处理与传输选型,适合用 FastMCP 或 MCP SDK 对接外部 API、封装服务能力。

想让 LLM 稳定调用外部 API,就用 MCP构建:从 Python 到 Node 都有成熟指引,帮你更快做出高质量 MCP 服务器。

平台与服务
未扫描114.1k

Slack动图

by anthropics

Universal
热门

面向Slack的动图制作Skill,内置emoji/消息GIF的尺寸、帧率和色彩约束、校验与优化流程,适合把创意或上传图片快速做成可直接发送的Slack动画。

帮你快速做出适配 Slack 的动图,内置约束规则和校验工具,少踩上传与播放坑,做表情包和演示都更省心。

平台与服务
未扫描114.1k

MCP服务构建器

by alirezarezvani

Universal
热门

从 OpenAPI 一键生成 Python/TypeScript MCP server 脚手架,并校验 tool schema、命名规范与版本兼容性,适合把现有 REST API 快速发布成可生产演进的 MCP 服务。

帮你快速搭建 MCP 服务与后端 API,脚手架完善、扩展顺手,尤其适合想高效验证服务能力的开发者。

平台与服务
未扫描10.2k

相关 MCP Server

Slack 消息

编辑精选

by Anthropic

热门

Slack 是让 AI 助手直接读写你的 Slack 频道和消息的 MCP 服务器。

这个服务器解决了团队协作中需要 AI 实时获取 Slack 信息的痛点,特别适合开发团队让 Claude 帮忙汇总频道讨论或发送通知。不过,它目前只是参考实现,文档有限,不建议在生产环境直接使用——更适合开发者学习 MCP 如何集成第三方服务。

平台与服务
83.4k

by netdata

热门

io.github.netdata/mcp-server 是让 AI 助手实时监控服务器指标和日志的 MCP 服务器。

这个工具解决了运维人员需要手动检查系统状态的痛点,最适合 DevOps 团队让 Claude 自动分析性能数据。不过,它依赖 NetData 的现有部署,如果你没用过这个监控平台,得先花时间配置。

平台与服务
78.4k

by d4vinci

热门

Scrapling MCP Server 是专为现代网页设计的智能爬虫工具,支持绕过 Cloudflare 等反爬机制。

这个工具解决了爬取动态网页和反爬网站时的头疼问题,特别适合需要批量采集电商价格或新闻数据的开发者。不过,它依赖外部浏览器引擎,资源消耗较大,不适合轻量级任务。

平台与服务
35.4k

评论