webhook-mcp

A Bun-based MCP server that exposes two tools for sending POST requests to a configured webhook URL. Zero bloat. Built for automations and agent workflows(WIP)
Installation
npm install @keshav-k3/webhook-mcp
Configuration
The server automatically detects the webhook service from the URL, or you can explicitly set WEBHOOK_SERVICE:
| Service | Format | Example Payload | |---------|--------|----------------| | Discord | content field | { "content": "Hello", "username": "Bot" } | | Teams | Adaptive Card | { "type": "message", "attachments": [{ "contentType": "application/vnd.microsoft.card.adaptive", "content": { "type": "AdaptiveCard", "body": [{ "type": "TextBlock", "text": "Hello" }] } }] } | | Slack | text field | { "text": "Hello" } | | Telegram | text field | { "text": "Hello" } | | Generic | text field | { "text": "Hello", "username": "Bot" } |
MCP Configuration
Discord: ``json { "mcpServers": { "webhook-discord": { "command": "bun", "args": ["-y", "@keshav-k3/webhook-mcp"], "env": { "WEBHOOK_URL": "https://discord.com/api/webhooks/YOUR_WEBHOOK_ID/YOUR_WEBHOOK_TOKEN" } } } } ``
Teams (Power Automate): ``json { "mcpServers": { "webhook-teams": { "command": "bun", "args": ["-y", "@keshav-k3/webhook-mcp"], "env": { "WEBHOOK_URL": "https://...powerplatform.com/.../workflows/.../triggers/manual/paths/invoke?..." } } } } ``
Slack / Telegram / Generic: ``json { "mcpServers": { "webhook-slack": { "command": "bun", "args": ["-y", "@keshav-k3/webhook-mcp"], "env": { "WEBHOOK_URL": "https://hooks.slack.com/services/YOUR/WEBHOOK/URL" } } } } ``
Tools
send_message
Send a text message to the configured webhook endpoint. The message format adapts based on the detected service.
Parameters:
content(string, required): Message content to sendusername(string, optional): Display name (supported by Discord and generic webhooks)avatar_url(string, optional): Avatar URL (supported by Discord and generic webhooks)
send_json
Send an arbitrary JSON object to the configured webhook endpoint. Use this for full control over the payload format.
Parameters:
body(object, required): JSON object to POST
License
MIT











