Discord plugin: notifications/claude/channel not delivered to Claude Code

Resolved 💬 3 comments Opened Mar 21, 2026 by nullvariant Closed Mar 21, 2026

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

  1. Install the Discord plugin (discord@claude-plugins-official)
  2. Configure bot token and add a user to the allowlist in access.json
  3. Start Claude Code with --channels plugin:discord
  4. 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 handleInboundsendTyping() 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() on mcp.notification() (server.ts:729) does not appear to fire (no stderr output observed)
  • The MCP server process is correctly parented to the Claude process

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗