| name | onezion-wechat-mac-mcp |
| description | Mac 微信 MCP 全家桶 — 读取聊天记录 + 发送消息。基于 chatlog_alpha (Go HTTP API + MCP SSE) 读消息,桌面控制 (onezion-desktop-control-for-macos) 发消息。触发词:微信 MCP、wechat mcp、读微信、发微信、微信聊天记录、wechat chat history、wechat automation。 |
| triggers | ["微信 MCP","wechat mcp","读微信","发微信","微信聊天记录","wechat chat history","wechat automation"] |
| agent_created | true |
| version | 2.0.0 |
| updated | 2026-05-03 |
onezion-wechat-mac-mcp Skill
Mac 微信全功能方案:读消息 (chatlog_alpha) + 发消息 (桌面控制)。
架构
┌─────────────────────────────────────────────────────────────┐
│ Your AI Agent │
└──────────┬───────────────────────────┬──────────────────────┘
│ │
HTTP API / CLI 桌面控制层
│ │
┌────────▼─────────┐ ┌────────────▼────────────────┐
│ chatlog_alpha │ │ 优先级: │
│ (端口 5030) │ │ 1. onezion-desktop-control │
│ │ │ (截图+OCR+pyautogui) │
│ 读历史、搜索、 │ │ 2. WeChat-MCP │
│ 联系人、群聊、 │ │ (Accessibility API) │
│ 媒体 │ │ ⚠️ 4.1.9 兼容性有问题 │
└────────┬─────────┘ └────────────┬────────────────┘
│ │
解密本地 SQLite macOS Accessibility API
数据库(内存扫描) + 截图 OCR + pyautogui
│ │
┌────────▼───────────────────────────▼──────────────────┐
│ WeChat for Mac (4.1.9) │
└───────────────────────────────────────────────────────┘
前置条件
- macOS (Apple Silicon arm64)
- WeChat for Mac 已安装并登录 (当前 4.1.9)
- Go 1.21+ (已装)
- Python 3.12+ (已装)
- sqlcipher (已装 via brew)
- 需要 sudo 权限 (chatlog 内存扫描需要)
- 需要 Accessibility 权限 (发消息需要)
- 需要 Screen Recording 权限 (截图 OCR 需要)
- 建议关闭微信自动更新:
defaults write com.tencent.xinWeChat AutoUpdateEnabled -bool false
文件位置
| 组件 | 路径 |
|---|
| chatlog_alpha 源码+二进制 | ~/wechat-tools/chatlog_alpha/ |
| chatlog 二进制 | ~/wechat-tools/chatlog_alpha/chatlog |
| wechat-db-decrypt-macos | ~/wechat-tools/wechat-db-decrypt-macos/ |
| WeChat-MCP | ~/wechat-tools/WeChat-MCP/ |
| 桌面控制 skill | ~/.workbuddy/skills/onezion-desktop-control-for-macos/ |
| 本 skill | ~/.workbuddy/skills/onezion-wechat-mac-mcp/ |
第一部分:读取聊天记录 (chatlog_alpha)
启动服务
cd ~/wechat-tools/chatlog_alpha && sudo ./chatlog
- 默认监听
http://127.0.0.1:5030
- 首次运行需要 sudo(内存扫描提取密钥)
- 浏览器访问
http://127.0.0.1:5030/ 有 Web UI
- TUI 里点「启动 HTTP 服务」开启 API
CLI 用法
cd ~/wechat-tools/chatlog_alpha && ./chatlog http list
cd ~/wechat-tools/chatlog_alpha && ./chatlog http call --endpoint sessions --query format=json
cd ~/wechat-tools/chatlog_alpha && ./chatlog http call --endpoint history --query chat="InnoAI x HKU" --query limit=100 --query format=json
cd ~/wechat-tools/chatlog_alpha && ./chatlog http call --endpoint search --query keyword=图片 --query limit=20
cd ~/wechat-tools/chatlog_alpha && ./chatlog http call --endpoint db_query \
--query group=message \
--query file=message_0.db \
--query sql='select local_id,create_time from MSG limit 5'
cd ~/wechat-tools/chatlog_alpha && ./chatlog http call --endpoint image --path-param key=<media_key>
cd ~/wechat-tools/chatlog_alpha && ./chatlog http call --endpoint cache_clear --method POST
MCP 集成
chatlog_alpha 自带 MCP SSE 协议,启动服务后:
- MCP SSE endpoint:
http://127.0.0.1:5030/sse
- MCP POST endpoint:
http://127.0.0.1:5030/mcp
关键 API Endpoints
| 别名 | 路径 | 说明 |
|---|
| sessions | GET /api/v1/sessions | 会话列表 |
| history | GET /api/v1/history | 聊天历史 |
| search | GET /api/v1/search | 全局搜索 |
| contacts | GET /api/v1/contacts | 联系人 |
| chatrooms | GET /api/v1/chatrooms | 群聊列表 |
| stats | GET /api/v1/stats | 统计 |
| image | GET /image/{key} | 图片媒体 |
| mcp | POST /mcp | MCP 协议入口 |
| mcp_sse | GET /sse | MCP SSE 流 |
第二部分:发送消息(桌面控制,推荐)
为什么用桌面控制而不是 WeChat-MCP?
WeChat-MCP 依赖 Accessibility API 树结构读取搜索结果,在 WeChat 4.1.9 上搜索功能不可用(AXTitle 全部为空)。桌面控制 skill 用截图+OCR+pyautogui 的方式,不依赖 AX 树结构,更稳定。
工作流
1. AppleScript 激活微信 → python applescript_app.py --action activate --app "WeChat"
2. 截图 → python capture_screen.py
3. OCR 定位聊天名称 → python locate_text_ocr.py --text "联系人名"
4. 点击进入聊天 → python mouse.py --action click --x X --y Y
5. 截图确认当前聊天
6. 定位输入框 → OCR 或坐标
7. 粘贴消息 → python keyboard.py --action paste --text "消息内容"
8. 回车发送 → python keyboard.py --action press --key enter
快速发送脚本
以下流程可以用 AppleScript 直接完成,不需要截图 OCR:
python ~/.workbuddy/skills/onezion-desktop-control-for-macos/scripts/applescript_app.py --action activate --app "WeChat"
osascript -e '
tell application "System Events"
tell process "WeChat"
set frontmost to true
-- 点击搜索框 (Cmd+F)
keystroke "f" using {command down}
delay 0.3
-- 输入联系人名称
keystroke "联系人名称"
delay 0.5
-- 回车选中第一个搜索结果
key code 36
delay 0.3
-- 输入消息
keystroke "消息内容"
-- 回车发送
key code 36
end tell
end tell
'
SKILL_DIR=~/.workbuddy/skills/onezion-desktop-control-for-macos/scripts
python $SKILL_DIR/applescript_app.py --action activate --app "WeChat"
sleep 0.5
python $SKILL_DIR/capture_screen.py --output /tmp/wechat_screen.png
python $SKILL_DIR/keyboard.py --action paste --text "消息内容"
sleep 0.2
python $SKILL_DIR/keyboard.py --action press --key enter
向特定群/人发消息的完整流程
SKILL_DIR=~/.workbuddy/skills/onezion-desktop-control-for-macos/scripts
python $SKILL_DIR/applescript_app.py --action activate --app "WeChat"
sleep 0.5
osascript -e '
tell application "System Events"
tell process "WeChat"
set frontmost to true
keystroke "f" using {command down}
delay 0.3
keystroke "群名或人名"
delay 0.5
key code 36 -- 回车选中
end tell
end tell'
sleep 0.3
python $SKILL_DIR/capture_screen.py --output /tmp/wechat_chat.png
python $SKILL_DIR/keyboard.py --action paste --text "你要发的消息"
sleep 0.2
python $SKILL_DIR/keyboard.py --action press --key enter
权限要求
- Accessibility(辅助功能)— AppleScript 操作微信需要
- Screen Recording(屏幕录制)— 截图 OCR 方式需要
- 路径:系统设置 → 隐私与安全性 → 辅助功能 / 屏幕录制
第三部分:发送消息(WeChat-MCP,备选)
⚠️ 已知问题
WeChat-MCP 在 WeChat 4.1.9 上有兼容性问题:
- 搜索功能的 Accessibility 树不可读(AXTitle 为空)
- 如果目标聊天在左侧会话列表的前 13 个里,仍可操作
- 推荐优先用桌面控制方案
启动
wechat-mcp --transport stdio
MCP Tools
| Tool | 说明 |
|---|
fetch_messages_by_chat | 获取某个聊天的最近消息 |
reply_to_messages_by_chat | 向某个聊天发送回复 |
add_contact_by_wechat_id | 通过微信号加好友 |
publish_moment_without_media | 发朋友圈(纯文字) |
第四部分:备选读取方案 (wechat-db-decrypt-macos)
如果 chatlog_alpha 有问题,可以用这个更轻量的替代。
位置
~/wechat-tools/wechat-db-decrypt-macos/
步骤
cd ~/wechat-tools/wechat-db-decrypt-macos
PYTHONPATH=$(lldb -P) python3 find_key_memscan.py
python3 decrypt_db.py
python3 export_messages.py --all
python3 export_messages.py -c "张三" -n 50
python3 export_messages.py -s "关键词"
python3 mcp_server.py
微信签名修复(每次更新后需重做)
如果 chatlog 报 task_for_pid 权限不足:
codesign --remove-signature /Applications/WeChat.app/Contents/Frameworks/vlc_plugins/librtp_mpeg4_plugin.dylib
codesign --force --deep --sign - /Applications/WeChat.app
killall WeChat && sleep 2 && open /Applications/WeChat.app
常见问题
Q: chatlog 启动后显示空列表?
A: 确保微信已登录且有聊天记录。首次加载可能需要几秒。
Q: WeChat-MCP 找不到微信窗口?
A: WeChat 4.1.9 的 AX 树结构变了,这是兼容性问题。改用桌面控制方案。
Q: SIP 需要关闭吗?
A: wechat-db-decrypt-macos 需要。chatlog_alpha 的内存扫描也需要 sudo,但不一定需要关 SIP。
Q: 微信更新后工具失效?
A: 关闭自动更新:defaults write com.tencent.xinWeChat AutoUpdateEnabled -bool false
Q: 怎么确保桌面控制能定位到聊天?
A: 先用 AppleScript 激活微信 + Cmd+F 搜索,比截图 OCR 定位更可靠。
风险提示
- 微信自动化可能违反腾讯 ToS,有封号风险
- 所有数据在本地处理,不外传
- 建议先用小号测试