wecom-msg-audit-mcp
Integrates with Cloudflare R2 for automatic upload of media files (images) from chat messages, providing pre-signed URLs for access.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@wecom-msg-audit-mcpSearch recent messages for 'invoice'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
wecom-msg-audit-mcp
企业微信会话内容存档 MCP 服务:拉取、解密并查询聊天记录,让 AI Agent 拥有合规可审计的会话访问能力。
特性
🔌 MCP 协议:基于 FastMCP 暴露工具,兼容 Cursor、Claude Desktop、Cline 等 MCP 客户端
🔐 完整解密链路:封装企业微信官方
libWeWorkFinanceSdk_C.so,自动处理 RSA 私钥解密 + SDK 对称解密📨 多种消息类型:支持文本、图片、视频、语音、文件、链接、位置、名片、表情、视频号、混排等
🗂️ 本地检索:解密结果持久化为 JSONL,支持按群、发送者、消息类型、关键词查询与分页
👥 群资料查询:自动识别内部群 / 外部客户群,补全群名称、成员列表
☁️ 媒体上传:图片自动上传到 Cloudflare R2 并返回预签名链接(其他文件保存到本地)
🛡️ Bearer 鉴权:内置 Token 校验,支持
stdio/http两种传输
Related MCP server: WeChat MCP Server
架构
┌────────────────────┐
│ MCP 客户端 │
│ (Cursor / Claude) │
└─────────┬──────────┘
│ MCP (stdio / http + Bearer)
▼
┌────────────────────┐
│ mcp_server.py │ FastMCP 工具定义
└─────────┬──────────┘
│
▼
┌────────────────────┐
│ wecom_core.py │ 配置 / 业务逻辑
└─────────┬──────────┘
│ ctypes
▼
┌────────────────────┐ ┌──────────────┐
│ libWeWorkFinance │◄──►│ 企业微信 API │
│ SDK_C.so (官方) │ └──────────────┘
└────────────────────┘快速开始
1. 前置条件
拉取会话内容需要先在企业微信管理后台(work.weixin.qq.com)开启会话存档功能。开启方式和 API 参数说明见企业微信开发者文档。
Python 3.11+
企业微信会话内容存档权限:登录 管理后台 → 安全与管理 → 管理工具 → 会话内容存档
企业微信官方 SDK:libWeWorkFinanceSdk_C.so(需自行从开放平台下载)
RSA 私钥:在管理后台「会话内容存档」页面上传公钥,私钥用
openssl在本地生成(不要使用任何在线生成工具,避免私钥外泄):# 生成 2048 位 RSA 私钥(兼容企业微信会话存档) openssl genrsa -out private_key.pem 2048 # 提取对应公钥,上传到管理后台 openssl rsa -in private_key.pem -pubout -out public_key.pem
2. 安装
git clone https://github.com/deadmau5v/wecom-msg-audit-mcp.git
cd wecom-msg-audit-mcp
# 推荐使用 uv
uv sync
# 或使用 pip
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt将官方 SDK 文件 libWeWorkFinanceSdk_C.so 放置到项目根目录(或在 .env 中自定义 SDK_LIB_PATH)。
3. 配置
cp .env.example .env
# 编辑 .env,填入企业 ID、Secret、私钥路径等4. 启动
作为 MCP 服务(推荐)
# stdio 模式(默认)
uv run python mcp_server.py
# http 模式(带 Bearer 鉴权)
MCP_TRANSPORT=http MCP_PORT=8331 uv run python mcp_server.py然后在 MCP 客户端配置中接入:
{
"mcpServers": {
"wecom": {
"command": "uv",
"args": ["run", "python", "mcp_server.py"],
"cwd": "/path/to/wecom-msg-audit-mcp"
}
}
}作为 CLI 拉取
uv run python main.py输出解密后的消息到 stdout,并增量追加到 wecom_messages.jsonl。
配置项
所有配置通过环境变量(或 .env 文件)注入,禁止硬编码到代码中。
变量 | 必填 | 说明 |
| ✅ | 企业 ID(我的企业 → 企业信息) |
| ✅ | 会话内容存档 Secret(不是普通应用 Secret) |
| ⬜ | 客户联系可调用应用 Secret(用于外部客户群) |
| ⬜ | SDK 动态库路径,默认 |
| ⬜ | RSA 私钥路径,默认 |
| ⬜ | seq 进度文件,默认 |
| ⬜ | 解密消息输出文件,默认 |
| ⬜ | 单次拉取条数,1-1000,默认 |
| ⬜ | SDK 请求超时(秒),默认 |
| ⬜ | 代理与代理密码(按需) |
| ⬜ | Cloudflare R2 端点,例: |
| ⬜ | R2 存储桶(若已包含在 endpoint 路径中可省略) |
| ⬜ | 自定义访问域名(用于预签名 URL 替换) |
| ⬜ | 兼容字段(当前未使用,可保留) |
| ⬜ | R2 S3 兼容 AccessKey |
| ⬜ | HTTP 模式下的 Bearer 鉴权 Token,留空则自动生成 |
| ⬜ |
|
| ⬜ | HTTP 模式监听地址,默认 |
完整示例见 .env.example。
MCP 工具一览
工具 | 用途 |
| 检查服务就绪状态(各能力是否可用) |
| 从当前 seq 拉取并解密新消息 |
| 查看 / 重置拉取进度 |
| 按群、发送者、类型、关键词检索本地消息 |
| 从本地消息中提取所有群聊 roomid |
| 查询群聊详情(内部 / 外部自动判定) |
| 列出外部客户群 |
| 下载 / 上传消息中的媒体文件 |
示例:让 Agent 拉取并搜索
User: 帮我拉取最近的聊天记录,搜索包含"发票"的消息
Agent: 调用 wecom_pull_messages → 解密
调用 wecom_query_messages(keyword="发票", limit=20) → 返回结果安全提醒
⚠️ 本项目会处理企业敏感数据,部署前请仔细阅读本节。
.env绝不能提交到仓库——本项目已通过.gitignore默认忽略;首次git add前请确认。private_key.pem绝不能提交——同理已忽略。若不慎泄露,请立即在企业微信管理后台 重置公钥。消息数据可能包含个人隐私——
wecom_messages.jsonl、群资料导出文件等已加入.gitignore,请勿外发。Bearer Token 默认会写入
.env——HTTP 模式启动时若未设置MCP_BEARER_TOKEN,会自动生成并保存到.env;若希望每次启动都使用临时 Token,请改为外部注入或自行改造启动脚本。部署时建议:
使用反向代理(HTTPS + IP 白名单)暴露 MCP HTTP 端点
定期轮换
MSGAUDIT_SECRET和 RSA 密钥对限制
OUTPUT_JSONL所在目录的访问权限
项目结构
.
├── mcp_server.py # FastMCP 入口,工具定义
├── wecom_core.py # 核心业务:配置、SDK 封装、解密、查询
├── main.py # CLI 入口:拉取并打印消息
├── group_chat.py # 群资料识别与导出脚本
├── test_mcp_all.py # MCP 工具冒烟测试
├── restart.sh # tmux 一键重启脚本
├── fastmcp.json # FastMCP 客户端配置
├── pyproject.toml # 项目元数据
├── requirements.txt # pip 依赖
├── .env.example # 配置示例
├── .gitignore
├── LICENSE
└── README.md开发
# 启动 HTTP 模式做本地调试
MCP_TRANSPORT=http MCP_PORT=8331 uv run python mcp_server.py
# 跑冒烟测试(需要先启动服务)
uv run python test_mcp_all.py常见问题
Q: 启动报 SDK 动态库不存在?
A: 检查 .env 中 SDK_LIB_PATH 是否指向正确的 .so 文件,且有可执行权限。
Q: 报 RSA 解密 encrypt_random_key 失败?
A: 私钥与后台公钥版本不匹配,需在管理后台重新下载配套私钥。
Q: 报 errcode=60011?
A: 表示企业没有开通「会话内容存档」权限,需管理员在后台申请。
License
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/deadmau5v/wecom-msg-audit-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server