An independent messaging-channel bridge for Claude Code, built on MCP. The first adapter is Slack Socket Mode; Discord, Telegram, and Lark adapters are planned behind the same channel interface.
Slack Events API (Socket Mode)
|
v
Access policy + thread gate
|
v
notifications/claude/channel ---> Claude Code
^ |
| v
Slack Web API <--------- MCP tools
This is a channel MCP server, not a model proxy. Inbound messages are emitted
with the experimental claude/channel capability. Outbound actions are MCP
tools: reply, react, edit_message, fetch_messages, and
download_attachment.
- Only allowlisted Slack users and channels can trigger the bridge.
- A top-level channel message must mention the bot by default.
- Follow-up messages inside a thread started with the bot do not need another mention.
- Direct messages are accepted only from allowlisted users.
- Attachment metadata is delivered immediately; bytes are downloaded only
when Claude calls
download_attachment. - Tokens and runtime state stay outside the repository.
Create a Slack app with Socket Mode enabled.
Bot scopes:
app_mentions:readchannels:historychat:writefiles:readreactions:readreactions:writeusers:read
Bot events:
app_mentionmessage.channelsmessage.im
Create an App-Level Token with connections:write.
npm install
npm run buildCreate the state directory:
mkdir -p ~/.claude/channels/channel-bridge
chmod 700 ~/.claude/channels/channel-bridgeCreate ~/.claude/channels/channel-bridge/.env:
SLACK_BOT_TOKEN=xoxb-REPLACE_ME
SLACK_APP_TOKEN=xapp-REPLACE_METhen protect it:
chmod 600 ~/.claude/channels/channel-bridge/.envCopy config/access.example.json to
~/.claude/channels/channel-bridge/access.json, replace the sample Slack IDs,
and set mode 600.
For local development, add this repository as a Claude Code plugin or register
its .mcp.json, then launch Claude Code with the channel enabled:
claude --channels plugin:channel-bridge@your-marketplaceThe exact install command depends on the marketplace/repository publishing
method. During development, npm run dev can validate Slack connectivity and
npm test validates the access gate.
- MCP channel capability and inbound Slack notifications
- Slack reply/react/edit/history/attachment tools
- Allowlist and mention/thread policy
- Pairing command and runtime access management
- Permission-request buttons from phone
- Discord adapter
- Telegram adapter
- Lark/Feishu adapter
- Adapter contract and conformance test suite
- Installable Claude Code marketplace package
Never commit .env, bot tokens, downloaded attachments, or runtime state.
Use a dedicated low-privilege bot for development. The bridge enforces both a
user allowlist and a channel allowlist before delivering content to Claude.
MIT