-
Notifications
You must be signed in to change notification settings - Fork 6
Description
Summary
The Slack MCP plugin currently operates as a tool-based integration — Claude can search, read, and send messages only when explicitly invoked. With Claude Code Channels (research preview, v2.1.80+), the plugin could push Slack messages into a Claude Code session in real time, enabling Claude to react to conversations as they happen.
What are Channels?
A channel is an MCP server that declares the claude/channel capability and emits notifications/claude/channel events. Claude Code spawns it as a local subprocess over stdio. Channels can be:
- One-way: forward messages/events for Claude to observe and act on
- Two-way: also expose a reply tool so Claude can respond back through the platform
See the Channels reference for the full contract.
What this would look like
The plugin would need a local server component that:
- Declares
claude/channelcapability in the MCPServerconstructor - Receives Slack messages (via Slack's Events API, Socket Mode, or polling) and emits
notifications/claude/channelevents with message content and metadata (channel, user, thread_ts, etc.) - Exposes a reply tool so Claude can send messages back to the originating channel/thread
- Gates inbound messages on sender identity to prevent prompt injection (allowlist-based)
- Optionally supports permission relay (
claude/channel/permission) so tool approval prompts can be forwarded to Slack and answered there
Current architecture gap
Today the plugin is purely declarative — .mcp.json points to Slack's remote MCP server at https://mcp.slack.com/mcp and all tools are served remotely. Channels require a local subprocess that communicates over stdio, so this would need a new local server component alongside the existing remote MCP configuration.
Use cases
- Get notified in a Claude Code session when someone mentions you or a topic you're working on
- Have Claude monitor a channel and summarize or act on messages as they arrive
- Reply to Slack threads directly from a Claude Code session without manually invoking tools
- Approve/deny Claude's tool use from Slack on mobile (permission relay)
Notes
- Channels are currently in research preview and require the
--dangerously-load-development-channelsflag for custom implementations - Team and Enterprise orgs must explicitly enable channels
- The Telegram and Discord plugins are good reference implementations for chat-platform channels with pairing flows and sender gating