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)
npm install @keshav-k3/webhook-mcpThe 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" } |
Discord:
{
"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):
{
"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:
{
"mcpServers": {
"webhook-slack": {
"command": "bun",
"args": ["-y", "@keshav-k3/webhook-mcp"],
"env": {
"WEBHOOK_URL": "https://hooks.slack.com/services/YOUR/WEBHOOK/URL"
}
}
}
}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 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
MIT