Discord MCP plugin notifications/claude/channel not waking up Claude Code REPL

Resolved 💬 3 comments Opened Mar 24, 2026 by melbyngarcon Closed Mar 27, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

The Discord MCP server successfully receives inbound DMs via the Discord gateway and calls mcp.notification({ method: 'notifications/claude/channel', ... }) — but Claude Code never surfaces the notification. The REPL stays idle. No errors on either side.

What Should Happen?

Claude Code should surface the notification as an inbound prompt when a DM is received, allowing the model to read and respond to the Discord message.

Error Messages/Logs

No errors on either side. mcp.notification() resolves without error (.catch() never fires). The notification is silently dropped — Claude Code never acts on it.

Steps to Reproduce

  1. Install and configure the Discord plugin, pair a user via /discord:access
  2. Confirm outbound works (reply tool sends messages fine)
  3. 3. Send a DM to the bot from Discord
  4. 4. Observe: Claude Code does not wake up or display the inbound message

Claude Model

None

Is this a regression?

No, this never worked

Last Working Version

_No response_

Claude Code Version

latest

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

Windows Terminal

Additional Information

Environment:

  • Windows 11 (10.0.26200)
  • - Claude Code CLI (latest)
  • - - Discord plugin v0.0.3 (discord@claude-plugins-official)

What works:

  • Bot connects to Discord gateway (login succeeds, ready event fires)
  • - All tools work: reply, fetch_messages, react, edit_message, download_attachment
  • - - handleInbound() runs without error on message receipt
  • - - - mcp.notification() resolves without error (.catch() never fires)
  • - - - - Server declares capabilities.experimental['claude/channel'] and 'claude/channel/permission'

What doesn't work:

  • notifications/claude/channel is silently dropped — Claude Code never acts on it

Workaround: CronCreate-based polling with fetch_messages every 5 minutes.

View original on GitHub ↗

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