GO

GotoHuman MCP Server: Human-in-the-Loop Approvals

Streamline approvals with the GotoHuman MCP server, letting AI agents and automations send requests to your gotoHuman inbox for human-in-the-loop decisions.

Quick Install
npx -y @gotohuman/gotohuman-mcp-server

Overview

GotoHuman MCP Server implements a lightweight Model Context Protocol (MCP) endpoint that routes automated approval requests from AI agents, bots, and other automations into a human review workflow (your gotoHuman inbox). The server standardizes how models or agents ask for permission, context, or clarification, records the request, and forwards it to the right human inbox for an explicit allow/deny/clarify response.

This is useful when decisions must include human oversight — for example, when an LLM proposes a potentially risky action, when automation needs an auditor to approve a transaction, or when content moderation requires a human judgment. The server provides a small API, persistent storage for requests, and optional callbacks/webhooks so your agent can continue once a human responds.

Features

  • Standardized MCP request endpoint for human-in-the-loop approvals
  • Persistent storage of requests and responses (supports SQLite/Postgres)
  • Webhook/callback support to notify agents when a decision is made
  • Configurable timeout/expiry for requests
  • Simple API key authentication for agents and system integrations
  • Integration with gotoHuman inbox (inbox routing metadata)
  • Docker and local development support

Installation / Configuration

Clone and run (basic):

git clone https://github.com/gotohuman/gotohuman-mcp-server.git
cd gotohuman-mcp-server
# Install (if Node-based)
npm install
npm start

Run with Docker:

docker build -t gotohuman-mcp .
docker run -p 3000:3000 \
  -e MCP_PORT=3000 \
  -e MCP_API_KEY=your_mcp_api_key \
  -e GOTOHUMAN_API_KEY=your_gotohuman_api_key \
  -e GOTOHUMAN_INBOX_ID=your_inbox_id \
  gotohuman-mcp

Example environment variables

VariablePurposeExample
MCP_PORTServer port3000
MCP_API_KEYAPI key for authenticationsk-mcp-XXXX
GOTOHUMAN_API_KEYAPI key for forwarding to gotoHumansk-gh-XXXX
GOTOHUMAN_INBOX_IDDefault inbox idinbox-123
DATABASE_URLDB connection string (sqlite:// or postgres://)sqlite://./db.sqlite3

API examples

Create an approval request (curl):

curl -X POST http://localhost:3000/mcp/requests \
  -H "Authorization: Bearer sk-mcp-XXXX" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Approve deployment to production",
    "description": "Deployment v1.12.0 to prod-east. Risk: database migration.",
    "choices": ["approve", "reject", "request_changes"],
    "metadata": {"service": "payments", "commit": "abc123"},
    "callback_url": "https://my-agent.example.com/mcp/callback"
  }'

Check request status:

curl -H "Authorization: Bearer sk-mcp-XXXX" \
  http://localhost:3000/mcp/requests/{request_id}

Webhook payload (example delivered to callback_url):

{
  "request_id": "req_456",
  "choice": "approve",
  "comment": "Looks good after rollback added",
  "actor": "[email protected]",
  "timestamp": "2026-04-01T12:34:56Z"
}

Authentication

  • The server accepts a bearer token in Authorization header. Protect the MCP_API_KEY and GOTOHUMAN_API_KEY like other service credentials.

Persistence

  • Default local SQLite is suitable for development. For production, set DATABASE_URL to a managed Postgres instance.

Available Tools or Resources

  • GitHub repository: https://github.com/gotohuman/gotohuman-mcp-server
  • Example client snippets (JavaScript/Python) included in the repo to simplify integration
  • Webhook / callback sample implementations showing how to resume agent workflows on human response
  • Schema documentation for MCP request payload (title, description, choices, metadata, expire_at, callback_url)
  • Dockerfile and sample docker-compose for quick local testing

Use Cases

  • Deployment gating: Automation submits a deployment plan to the MCP server. A release engineer reviews and approves or requests changes before the CI/CD pipeline proceeds.
  • High-value transaction approval: A payments bot flags transactions above a threshold and asks the finance team to approve or reject via gotoHuman. On approval the callback notifies the transaction service to finalize.
  • Content moderation: An LLM categorizes user-submitted content as potentially policy-violating and forwards the item for human moderation. The moderator’s decision is posted back as the final moderation action.
  • Security-sensitive actions: Privileged actions (e.g., granting access, rotating keys) are routed through human reviewers to ensure an auditor signs off.
  • Clarification loop: An agent encountering ambiguous user intent asks a human for clarification; the human’s reply updates the agent’s context and the agent resumes.

If you’re integrating an AI agent or automation that must pause for human validation, the GotoHuman MCP Server provides a compact, auditable, and webhook-friendly way to hand off decisions to humans and resume automated workflows after a choice is made. For implementation details and examples, see the repo and included client examples on GitHub.