email-alert-mcp
alert-my-human
A lightweight MCP server that lets agents send multichannel alerts — useful for notifying a human when a scheduled job fails, data is missing, or something otherwise needs attention.
Supports email, Slack, Telegram, SMS, and generic webhooks. Enabled a channel by setting its env vars. Callers pick which configured channels to deliver to on each call.
Deploy
One-click deploy prompts only for AUTH_API_KEY (the one required var). Add whichever channel vars you want afterward in the Vercel dashboard (Project → Settings → Environment Variables) — see Setup below.
Tools
list_channels
Returns which channels are currently configured. No params. Call this before send_alert to know which channel names are valid.
send_alert
Param | Type | Required | Description |
| array of channel names | Yes | Which channels to deliver to (e.g. |
|
| No (default | Controls the color/emoji used in the alert. |
| string | Yes | Short headline for the alert. |
| string | Yes | Body of the alert. |
| object of string key/value pairs | No | Extra details rendered as a list (e.g. job name, error code). |
Channels are delivered independently, so one failing channel doesn't block the others — the response reports which channels sent and which failed. Each delivery is bounded by a 10s timeout and retried once on a transient failure (network error, timeout, HTTP 429, or 5xx).
Setup
Copy
.env.exampleto.envand fill in:AUTH_API_KEY— any random secret string; callers must send it asAuthorization: Bearer <key>.Then configure one or more channels (leave a channel's vars unset to disable it):
Email —
SENDING_EMAIL,RESEND_API_KEY(from resend.com),ALERT_EMAIL(one address, or several comma-separated).Slack —
SLACK_WEBHOOK_URL(an incoming webhook).Telegram —
TELEGRAM_BOT_TOKEN,TELEGRAM_CHAT_ID.SMS —
TWILIO_ACCOUNT_SID,TWILIO_AUTH_TOKEN,TWILIO_FROM_NUMBER,ALERT_PHONE_NUMBER(from twilio.com).Webhook —
WEBHOOK_URLS, comma-separated; each receives the alert as JSON.
pnpm installpnpm dev
Connecting an MCP client
Register the server with a static bearer token header, for example in Claude Code's mcpServers config:
{
"type": "http",
"url": "https://your-deployment.example.com/api/mcp",
"headers": {
"Authorization": "Bearer <AUTH_API_KEY>"
}
}Testing
Run npx @modelcontextprotocol/inspector@latest http://localhost:3000 undefined, then connect it to http://localhost:3000/api/mcp with an Authorization: Bearer <AUTH_API_KEY> header.
Roadmap
Phone call alerts