Server data from the Official MCP Registry
MCP server that dispatches physical-world tasks to humans through a unified API
MCP server that dispatches physical-world tasks to humans through a unified API
Valid MCP server (2 strong, 2 medium validity signals). 4 known CVEs in dependencies (0 critical, 3 high severity) Package registry verified. Imported from the Official MCP Registry.
11 files analyzed ยท 5 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: RENTAHUMAN_API_KEY
Environment variable: MTURK_ACCESS_KEY_ID
Environment variable: MTURK_SECRET_ACCESS_KEY
Environment variable: MTURK_SANDBOX
Environment variable: MANUAL_WEBHOOK_URL
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-zyntarasystems-human-dispatch-mcp": {
"env": {
"MTURK_SANDBOX": "your-mturk-sandbox-here",
"MANUAL_WEBHOOK_URL": "your-manual-webhook-url-here",
"RENTAHUMAN_API_KEY": "your-rentahuman-api-key-here",
"MTURK_ACCESS_KEY_ID": "your-mturk-access-key-id-here",
"MTURK_SECRET_ACCESS_KEY": "your-mturk-secret-access-key-here"
},
"args": [
"-y",
"human-dispatch-mcp"
],
"command": "npx"
}
}
}From the project's GitHub README.
๐ humandispatch.ai โ Homepage & provider docs
A universal dispatch layer for AI-agent-to-human task routing โ Any business (law firms, VA services, freelancers, agencies) can plug in via webhooks and start receiving AI-dispatched tasks in minutes.
Routes tasks to registered webhook providers with smart matching, fallback chains, and proof-of-completion tracking. Any service provider registers a webhook, and the router matches tasks to providers based on capabilities, region, and budget.
# Clone and install
git clone https://github.com/zyntarasystems/human-dispatch-mcp.git
cd human-dispatch-mcp
npm install
# Configure (optional โ works out of the box with manual fallback)
cp .env.example .env
# Build and run
npm run build
node dist/index.js
The easiest way to verify the server is working:
npx @modelcontextprotocol/inspector node dist/index.js
Open http://localhost:5173, enter the proxy session token shown in your terminal, and click Connect.
List backends โ call human_list_backends to see webhook_provider and manual
Register a provider โ call human_register_provider:
{
"name": "Test Provider",
"webhook_url": "https://webhook.site/your-uuid",
"webhook_secret": "a-secret-that-is-at-least-32-chars-long!",
"categories": ["digital_micro"],
"task_types": ["digital"],
"regions": ["*"],
"min_budget_usd": 0,
"max_budget_usd": 500,
"max_concurrent_tasks": 10
}
human_dispatch_task with Raw JSON input mode:{
"description": "Test task โ verify the MCP server is routing correctly",
"category": "digital_micro",
"task_type": "digital",
"budget": { "max_usd": 5, "currency": "USD" },
"deadline": {
"complete_by": "2026-04-10T18:00:00Z",
"urgency": "low"
},
"proof_required": ["text_report"],
"quality_sla": "low",
"callback_url": null
}
The task should route to your registered provider. If no providers match, it falls through to the manual backend.
{
"mcpServers": {
"human-dispatch": {
"command": "npx",
"args": ["human-dispatch-mcp"]
}
}
}
Note: HTTP transport binds to
127.0.0.1only. For remote access, place a TLS-terminating reverse proxy (e.g. nginx, Caddy) in front of the server. Never expose the port directly.
{
"mcpServers": {
"human-dispatch": {
"command": "npx",
"args": ["human-dispatch-mcp"],
"env": {
"TRANSPORT": "http",
"PORT": "3000"
}
}
}
}
| Tool | Description |
|---|---|
human_dispatch_task | Submit a task to be completed by a human worker via the best matching provider |
human_get_task_status | Poll the current status, worker info, and proof submissions for a task |
human_cancel_task | Cancel a pending or in-progress task |
human_list_tasks | List tasks with filters (status, backend, category) and pagination |
human_list_backends | Show available backends, their configuration status, and capabilities |
human_register_provider | Register a webhook provider to receive dispatched tasks |
human_list_providers | List registered providers with stats and filters |
human_remove_provider | Deregister a webhook provider |
โโโโโโโโโโโโโโโ
โ AI Agent โ
โ (Claude, etc)โ
โโโโโโโโฌโโโโโโโโ
โ MCP Protocol (stdio or HTTP)
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ human-dispatch-mcp Server โ
โ โ
โ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ โ
โ โ Task Store โ โ Provider โ โ
โ โ (in-memory)โ โ Registry โ โ
โ โโโโโโโโโโโโโโ โโโโโโโโโฌโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโโ โโโโโโโโโผโโโโโโโโโ โ
โ โ Router โโโโ Webhook โ โ
โ โ (scoring) โ โ Provider โ โ
โ โโโโโโโโฌโโโโโโ โ Adapter โ โ
โ โ โโโโโโโโโฌโโโโโโโโโ โ
โ โ โ โ
โ โ โโโโโโโโโโโโโผโโโโโโโโโโ โ
โ โ โ Provider A (law) โ โ
โ โ โ Provider B (VA) โ โ
โ โ โ Provider C (photos) โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโ โ
โ โผ โ
โ โโโโโโโโโโโโโโ โ
โ โ Manual โ (always-on fallback) โ
โ โ Adapter โ โ
โ โโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Any business can register as a provider to receive AI-dispatched tasks. Here's how:
Your endpoint receives POST requests with these headers:
| Header | Description |
|---|---|
x-dispatch-signature | sha256=<hmac_hex> โ HMAC-SHA256 of the request body using your shared secret |
X-Dispatch-Event | Event type: task.new, task.cancel, or provider.verify |
X-Dispatch-TaskId | UUID of the task |
task.new eventsRequest body:
{
"task_id": "uuid",
"description": "What needs to be done",
"category": "photo_video",
"task_type": "physical",
"location": { "address": "123 Main St", "region": "US" },
"budget": { "max_usd": 25, "currency": "USD" },
"deadline": { "complete_by": "2026-04-10T18:00:00Z", "urgency": "medium" },
"proof_required": ["photo", "gps_checkin"],
"quality_sla": "medium"
}
Respond with:
{ "accepted": true, "external_id": "your-internal-id" }
Or reject:
{ "accepted": false, "reason": "Outside service area" }
POST to http://<server>/callbacks/task/<task_id> with headers:
x-provider-id: Your provider UUIDx-dispatch-signature: sha256=<hmac_hex> of the body{
"status": "completed",
"proof": [
{ "type": "photo", "url": "https://...", "submitted_at": "2026-04-10T12:00:00Z" }
],
"actual_cost_usd": 20,
"notes": "Task completed successfully"
}
Always verify incoming webhooks using your shared secret:
const crypto = require('crypto');
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
const valid = crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signatureHeader));
The router automatically picks the best backend based on:
preferred_backends and fallback_chain are honored firstmanual backend is always available as the ultimate fallbackimport asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient
async def dispatch_photo_task():
async with MultiServerMCPClient({
"human": {
"command": "node",
"args": ["path/to/human-dispatch-mcp/dist/index.js"],
"transport": "stdio",
}
}) as client:
tools = client.get_tools()
# Register a provider first
await client.call_tool("human_register_provider", {
"name": "Photo Service Co",
"webhook_url": "https://photos.example.com/webhook",
"webhook_secret": "your-secret-that-is-at-least-32-characters",
"categories": ["photo_video"],
"task_types": ["physical"],
"regions": ["US"],
"min_budget_usd": 5,
"max_budget_usd": 100,
"max_concurrent_tasks": 20
})
# Dispatch a task
result = await client.call_tool("human_dispatch_task", {
"description": "Take a photo of the menu board at Starbucks on 5th Ave, NYC",
"category": "photo_video",
"task_type": "physical",
"location": {
"address": "5th Ave & 42nd St, New York, NY",
"region": "US"
},
"budget": {"max_usd": 15, "currency": "USD"},
"deadline": {
"complete_by": "2026-01-15T18:00:00Z",
"urgency": "medium"
},
"proof_required": ["photo", "gps_checkin"],
"quality_sla": "medium"
})
print(result)
asyncio.run(dispatch_photo_task())
| Variable | Default | Description |
|---|---|---|
TRANSPORT | stdio | Transport mode: stdio or http |
PORT | 3000 | HTTP port (when TRANSPORT=http) |
MANUAL_WEBHOOK_URL | โ | Webhook URL for manual task notifications |
PROVIDERS_CONFIG | โ | JSON array of provider objects to pre-seed on startup |
src/services/backends/BaseBackendAdapterBackendAdapter interfaceBackendId enum in src/types.tssrc/index.tsMIT
Be the first to review this server!
by Modelcontextprotocol ยท Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno ยท Developer Tools
Toleno Network MCP Server โ Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace ยท Developer Tools
Create, build, and publish Python MCP servers to PyPI โ conversationally.
by Microsoft ยท Content & Media
Convert files (PDF, Word, Excel, images, audio) to Markdown for LLM consumption
by mcp-marketplace ยท Developer Tools
Scaffold, build, and publish TypeScript MCP servers to npm โ conversationally
by mcp-marketplace ยท Finance
Free stock data and market news for any MCP-compatible AI assistant.