MCP notifications/claude/channel notifications not delivered to session (Telegram plugin)
Bug Description
MCP notifications with method notifications/claude/channel are not being delivered to the Claude Code session, even though the notification is sent successfully by the MCP server.
Evidence
I have confirmed through debugging that:
- MCP notification is sent successfully - Log shows:
````
2026-03-20T21:06:23.419Z attempting notification for chat_id=1618126757, text="Can u see this Monsieur..."
2026-03-20T21:06:23.422Z notification sent successfully
- MCP connection is working - Outbound MCP tools (reply, react, edit_message) work correctly. I can send messages TO Telegram.
- MCP server is properly connected - Process tree confirms the MCP server is a child of the Claude Code process.
- Inbound notifications are NOT delivered - The
<channel source="telegram">messages never appear in the session, despite the notification being sent.
Technical Details
Environment
- Claude Code version: 2.1.80
- Telegram plugin version: 0.0.1
- MCP SDK version: 1.27.1
- OS: macOS (Darwin 25.3.0)
MCP Server Configuration
{
"mcpServers": {
"telegram": {
"command": "bun",
"args": ["run", "--cwd", "...", "--shell=bun", "--silent", "start"]
}
}
}
Server Capabilities Declaration
capabilities: {
tools: {},
experimental: { 'claude/channel': {} }
}
Notification Format
mcp.notification({
method: 'notifications/claude/channel',
params: {
content: text,
meta: {
chat_id: string,
message_id: string,
user: string,
user_id: string,
ts: string
}
}
})
Process Tree (confirmed MCP server is child of Claude Code)
claude --model glm-5:cloud (PID 37304)
└── bun run ... start (PID 37312)
└── bun server.ts (PID 37317)
Debug Log
2026-03-20T21:06:23.419Z attempting notification for chat_id=1618126757, text="Can u see this Monsieur..."
2026-03-20T21:06:23.422Z notification sent successfully
Expected Behavior
When the MCP server sends a notifications/claude/channel notification, Claude Code should deliver the message content to the session as a <channel source="telegram"> message, as documented in the plugin's instructions.
Actual Behavior
The notification is written to stdout by the MCP server (confirmed by "notification sent successfully" log), but Claude Code does not process/forward the notification. The session never receives the <channel> message.
Additional Context
- The Telegram plugin is installed and enabled via
enabledPluginsin settings.json - Outbound MCP tools work correctly (reply, react, edit_message)
- The MCP server uses StdioServerTransport (stdin/stdout)
- User sees "typing..." indicator in Telegram (bot receives messages and processes them)
- Only inbound channel notifications fail
Possible Root Cause
Claude Code may not have a handler registered for the notifications/claude/channel notification type. The MCP SDK's _onnotification method silently ignores notifications without handlers:
_onnotification(notification) {
const handler = this._notificationHandlers.get(notification.method) ?? this.fallbackNotificationHandler;
// Ignore notifications not being subscribed to.
if (handler === undefined) {
return;
}
// ...
}
Steps to Reproduce
- Install telegram plugin:
/plugin install telegram@claude-plugins-official - Configure bot token:
/telegram:configure <token> - Enable plugin in settings.json:
"enabledPlugins": { "telegram@claude-plugins-official": true } - Start session with MCP config or enabled plugin
- Send a message to the Telegram bot
- Observe: Bot sends "typing..." but notification never arrives in session
Workaround
None currently. Outbound messages work, but inbound messages cannot be received.
This issue has 6 comments on GitHub. Read the full discussion on GitHub ↗