Discord plugin: notifications/claude/channel not delivered to Claude Code
Summary
The Discord MCP plugin (v0.0.1) successfully receives inbound DMs via messageCreate, but mcp.notification({ method: 'notifications/claude/channel', ... }) never reaches Claude Code. Outbound tools (reply, fetch_messages, react, edit_message) all work correctly.
Reproduction steps
- Install the Discord plugin (
discord@claude-plugins-official) - Configure bot token and add a user to the allowlist in
access.json - Start Claude Code with
--channels plugin:discord - Send a DM to the bot from Discord
Expected behavior
The message should appear in the Claude Code session as an inbound channel notification.
Actual behavior
- Discord shows "typing..." indicator (meaning
handleInbound→sendTyping()succeeds) - The typing indicator disappears after ~10 seconds
- No message appears in Claude Code
- No error is visible to the user
Diagnosis
| Step | Status |
|---|---|
| Discord → bot (messageCreate) | ✅ OK |
| gate() → deliver (user in allowlist) | ✅ OK |
| sendTyping() | ✅ OK (typing indicator visible) |
| mcp.notification() → Claude Code | ❌ Not delivered |
| Outbound reply tool | ✅ OK |
| fetch_messages tool | ✅ OK |
The MCP server declares experimental: { 'claude/channel': {} } in capabilities (server.ts:429). Standard request/response tool calls work perfectly. Only the server→client notification path (notifications/claude/channel at server.ts:716-731) fails silently.
Environment
- macOS (Darwin 25.3.0, Apple Silicon)
- Claude Code CLI (latest as of 2025-03-21)
- Discord plugin v0.0.1 (
claude-plugins-official) - MCP server runtime: Bun 1.3.11
- discord.js ^14.14.0
- @modelcontextprotocol/sdk ^1.0.0
Additional context
- Restarting Claude Code does not fix the issue
- Multiple sessions tested with the same result
- The
.catch()onmcp.notification()(server.ts:729) does not appear to fire (no stderr output observed) - The MCP server process is correctly parented to the Claude process
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗