mcp server
claude-code-channels
Connect Claude Code to messaging platforms (Telegram, Discord, Slack, LINE, WhatsApp) for bidirectional, remote interaction with your local AI agent.
Set up
Runs on your computer. Pick your agent and operating system.
This project does not publish an install method we can turn into a config. Follow the README instead.
README
synced Oct 21, 2026claude-code-channels
English | 繁體中文
Connect Claude Code to messaging platforms for bidirectional, remote interaction with your local AI agent.
What This Is
A project-level setup for running Claude Code with the official Channels plugin system. Send tasks from your phone, approve risky operations remotely, and share files -- all through your preferred messaging app.
Supported Channels
| Channel | Status | Docs |
|---|---|---|
| docs/telegram/ | ||
| docs/discord/ | ||
| docs/slack/ | ||
| docs/line/ | ||
| docs/whatsapp/ | ||
| docs/teams/ |
Quick Start
Prerequisites
- Bun runtime
- Claude Code v2.1.80+
- A bot token for your target channel (e.g., Telegram's @BotFather)
Setup
-
Clone and configure:
git clone https://github.com/osisdie/claude-code-channels.git cd claude-code-channels cp .env.example .env # Edit .env — add your bot token(s) -
Install a channel plugin (inside a Claude Code session):
/plugin marketplace add anthropics/claude-plugins-official /plugin install telegram@claude-plugins-official /telegram:configure <YOUR_BOT_TOKEN> -
Pair your account (varies per channel — see channel docs).
-
Launch:
./start.sh telegram
Docker (Broker Channels)
Each broker channel can run as an isolated Docker container:
# Build and run WhatsApp broker
docker compose up whatsapp
# Run multiple brokers
docker compose up slack whatsapp
# Run all brokers
docker compose up
Note: Set
ANTHROPIC_API_KEYin your.envfile. The Claude CLI authenticates via API key inside the container.
Architecture
Messaging App (Mobile/Desktop)
| (Platform API, outbound polling by plugin)
Channel Plugin (Bun subprocess, MCP Server)
| (stdio transport)
Claude Code Session (local, full filesystem access)
No inbound ports, webhooks, or external servers needed. WSL2 compatible.
For a deep dive into the official plugin internals, see Plugin Architecture.
Usage Examples
Remote Task Execution
# From Telegram/Discord, send:
What files changed in the last commit?
# Claude Code executes `git diff HEAD~1` and replies with the diff summary
Approval Workflow
# Claude Code encounters a destructive operation:
Bot: "About to run `rm -rf dist/` — approve or reject?"
You: approve
# Claude Code proceeds
Multi-Channel Launch
# Start with multiple channels simultaneously
./start.sh telegram discord
Project Structure
.
├── start.sh # Multi-channel launcher
├── docker-compose.yml # Per-broker Docker services
├── docker/ # Per-channel Dockerfiles
├── .env.example # Environment variable template
├── .gitignore # Excludes secrets & channel state
├── CHANGELOG.md
├── CONTRIBUTING.md
├── SECURITY.md
├── LICENSE
├── README.md
├── README.zh-TW.md
├── docs/
│ ├── prerequisites.md # Shared setup (Bun, Claude Code)
│ ├── prerequisites.zh-tw.md # Shared setup (zh-TW)
│ ├── issues.md # Known issues (cross-channel)
│ ├── plugins/
│ │ ├── architecture.md # Official plugin architecture (EN)
│ │ └── architecture.zh-tw.md # Official plugin architecture (zh-TW)
│ ├── telegram/
│ │ ├── plan.md # Integration planning doc
│ │ ├── plan.zh-tw.md # Planning doc (zh-TW)
│ │ ├── install.md # Installation & integration notes
│ │ ├── install.zh-tw.md # Installation notes (zh-TW)
│ │ └── security.png
│ ├── discord/
│ │ ├── plan.md # Integration planning doc
│ │ ├── plan.zh-tw.md # Planning doc (zh-TW)
│ │ ├── install.md # Installation & integration notes
│ │ └── install.zh-tw.md # Installation notes (zh-TW)
│ ├── slack/
│ │ ├── plan.md # Integration plan (MCP only, not channel)
│ │ ├── install.md # Installation & integration notes
│ │ └── install.zh-tw.md # Installation notes (zh-TW)
│ ├── line/
│ │ ├── plan.md # Integration planning doc
│ │ ├── plan.zh-tw.md # Planning doc (zh-TW)
│ │ ├── install.md # Installation & integration notes
│ │ └── install.zh-tw.md # Installation notes (zh-TW)
│ ├── whatsapp/
│ │ ├── plan.md # Integration planning doc
│ │ ├── install.md # Installation & integration notes
│ │ └── install.zh-tw.md # Installation notes (zh-TW)
│ └── teams/
│ ├── plan.md # Integration planning doc
│ ├── install.md # Installation & integration notes
│ └── install.zh-tw.md # Installation notes (zh-TW)
├── external_plugins/
│ ├── slack-channel/
│ │ └── broker.ts # Slack message broker
│ ├── line-channel/
│ │ ├── broker.ts # LINE webhook broker (direct, needs ngrok)
│ │ ├── broker-relay.ts # LINE relay bridge (polls cloud relay)
│ │ └── relay/ # Cloudflare Worker (cloud webhook)
│ ├── whatsapp-channel/
│ │ ├── broker-relay.ts # WhatsApp relay bridge
│ │ └── relay/ # Cloudflare Worker (cloud webhook)
│ └── teams-channel/
│ ├── broker-relay.ts # Teams relay bridge
│ ├── relay/ # Cloudflare Worker (cloud webhook)
│ └── manifest/ # Teams app manifest for sideloading
├── lib/
│ ├── sessions/ # Session memory (STM + LTM + compacting)
│ └── safety/ # Content filter, quota, audit logging
├── scripts/
│ ├── verify_slack.sh # Slack token verification & smoke test
│ ├── verify_whatsapp.sh # WhatsApp relay verification & smoke test
│ └── yt/ # YouTube-to-PDF pipeline (/yt2pdf)
│ ├── get_transcript.py # Extract transcript (subtitles → Whisper)
│ ├── build_html.py # Markdown → styled HTML (base64 images)
│ ├── build_pdf.py # HTML → PDF via headless Chrome
│ ├── upload_b2.py # Upload to B2 + presigned URL
│ └── yt2pdf.py # Orchestrator (HTML→PDF→B2)
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ └── feature_request.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── workflows/ci.yml
└── .claude/ # (gitignored)
├── agents/
│ └── pre-push-reviewer.md
├── settings.local.json # Permission whitelist
└── channels/<channel>/ # Per-channel state (tokens, access)
Screenshots
Telegram
| Ask | Reply | Inline Buttons |
|---|---|---|
YouTube to PDF (/yt2pdf)
| Command | Result | PDF Output |
|---|---|---|
| summary_en.pdf |
Send /yt2pdf <YouTube URL> from Telegram or Discord. Claude extracts the transcript, generates a bilingual summary (EN + zh-TW), builds a styled PDF with thumbnail, and uploads to B2 Cloud Storage with a presigned download link.
Discord
| Ask | Reply |
|---|---|
Slack
| Ask | Reply |
|---|---|
LINE
| Ask (Flower) | Ask (Weather) |
|---|---|
LINE Relay (Cloud)
| Ask (EN) | Ask (zh-TW) |
|---|---|
WhatsApp Relay (Cloud)
| Ask (Flower) | Ask (Weather) |
|---|---|
Claude Code Terminal
Docs
Per-Channel
- Telegram -- Installation & Integration Notes
- Telegram -- Planning Document
- Discord -- Installation & Integration Notes
- Discord -- Planning Document
- Slack -- Installation & Integration Notes
- Slack -- Planning Document
- LINE -- Installation & Integration Notes
- LINE -- Planning Document
- LINE -- Relay Deployment Guide
- WhatsApp -- Installation & Integration Notes
- WhatsApp -- Planning Document
- Teams -- Installation & Integration Notes
- Teams -- Planning Document
General
- Prerequisites (Bun, Claude Code)
- Plugin Architecture (繁體中文)
- Session Memory
- Safety & Abuse Prevention
- Known Issues (Cross-Channel)
- Contributing
- Security Policy
- Changelog