WeChat channel plugin for Claude Code — pushes WeChat messages into a running Claude Code session via the Wisdom automation API.
Project description
WisdomChannel — WeChat Channel for Claude Code
A Claude Code channel plugin that pushes WeChat desktop messages into your running Claude Code session, and lets Claude reply back through the same chat — like the official Telegram, Discord, and iMessage channels.
It is the client side of the Wisdom WeChat automation service: Wisdom runs on the Windows host with WeChat desktop and exposes an HTTP + WebSocket API; this MCP server runs locally next to Claude Code and bridges the two.
┌──────────────────┐ ┌────────────────┐ ┌────────────────┐
│ WeChat desktop │ │ Wisdom API │ │ wisdom_channel │ ┌──────────────┐
│ (Windows host) │ ───► │ HTTP + WS │ ───► │ (this repo) │ ───► │ Claude Code │
│ + Frida hooks │ │ :8000 │ │ stdio MCP │ │ CLI session │
└──────────────────┘ └────────────────┘ └────────────────┘ └──────────────┘
Features
- Push every inbound WeChat message into the active Claude Code session
- Claude replies through the
replytool — answer goes back into WeChat - Works for both private DMs and group chats (only forwards
@youmentions in groups) - Allowlist + admin trust levels (
access.json) - Tools:
reply,list_contacts,list_conversations,get_messages,get_status,manage_access - Talks to a remote Wisdom server over HTTP/WebSocket — Wisdom does not have to run on the same machine as Claude Code
Requirements
- Python 3.10+
- A running Wisdom server with WeChat desktop logged in (any reachable host)
- Claude Code CLI v2.1.80+
Install
pip install wisdom-channel
This installs the wisdom-channel console script. To develop from source instead:
git clone https://github.com/AceDataCloud/WisdomChannel.git
cd WisdomChannel
pip install -e .
Configure
Create the channel state directory and an .env pointing at your Wisdom server:
mkdir "$env:USERPROFILE\.claude\channels\wechat" -Force
@"
WISDOM_API_URL=http://your-wisdom-host:8000
WISDOM_API_TOKEN=
WECHAT_BOT_NAME=
"@ | Set-Content "$env:USERPROFILE\.claude\channels\wechat\.env"
| Variable | Description |
|---|---|
WISDOM_API_URL |
URL of the Wisdom REST API (default http://localhost:8000) |
WISDOM_API_TOKEN |
Optional bearer token if Wisdom auth is enabled |
WECHAT_BOT_NAME |
Your WeChat display name (auto-detected if empty) |
Optional access control at ~/.claude/channels/wechat/access.json:
{
"policy": "allowlist",
"allowFrom": ["Alice", "Work Group"],
"admins": ["Alice"]
}
| Policy | Behavior |
|---|---|
all (default) |
Forward every inbound message |
allowlist |
Forward only senders in allowFrom / admins |
disabled |
Drop everything |
admins are fully trusted — Claude executes their requests without confirmation.
allowFrom users get polite, read-only assistance.
Run
The repo ships an .mcp.json that registers the channel as wechat:
{
"mcpServers": {
"wechat": {
"command": "python",
"args": ["-m", "wisdom_channel"],
"cwd": "."
}
}
}
Launch Claude Code with the channel from the project root:
$env:ANTHROPIC_API_KEY = "sk-ant-..."
claude --dangerously-skip-permissions `
--dangerously-load-development-channels server:wechat
Run it in a persistent, interactive terminal (a real TTY — e.g. an RDP session on the Wisdom host,
tmux/screen, or a foreground terminal). Channels push inbound messages into a live Claude Code session, so the process must stay running and attached. Launched detached / without a TTY, Claude Code falls back to--channelsrequires Claude Code v2.1.80+; the--dangerously-load-development-channelsflag loads an unpublished (development) channel like this one.
What happens:
- Claude Code reads
.mcp.jsonand spawnspython -m wisdom_channelover stdio - The channel loads
~/.claude/channels/wechat/.envand probes Wisdom atWISDOM_API_URL - It connects to Wisdom's WebSocket and forwards inbound WeChat messages as
notifications/claude/channel - Claude calls the
replytool, which posts to Wisdom's/api/messages/send - Wisdom drives WeChat desktop and the message is delivered
Headless auto-reply (no Claude Code session)
The channel above needs a persistent interactive Claude Code session. For an unattended host (no live terminal), run the bridge instead:
wisdom-channel bridge # optional: --model sonnet
It connects to the Wisdom WebSocket and, for each allowed inbound message,
shells out to claude -p and posts the reply back through Wisdom — the same
"WeChat in → Claude answers → WeChat out" loop, without a TTY. It honors the
same access.json allowlist and group @-mention gating. Requires the claude
CLI on PATH.
Standalone test
python -m wisdom_channel --test
Exercises Wisdom REST + WebSocket without launching Claude Code.
Logs
| What | Where |
|---|---|
| Channel log | ~/.claude/channels/wechat/mcp.log |
| Channel state | ~/.claude/channels/wechat/ |
Related
- Wisdom — the WeChat automation backend
- Claude Code channels documentation
- Anthropic Telegram plugin — the reference design
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wisdom_channel-2026.6.13.2.tar.gz.
File metadata
- Download URL: wisdom_channel-2026.6.13.2.tar.gz
- Upload date:
- Size: 24.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ad1e211fec1f0b8d8550b89b280cedaeee3127259b7b6afab6206c0b62382dc
|
|
| MD5 |
2859bbdebcadd9c3e7fe0563cb9c5379
|
|
| BLAKE2b-256 |
45093f449f7c332286fecd0fbb4b3a766bf8b0f6406c9670faf0b36a8e997c7f
|
File details
Details for the file wisdom_channel-2026.6.13.2-py3-none-any.whl.
File metadata
- Download URL: wisdom_channel-2026.6.13.2-py3-none-any.whl
- Upload date:
- Size: 25.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ab4596918c78e9a9116a8d395f5729ecd8eefd97383e8093586eac18fcd8f07
|
|
| MD5 |
7c8b4b4111611323ca9c9a1b2ad541dd
|
|
| BLAKE2b-256 |
587a654034a70d8fec4c783bd14b657cb9344488d5612132b3e35f31c107d772
|