wxauto automation MCP Server for AI development tools
Project description
wxauto MCP Server
微信自动化 MCP (Model Context Protocol) 服务器,为 AI 开发工具提供微信自动化能力。
功能特性
- MCP 协议支持: 完整支持 Model Context Protocol
- 消息操作: 发送文本、图片、文件、链接卡片消息
- 联系人管理: 获取好友列表、切换聊天、获取聊天信息
- 会话管理: 获取会话列表、筛选未读消息
- 文件传输: 发送单个或批量文件
- 好友管理: 获取新好友请求、接受好友、添加新好友
- 多种传输: 支持 stdio、HTTP/SSE 传输方式
- AI 工具集成: 支持 Claude Code、Cursor 等开发工具
- 一键安装: 自动配置到 AI 应用,无需手动编辑配置文件
- 全局单例: 自动检测并复用已运行的服务器实例,避免资源浪费和冲突
系统要求
- Windows 11/10
- Python 3.11+
- 微信已登录
- wxautox4 激活
PyPI 自动发布
本项目已配置 PyPI Publishing,推送版本标签即可自动发布:
# 发布新版本
git tag v1.0.1
git push origin v1.0.1
GitHub Actions 会自动构建并创建 Release,PyPI 会自动发布新版本。
快速安装
pip install wxauto-mcp
使用
一键自动安装(推荐)
wxauto-mcp --install
这将自动配置 MCP Server 到 Claude Desktop 和 Claude Code,无需手动编辑配置文件。
生成配置文件
# 生成配置文件到默认目录 (./mcp-configs)
wxauto-mcp --config
# 生成配置文件到指定目录
wxauto-mcp --config /path/to/configs
手动配置
如果需要手动配置,运行:
wxauto-mcp --config mcp-configs
然后将生成的配置文件内容添加到 AI 应用中:
Claude Desktop 配置文件位置:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
Claude Code 配置文件位置:
%USERPROFILE%\.claude.json
Cursor:在 Settings 的 MCP 配置中添加
启动服务器
# stdio 模式 (默认,用于 MCP 客户端)
wxauto-mcp
# HTTP/SSE 模式
wxauto-mcp-http --port 8000
# 指定主机和端口
wxauto-mcp-http --host 0.0.0.0 --port 9000
可用工具(27个)
系统工具(6个)
wechat_initialize- 初始化微信连接wechat_status- 获取微信运行状态wechat_activate- 激活 wxautox4wechat_check_activation- 检查激活状态wechat_list_tools- 列出所有可用工具get_my_info- 获取我的微信账号信息
消息工具(6个)
send_message- 发送文本消息send_url_card- 发送链接卡片get_messages- 获取当前聊天消息get_history- 获取历史消息get_next_new_message- 获取下一个聊天窗口的新消息send_bulk_messages- 批量发送消息
联系人工具(3个)
get_friends- 获取好友列表get_chat_info- 获取当前聊天信息switch_chat- 切换聊天窗口
会话工具(4个)
get_sessions- 获取会话列表get_recent_groups- 获取最近群聊filter_sessions- 筛选会话列表get_unread_sessions- 获取有未读消息的会话
文件工具(4个)
send_files- 发送文件send_image- 发送图片send_directory_files- 发送整个目录的文件check_file_exists- 检查文件是否存在
好友请求工具(3个)
get_new_friends- 获取新的好友请求列表accept_new_friend- 接受新的好友请求add_friend- 添加新好友
界面工具(1个)
switch_to_contact- 切换到联系人页面
项目结构
wxauto-mcp/
├── src/wxauto_mcp/ # MCP 服务器实现
│ └── wxauto_mcp/
│ ├── __init__.py # 模块入口
│ ├── rpc.py # MCP RPC 基础设施
│ ├── api_*.py # API 实现
│ └── utils.py # 工具函数
├── core/ # 核心功能
│ ├── wechat_wrapper.py # wxautox4 封装
│ ├── listener.py # 消息监听
│ ├── models.py # 数据模型
│ └── config.py # 配置管理
├── tests/ # 测试文件
├── README.md # 本文档
├── LICENSE # MIT 许可证
└── pyproject.toml # 项目配置
开发
安装开发依赖
pip install -e ".[dev]"
运行测试
pytest tests/
架构设计
本项目基于 ida-pro-mcp 的架构设计:
- 模块化 API: 按功能划分独立的 API 模块
- 装饰器注册: 使用
@tool和@resource装饰器自动注册 - 输出限制: 自动限制工具输出长度 (50000 字符)
- 多传输支持: 支持 stdio、HTTP/SSE 传输方式
- 类型安全: 使用 Pydantic 进行数据验证
依赖项
mcp>=1.0.0- Model Context Protocol SDKwxautox4>=0.2.0- 微信自动化库fastapi>=0.115.0- HTTP 服务器uvicorn[standard]>=0.32.0- ASGI 服务器sse-starlette>=2.1.0- SSE 支持pydantic>=2.0.0- 数据验证
HTTP/SSE 模式
MCP Server 支持 HTTP/SSE 传输模式,适用于需要通过网络访问的场景。
全局单例机制
重要: wxauto-mcp 实现了全局单例机制,确保同一台电脑上只有一个服务器实例运行。
工作原理
- 自动检测: 当启动 HTTP/SSE 模式时,会自动检查是否已有实例运行
- 智能复用: 如果检测到运行中的实例,新启动会自动退出并提示复用现有实例
- 避免冲突: 防止多个实例同时操作微信导致冲突
检查服务器状态
# 检查默认端口 (8181) 的服务器状态
wxauto-mcp --status
# 检查指定端口的服务器状态
wxauto-mcp --status --port 9000
# 使用管理工具检查状态
wxauto-mcpctl status
多个 AI 应用共享服务器
由于单例机制,多个 AI 应用(Claude Desktop、Claude Code、Cursor等)可以安全地共享同一个 wxauto-mcp 服务器:
- 启动第一个 AI 应用 - 自动启动 wxauto-mcp 服务器
- 启动其他 AI 应用 - 自动检测并复用已存在的服务器
- 避免资源浪费 - 只运行一个服务器实例
- 避免操作冲突 - 只有一个进程操作微信 UI
配置建议: 所有 AI 应用配置中使用相同的 URL(默认 http://localhost:8181/sse)
可用端点
当使用 wxauto-mcp-http 启动服务后,以下端点可用:
GET /- 服务器信息GET /health- 健康检查GET /sse- SSE 端点(MCP 协议通信)POST /messages/?session_id=<id>- 消息端点(MCP 协议通信)
使用示例
# 启动 HTTP 服务器(默认端口 8000)
wxauto-mcp-http
# 指定端口
wxauto-mcp-http --port 9000
# 指定监听地址
wxauto-mcp-http --host 0.0.0.0 --port 8000
MCP 客户端配置
对于 HTTP/SSE 模式,需要在 MCP 客户端配置中使用 url 字段:
{
"mcpServers": {
"wxauto": {
"url": "http://localhost:8000/sse"
}
}
}
常见问题
1. 激活
wxautox4 需要激活使用。请访问 https://wxauto.org 获取激活密钥,然后:
# 设置环境变量
set WECHAT_LICENSE_KEY=your-license-key
# 或调用激活工具
wxauto-mcp-http
# 然后调用 wechat_activate 工具
2. 权限问题
确保 Python 有访问微信进程的权限,建议以管理员身份运行。
3. 微信窗口
某些操作需要微信窗口在前台可见,请确保微信窗口未被最小化。
4. 配置文件位置
不同 AI 工具的配置文件位置:
Claude Desktop:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
Claude Code:
- Windows:
%USERPROFILE%\.claude.json
Cursor:
- 在 Settings → MCP 中添加配置
联系方式
- GitHub Issues: louxinghao@gmail.com
快速开始
基础使用
from core import get_wechat
# 获取 WeChat 实例
wx = get_wechat()
# 检查状态
status = wx.get_status()
if status.is_online:
print(f"微信在线: {status.account_name}")
# 发送消息
wx.chat_with("张三")
wx.send_message("你好!")
发送文件
# 发送单个文件
wx.send_files("C:/path/to/file.pdf", who="张三")
# 发送多个文件
files = ["file1.pdf", "file2.jpg"]
wx.send_files(files, who="张三")
获取会话列表
sessions = wx.get_sessions()
for session in sessions:
print(f"{session.name} ({session.time})")
错误处理
from core import get_wechat
from core.exceptions import OfflineError, ChatNotFoundError
wx = get_wechat()
try:
result = wx.chat_with("张三")
if not result.success:
print(f"切换失败: {result.message}")
except OfflineError:
print("微信未运行")
except ChatNotFoundError as e:
print(f"找不到聊天: {e}")
配置选项
环境变量
| 变量名 | 说明 | 默认值 |
|---|---|---|
WECHAT_LICENSE_KEY |
激活密钥 | - |
WECHAT_RESIZE |
自动调整窗口 | True |
WECHAT_DEBUG |
调试模式 | False |
WECHAT_LOG_LEVEL |
日志级别 | INFO |
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 wxauto_mcp-1.0.1.tar.gz.
File metadata
- Download URL: wxauto_mcp-1.0.1.tar.gz
- Upload date:
- Size: 35.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2664795acc6a43d9cc393cbad7594244d3a5be43300d844fa40f188dca50634a
|
|
| MD5 |
a122bac23b59af47b556cf2ccb79f92b
|
|
| BLAKE2b-256 |
70c851209c80c3bdc50d3a83d53adb4a99b3a8c1d2474488243ea1ad9b66f751
|
Provenance
The following attestation bundles were made for wxauto_mcp-1.0.1.tar.gz:
Publisher:
release.yml on cluic/wxauto-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wxauto_mcp-1.0.1.tar.gz -
Subject digest:
2664795acc6a43d9cc393cbad7594244d3a5be43300d844fa40f188dca50634a - Sigstore transparency entry: 1065901809
- Sigstore integration time:
-
Permalink:
cluic/wxauto-mcp@b61f032c40bf86a700f542c1b08b964df22d54b0 -
Branch / Tag:
refs/tags/v1.0.4 - Owner: https://github.com/cluic
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b61f032c40bf86a700f542c1b08b964df22d54b0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file wxauto_mcp-1.0.1-py3-none-any.whl.
File metadata
- Download URL: wxauto_mcp-1.0.1-py3-none-any.whl
- Upload date:
- Size: 48.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d20f0f71056ad3a84efcb3f260d5759631c9c05290d4135a10c5a7bd7f8a2a8
|
|
| MD5 |
da14bd79f132c9b2d9fa2eb54ccb0d42
|
|
| BLAKE2b-256 |
db955af97c83c5a1f5f6b896fc1eb11e6f77170a9519aa3ca4a72d95cb7c04cf
|
Provenance
The following attestation bundles were made for wxauto_mcp-1.0.1-py3-none-any.whl:
Publisher:
release.yml on cluic/wxauto-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wxauto_mcp-1.0.1-py3-none-any.whl -
Subject digest:
2d20f0f71056ad3a84efcb3f260d5759631c9c05290d4135a10c5a7bd7f8a2a8 - Sigstore transparency entry: 1065901815
- Sigstore integration time:
-
Permalink:
cluic/wxauto-mcp@b61f032c40bf86a700f542c1b08b964df22d54b0 -
Branch / Tag:
refs/tags/v1.0.4 - Owner: https://github.com/cluic
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b61f032c40bf86a700f542c1b08b964df22d54b0 -
Trigger Event:
push
-
Statement type: