SI

stkoecn/im-mcp

开发工具
60 stars 0 forks 质量 63 趋势 38

Fast, local, read-only MCP Server for WeChat (4.x/3.x) & DingTalk (7.x V2/V3) chat history with FTS5 search

概览

基于 规范构建的本地 IM(绿泡泡 & DuangDuang)聊天记录与通讯录检索服务。 极简、只读、完全离线本地运行,让 Claude Desktop、Cursor、Cline、Pi 等 AI Agent 能够安全、高速地检索与总结你的工作沟通、群聊记录和知识库。 注:原底层参考项目以 Git Submodule 形式统一归档在 reference/ 目录下(reference/wechat-local-viewer 与 reference/dingwave-V3)。 - ⚡ :直接基于本地解密 SQLite 数据库,毫秒级响应。 - 🔒 :所有数据均在本地,绝不上云;以只读方式运行,不破坏原始数据。 - 📦 :一个仓库,两套独立入口;支持只装绿泡泡、只装DuangDuang或全量安装。 - 💬 : - :支持普通文本、引用消息、富文本卡片、小程序、传输文件(PDF/Excel/Word等)。 - :支持多表分片聚合(tbmsg_000~tbmsg_127)、联系人实名映射、Markdown卡片、协同日程通知、文件附件提取。 共 29 个工具,全部只读(sync_wechat_database / start_sync / set_auto_sync 会触发本地快照重建,但不向微信发送任何消息)。 本项目已完整遵循 PEP 517 / 621 标准打包,原生支持 以及 pip,免手动配置虚拟环境与路径。 使用 uv tool 会为工具创建独立受控的持久化运行环境,并将 CLI 注册到系统全局路径,: uvx 适合一次性临时体验或不想常驻安装的场景(每次可能存在版本检查开销;国内环境可替换为 git+https://gitee.com/ws4m/im-mcp.git[all]): 本项目在 skills/im-mcp/SKILL.md 中完整定义了面向各平台 AI Agent(Pi、Claude Desktop/Code、Cursor、Cline 等)的完整自动化运维规范(涵盖**)。

README

im-mcp (本地绿泡泡 & DuangDuang AI 检索 MCP Server)

基于 Model Context Protocol (MCP) 规范构建的本地 IM(绿泡泡 & DuangDuang)聊天记录与通讯录检索服务。 极简、只读、完全离线本地运行,让 Claude Desktop、Cursor、Cline、Pi 等 AI Agent 能够安全、高速地检索与总结你的工作沟通、群聊记录和知识库。

💡 复制即用提示词(直接发给你的 AI Agent / 客户端):

请阅读并遵循开源项目 https://github.com/stkoecn/im-mcp 中的 README.md 与 skills/im-mcp/SKILL.md,帮我配置并启用本机的绿泡泡与DuangDuang MCP 服务。

注:原底层参考项目以 Git Submodule 形式统一归档在 reference/ 目录下(reference/wechat-local-viewer 与 reference/dingwave-V3)。


✨ 核心特性

  • ⚡ 超低延迟:直接基于本地解密 SQLite 数据库,毫秒级响应。
  • 🔒 纯本地与只读:所有数据均在本地,绝不上云;以只读方式运行,不破坏原始数据。
  • 📦 按需安装(Optional Dependencies):一个仓库,两套独立入口;支持只装绿泡泡、只装DuangDuang或全量安装。
  • 💬 丰富格式解析:
    • 绿泡泡:支持普通文本、引用消息、富文本卡片、小程序、传输文件(PDF/Excel/Word等)。
    • DuangDuang:支持多表分片聚合(tbmsg_000~tbmsg_127)、联系人实名映射、Markdown卡片、协同日程通知、文件附件提取。

🔍 支持的客户端与系统版本 (Compatibility)

平台 支持版本范围 实测验证版本 架构与平台 解密 / 同步原理
绿泡泡 (WeChat) 绿泡泡 4.x 全系列*(兼容 3.9.x)* 4.1.15.13 (Windows 最新版)4.1.35.15 (macOS ARM64 最新版)4.1.15 (270115) (macOS x86_64 实测验证)4.1.11.x 等 Windows x64macOS (Apple Silicon & Intel) Windows: 运行时扫描 Weixin.exe Config.Cipher 动态提取 Salt 密钥;macOS: 原生 CommonCrypto (CCCrypt) 零额外依赖解密,支持 passphrase PBKDF2 派生;离线 HMAC 校验并解密 WCDB SQLite
DuangDuang (DingTalk) DuangDuang 7.x 全系列*(涵盖 V2 与 V3)* 7.6.0.x (最新版)7.5.x / 7.0.x Windows x64 / macOS 纯离线读取用户目录 user_config,通过 PBKDF2-HMAC-SHA1 + MD5 推导 AES-128 密钥并合并 WAL 事务

🧰 提供的 MCP Tools

1. 绿泡泡 (wechat-mcp)

共 29 个工具,全部只读(sync_wechat_database / start_sync / set_auto_sync 会触发本地快照重建,但不向微信发送任何消息)。

本 fork 相对上游新增 / 修复的完整清单见 CHANGELOG.md。

消息检索

工具名称 说明 适用场景
search_wechat_messages 全文检索聊天消息(多词 AND,可限定会话 / 发言人 / 时间窗,支持 offset 分页;每条带 snippet 命中上下文) “找一下群里谁发过关于‘某某需求’的讨论”
get_session_history 获取指定会话的最近对话(时间正序,可限定天数) “总结一下这个项目群最近 50 条消息都在聊什么”
get_messages_by_date 按指定日期拉取全量或限定会话记录(支持 offset 分页) “帮我汇总 2026-10-16 那天所有沟通做日报”
get_messages_by_range 按自定义时间范围(支持跨天与任意时段、按人过滤、offset 分页)拉取记录 “拉一下上周三到周五这个群聊了什么”
get_messages_since 增量游标:只取 after_id / after_time 之后的新消息,返回 next_cursor 与 has_more “面板刷新新消息 / 脚本增量同步,不重复拉全量”

会话与通讯录

工具名称 说明 适用场景
list_wechat_sessions 查询群聊或联系人列表(获取唯一 ID,含未读快照 unread) “帮我看看关于‘量化’有哪些群”
get_unread_sessions 列出有未读消息的会话(按最近活跃倒序) “还有哪些群没看”
get_session_overview 单个会话的轻量概览(累计条数 / 范围消息量 / 发言人数 / 峰值时段 / 类型 TopN / 首末时间) “切群先看一眼这个群多大、什么时候最热”
search_contacts 按昵称 / 备注 / 微信号搜索联系人 “查一下张工的微信号和备注名”
list_chatroom_members 列出指定群聊的成员名单(自动关联昵称与微信号) “这个群一共多少人,都有谁”

文件 / 图片 / 媒体 / 收藏 / 表情

工具名称 说明 适用场景
get_message_image 按消息 ID 定位并按需解密聊天图片(支持本地物理路径或多模态 Base64) “把刚才查到的那张聊天图片解密提取出来看下”
get_chat_record 展开「聊天记录」合并转发消息,把被合并的正文解析为结构化条目(文本 / 图片 / 视频 / 文件) “这条『聊天记录』里到底转了些什么”
get_user_avatars 批量取用户 / 群 / 公众号头像的本地图片路径(供面板等宿主直接读盘渲染,不返回 base64) “把群里发言者的头像都给我”
search_shared_files 查找聊天中发送/接收的文件文档 “找一下上周有人发在群里的那个理财报告 Excel”
search_media_files 查找聊天中的图片 / 文件 / 视频及其磁盘路径 “把群里发过的截图路径给我”
list_favorites 查询绿泡泡收藏条目(标题 / 描述 / 来源) “我收藏过哪些资料”
list_emoticons 列出表情包与表情(含官方文字说明) “那个‘偷听’表情在哪个包里”
prepare_emoticons 生成 / 刷新本地明文表情库(调用外部 wxemo 完成一次性 GPU 搜索,把 business/emoticon 下的账号级加密表情摊平成 ~/.wechat_mcp/emoticons/.) “让表情能直接出图” / 首次启用表情取图能力
get_emoticon_image 按表情 md5 取本地明文表情图的文件路径(gif / png / jpg / webp / APNG;md5 来自消息返回的 emoticon_md5) “把这条 [表情] 消息的那个表情图给我”
extract_image_key 从运行中的绿泡泡进程内存提取 V2 图片解密密钥并写入密钥文件(image_aes_key 字段);需先在客户端点开 1-2 张图片再立刻调用 “V2 聊天图片解密报缺 image_aes_key,把密钥取出来”

分析与同步

工具名称 说明 适用场景
get_chat_activity_stats 聊天活跃度全量聚合(消息/发言人数、小时与日分布、跨天 hourly_series、类型分布、参与度分桶、会话片段、集中度、成员多维榜、引用网络、撤回事件) “这个群什么时候最活跃”
get_group_digest 群聊日报/周报所需的聚合数据(= activity stats + 金句候选 highlights) “给这个群出一份日报 / 周报”
get_member_profile 单个成员的群聊画像(活跃节奏、内容结构、互动对象;可选附带最近 N 条原文 include_samples) “分析群里这个人的发言风格与关注点”
get_persona_style 分析某位联系人的沟通风格(画像 + 高频用语 + 典型语句) “模仿一下这个人的说话风格”
get_sync_status 查看本地索引的新鲜度与规模,判断是否需要重新同步 “数据是不是最新的”
sync_wechat_database 阻塞式同步:先重新解密源库、再重建本地索引(只重建索引拿不到新消息) “刚聊了几句,帮我更新一下数据库后再查”
start_sync 后台同步(立即返回,用 get_auto_sync_status 轮询)—— 绕过宿主单次调用 120s 超时 “面板里点‘同步’但别把界面卡死”
set_auto_sync 开启 / 关闭定时同步(重新解密 + 重建索引),状态持久化、服务重启后自动恢复 “每半小时自动同步一次微信数据”
get_auto_sync_status 查看定时同步的开关、间隔、运行次数与上次结果 “定时同步到底有没有在跑”

2. DuangDuang (dingtalk-mcp)

工具名称 说明 适用场景
search_dingtalk_messages 全文检索DuangDuang消息(支持按群/私聊过滤) “搜一下DuangDuang里成鹏发过的报表统计结果”
list_dingtalk_conversations 列出DuangDuang最近会话(自动解析群名与实名) “看看DuangDuang里最近活跃的项目组群”
get_dingtalk_messages 获取指定DuangDuang会话的历史消息上下文 “拉取‘定制报表项目组’最近的历史消息”
list_dingtalk_contacts 查询团队通讯录与联系人(手机号、邮箱、真名) “查一下DuangDuang里某个同事的联系方式”
sync_dingtalk_data 自动拷贝DuangDuang数据库并执行 WAL 解密同步 “重新同步最新的DuangDuang聊天记录”

📦 安装与运行方式

本项目已完整遵循 PEP 517 / 621 标准打包,原生支持 uv / uvx 以及 pip,免手动配置虚拟环境与路径。

1. 推荐:通过 uv tool install 全局隔离安装(最推荐,一次安装全局可用)

使用 uv tool 会为工具创建独立受控的持久化运行环境,并将 CLI 注册到系统全局路径,之后无需重复拉取,启动极快:

# 全局安装 CLI 工具链 (wechat-init, dingtalk-init, wechat-mcp, dingtalk-mcp, im-clean)
uv tool install "git+https://github.com/stkoecn/im-mcp.git" --with "im-mcp[all]"
# (国内网络用户亦可使用 Gitee 源:uv tool install "git+https://gitee.com/ws4m/im-mcp.git" --with "im-mcp[all]")

# 后续如需更新到最新版本,仅需执行:
uv tool upgrade im-mcp

2. 备选:通过 uvx 即席运行(临时/测试体验)

uvx 适合一次性临时体验或不想常驻安装的场景(每次可能存在版本检查开销;国内环境可替换为 git+https://gitee.com/ws4m/im-mcp.git[all]):

# 直接免安装即席运行初始化
uvx --from "git+https://github.com/stkoecn/im-mcp.git[all]" dingtalk-init
uvx --from "git+https://github.com/stkoecn/im-mcp.git[all]" wechat-init

3. 传统 pip 安装(支持按需依赖)

# 两个平台都需要(全量)
pip install "git+https://github.com/stkoecn/im-mcp.git#egg=im-mcp[all]"

# 只需要绿泡泡
pip install "git+https://github.com/stkoecn/im-mcp.git#egg=im-mcp[wechat]"

# 只需要DuangDuang
pip install "git+https://github.com/stkoecn/im-mcp.git#egg=im-mcp[dingtalk]"

🤖 智能体配套技能文档 (Agent Skills)

本项目在 skills/im-mcp/SKILL.md 中完整定义了面向各平台 AI Agent(Pi、Claude Desktop/Code、Cursor、Cline 等)的完整自动化运维规范(涵盖依赖运行策略、初始化前置检查、MCP 工具链调用 SOP、异常处置禁令及附录参考目录)。

安装方式:直接复制到当前 Agent 技能目录

  • 通用智能体环境 (Pi / Codex / Pebrel):
    mkdir -p ~/.agents/skills/im-mcp && cp skills/im-mcp/SKILL.md ~/.agents/skills/im-mcp/
    
  • Claude Code / Desktop:
    mkdir -p ~/.claude/skills/im-mcp && cp skills/im-mcp/SKILL.md ~/.claude/skills/im-mcp/
    
  • 当前项目工作区本地生效:
    mkdir -p .agents/skills/im-mcp && cp skills/im-mcp/SKILL.md .agents/skills/im-mcp/
    

🛠️ 开箱即用:一键初始化 CLI (wechat-init & dingtalk-init)

安装本包后,系统会自动注册两个专用的命令行初始化向导。在日常使用 AI 客户端连接前,只需在控制台运行一次即可完成密钥提取与数据库初始化:

1. 绿泡泡一键初始化 (wechat-init)

注意:

  • Windows:由于需要读取绿泡泡客户端内存(安全校验与运行时 Cipher 扫描),请确保以管理员身份打开终端,并且Windows 绿泡泡已登录。
  • macOS:支持自动检测数据目录 ~/Library/Containers/com.tencent.xinWeChat/Data/Documents/xwechat_files/*/db_storage;微信 4.1+ 可通过 --passphrase 传入或由 wechat-passphrase.json 持久化,采用系统原生 CommonCrypto 完成 256,000 轮 PBKDF2 派生与全库零依赖极速解密。
# Windows: 一键提取密钥、解密为 SQLite 并自动构建 FTS5 全文索引(默认保存至 ~/.wechat_mcp/)
wechat-init

# macOS (微信 4.1+ 配合 passphrase):
wechat-init --passphrase 

# 高级选项(跨平台通用)
wechat-init --output ~/.wechat_mcp/decrypted   # 指定解密数据库保存路径(默认 ~/.wechat_mcp/decrypted)
wechat-init --only-extract                     # 仅提取密钥保存至 all_keys.json,不立即解密
wechat-init --etl-only                         # 仅执行数据清洗与重构 FTS5 索引(无需重复解密)

2. DuangDuang一键初始化 (dingtalk-init)

DuangDuang采用纯 Python 本地解密算法(支持 V2/V3 及 WAL 事务合并),自动查找当前登录的 UID,普通用户终端即可执行:

# 一键同步并解密当前登录DuangDuang的数据库
dingtalk-init

# 高级选项(可选)
dingtalk-init --output-dir ~/.dingtalk_mcp/decrypted  # 指定输出路径

🧹 一键清理工具 (im-clean)

如果在测试或使用后需要清理导出的明文 SQLite 数据库、密钥文件及 FTS 中间缓存,可以使用 im-clean 一键彻底清理:

# 1. 模拟预览(只查看待清理文件与磁盘占用,不真正删除)
im-clean --dry-run

# 2. 交互式安全清理(支持二次确认)
im-clean

# 3. 按需清理指定平台
im-clean --scope wechat      # 仅清理绿泡泡导出的数据与密钥
im-clean --scope dingtalk    # 仅清理DuangDuang导出的数据与缓存

# 4. 静默全量删除(适合自动化脚本)
im-clean -y

🚀 客户端接入配置 (Claude Desktop / Cursor / Pi)

方案 A:使用 uvx 即席运行(零环境污染,免手动建 venv,最推荐)

客户端通过 uvx 动态拉取执行,并在 env 中显式固化全局数据目录,杜绝工作目录变动影响:

{
  "mcpServers": {
    "wechat": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/stkoecn/im-mcp.git[all]",
        "wechat-mcp"
      ],
      "env": {
        "PYTHONIOENCODING": "utf-8",
        "PYTHONUTF8": "1"
      },
      "description": "绿泡泡聊天记录与群聊检索 MCP"
    },
    "dingtalk": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/stkoecn/im-mcp.git[all]",
        "dingtalk-mcp"
      ],
      "env": {
        "PYTHONIOENCODING": "utf-8",
        "PYTHONUTF8": "1"
      },
      "description": "DuangDuang聊天记录、群聊与通讯录检索 MCP"
    }
  }
}

方案 B:全局 uv tool 运行(一次安装,秒级冷启动)

若当前环境未受沙箱拦截,且已执行 uv tool install "git+https://github.com/stkoecn/im-mcp.git" --with "im-mcp[all]",直接使用系统 PATH 中的命令:

💡 PATH 说明:若安装后 uv 提示 warning: ... is not on your PATH,可运行 uv tool update-shell(或重启终端生效)。在严格安全限制无法修改 PATH 的环境下,亦可直接使用绝对路径配置(例如 Windows 下填写 "command": "C:\\Users\\\\.local\\bin\\wechat-mcp.exe")。

{
  "mcpServers": {
    "wechat": {
      "command": "wechat-mcp",
      "description": "绿泡泡聊天记录与群聊检索 MCP"
    },
    "dingtalk": {
      "command": "dingtalk-mcp",
      "description": "DuangDuang聊天记录、群聊与通讯录检索 MCP"
    }
  }
}

方案 C:本地源码 / 指定虚拟环境运行

注意:如果是在特定的 Python 虚拟环境中,可将 "command" 设为对应环境的 Python 路径,args 设为 ["-m", "wechat_mcp.server"]。本地源码调试时可追加 "env": { "PYTHONPATH": "/src" }。


🗑️ 彻底卸载与依赖清理指南 (Complete Uninstall & Teardown)

如果您不再需要使用 im-mcp,或者希望在公共机器上彻底清理所有导出的聊天数据、依赖包及客户端配置,请按照以下标准顺序进行完整清理:

第一步:退出 AI 客户端或结束常驻 MCP 服务进程 (Stop Running Services)

💡 核心提示:AI 客户端(如 WorkBuddy、Claude Desktop、Pi、Cursor 等)在调用过工具后,通常会保持 wechat-mcp 与 dingtalk-mcp 服务进程常驻。这些进程打开的 SQLite 句柄与 -shm / -wal 锁会导致底层数据文件无法直接被删除。

  • 推荐做法:直接完全退出当前 AI 客户端应用;
  • 或通过终端结束服务进程(Windows PowerShell):
    Get-Process | Where-Object { $_.ProcessName -match "wechat-mcp|dingtalk-mcp" } | Stop-Process -Force
    
  • 注:内置清理工具 im-clean 也已提供进程占用自检与 --force 强制结束机制。

第二步:清理导出的本地解密数据库与明文缓存 (Data Cleanup)

运行内置的 im-clean 命令,或直接手动删除对应的全局数据目录:

# 方式 A:使用内置命令清理(自带进程占用检测,推荐)
im-clean -y

# 若遇到残留进程句柄拒绝删除,可追加 --force 强制结束进程并强力清除
im-clean -y --force

# 方式 B:手动删除用户家目录下的数据文件夹
# Windows (PowerShell):
Remove-Item -Recurse -Force ~/.wechat_mcp, ~/.dingtalk_mcp
# Linux / macOS:
rm -rf ~/.wechat_mcp ~/.dingtalk_mcp

第三步:卸载 CLI 工具与 Python 依赖环境 (Environment Teardown)

根据最初采用的安装方式,执行对应的卸载命令:

  1. 若使用了 uv tool install(全局持久化安装):
    uv tool uninstall im-mcp
    
  2. 若使用了 uvx 即席运行(临时缓存):
    # 清理 uv 缓存中的归档与虚拟环境缓存(释放磁盘空间)
    uv cache clean
    
  3. 若使用了全局/环境 pip install:
    pip uninstall im-mcp
    

第四步:清理各客户端的 MCP 配置文件与 Skill (Client Config Removal)

⚠️ 注意:由于各 AI 客户端(WorkBuddy、Pi、Claude Desktop、Cursor、Cline、Cherry Studio 等)采用本地配置文件管理 MCP,程序无法跨权限修改其他软件的私有配置,这一步需用户根据自己的客户端环境手动操作(常见客户端配置路径与清理方法详见 skills/im-mcp/SKILL.md 附录参考目录)。


📂 项目结构

├── src/
│   ├── wechat_mcp/       # 绿泡泡 MCP 核心模块
│   │   ├── config.py
│   │   ├── parser.py
│   │   ├── database.py
│   │   ├── images.py     # 聊天图片解密(XOR / V1 固定密钥 / V2 账号级密钥)
│   │   ├── emoticons.py  # 自定义表情明文库(调用 wxemo 解密 + 按需 wxgf 转码)
│   │   ├── server.py     # 绿泡泡 MCP 服务 (wechat-mcp)
│   │   └── tools/        # 绿泡泡一键提取与解密 CLI (wechat-init)
│   │       └── key_tool.py   # 密钥提取(DBKey / passphrase / 图片 V2 密钥)
│   └── dingtalk_mcp/     # DuangDuang MCP 核心模块
│       ├── decrypt.py    # V2/V3 AES-ECB + WAL 解密
│       ├── db.py         # 128分表聚合查询与联系人实名映射
│       ├── server.py     # DuangDuang MCP 服务 (dingtalk-mcp)
│       └── tools/        # DuangDuang一键同步 CLI (dingtalk-init)
├── pyproject.toml        # 标准打包与 optional-dependencies 定义
├── README.md             # 架构与接入文档
└── skills/               # 配套 Agent Skill 指南
    └── im-mcp/
        └── SKILL.md      # 智能体自动化初始化与清理技能规范

  • LINUX DO - 真诚、友善、团结、专业,共建自由开放的技术社区。
在 GitHub 查看完整 README

安装

uvx --from git+https://github.com/stkoecn/im-mcp.git[all
新手?先看 mcpskill.org 教程 →

配置

{ "mcpServers": { "wechat": { "command": "uvx", "args": [ "--from", "git+https://github.com/stkoecn/im-mcp.git[all]", "wechat-mcp" ], "env": { "PYTHONIOENCODING": "utf-8", "PYTHONUTF8": "1" }, "description": "绿泡泡聊天记录与群聊检索 MCP" }, "dingtalk": { "command": "uvx", "args": [ "--from", "git+https://github.com/stkoecn/im-mcp.git[all]", "dingtalk-mcp" ], "env": { "PYTHONIOENCODING": "utf-8", "PYTHONUTF8": "1" }, "description": "DuangDuang聊天记录、群聊与通讯录检索 MCP" } } }