Webhooks are the shortest path from a script to a Discord channel, and this is that path exposed to an agent. The per-call display name and avatar are the detail that makes it more than a notifier: several agents or several job types can post to the same channel and stay distinguishable. It only sends — there is no reading, no history, no reactions — so pair it with something else if you need a conversation rather than an announcement.
A single-tool MCP server that posts to a Discord webhook. There is no bot, no gateway connection and no permissions model to reason about: the webhook URL is the channel, and the server sends messages to it.
- A message posted to the configured Discord channel, with the message body required and the display name and avatar URL optional per call — `send_message`
- One tool, which means it can sit in an always-on client config without costing much context
- A documented `alwaysAllow` entry, so the send can be pre-approved rather than prompting on every call
A Discord webhook URL for the channel you want to post to, passed as `DISCORD_WEBHOOK_URL`. Install with `npm install @genpm/mcp-server-discord-webhook` or launch with `npx -y @genpm/mcp-server-discord-webhook`; the package is `@genpm/mcp-server-discord-webhook` (0.1.0 in package.json) with a `mcp-server-discord-webhook` binary. A webhook URL is itself the credential — anyone holding it can post to that channel, so treat it like a secret and rotate it in Discord if it leaks.
One command plus a key — npx -y @genpm/mcp-server-discord-webhook, then supply credentials
