Skip to main content
Glama
keshav-k3

webhook-mcp

by keshav-k3
README.md
# webhook-mcp
[![npm version](https://img.shields.io/npm/v/@keshav-k3/webhook-mcp)](https://www.npmjs.com/package/@keshav-k3/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

```bash
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 send
- `username` (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