Hi! We maintain a fork at Bytelope/mcp-discord that adds a feature which might interest others here, so leaving a pointer.
What it does
An optional gateway message watcher: when the MCP server is used by a long-lived agent (rather than a one-shot chat client), it listens for inbound Discord messages on configured channels and pushes a debounced, single-line notification into the agent's terminal session, e.g.
[discord] 3 new: #general(@jahwag) #tasks(@amara)
The notification is deliberately minimal (channel + author only) — the agent decides whether to fetch full content via the existing read_messages tool. This turns the server from purely pull-based into something agents can be woken up by.
Details:
- Enabled only when
DISCORD_WATCH_CHANNELS (comma-separated channel IDs) and a delivery target are both set; default behavior is unchanged.
- Bursts are debounced into one notification; self-echoes are filtered.
- Watches forum/thread messages via the parent channel too.
- Messages that @-mention other users (but not this bot) are skipped, so multi-agent setups don't wake every agent on a directed ping.
- Covered by unit tests (tests/test_watch.py).
Implementation: src/discord_mcp/watch.py
Caveat
Our delivery mechanism is currently tmux send-keys into a named session, because our agents run in tmux. For upstream it should probably be generalized to a pluggable sink (stdout line, webhook, file, …) — the watcher core is already transport-agnostic and takes a callback.
If there's interest, happy to generalize the delivery side and open a PR. Otherwise the fork is there for anyone who needs it. Thanks for the project!
Hi! We maintain a fork at Bytelope/mcp-discord that adds a feature which might interest others here, so leaving a pointer.
What it does
An optional gateway message watcher: when the MCP server is used by a long-lived agent (rather than a one-shot chat client), it listens for inbound Discord messages on configured channels and pushes a debounced, single-line notification into the agent's terminal session, e.g.
The notification is deliberately minimal (channel + author only) — the agent decides whether to fetch full content via the existing
read_messagestool. This turns the server from purely pull-based into something agents can be woken up by.Details:
DISCORD_WATCH_CHANNELS(comma-separated channel IDs) and a delivery target are both set; default behavior is unchanged.Implementation: src/discord_mcp/watch.py
Caveat
Our delivery mechanism is currently
tmux send-keysinto a named session, because our agents run in tmux. For upstream it should probably be generalized to a pluggable sink (stdout line, webhook, file, …) — the watcher core is already transport-agnostic and takes a callback.If there's interest, happy to generalize the delivery side and open a PR. Otherwise the fork is there for anyone who needs it. Thanks for the project!