Skip to main content
Glama

微信聊天记录 MCP Server

为 AI 客户端(Kiro / Claude Desktop 等)提供微信聊天记录的只读查询能力。

支持平台:

  • macOS:微信 4.x,通过 lldb 提取密钥后本地解密数据库读取

  • Windows:微信 4.x,本地内存提取密钥 + 本地解密数据库读取(不依赖 WeChatDataAnalysis)

免责声明:本工具仅用于个人数据备份与分析,请勿用于侵犯他人隐私。使用前请确保符合相关法律法规及微信服务条款。


Windows 快速开始

环境要求

  • Windows 10/11,微信 4.x(已登录且正在运行)

  • Python 3.10+,uv 包管理器

  • 管理员权限(首次解密必须,用于读取微信进程内存)

步骤

第一步:安装依赖

uv sync
uv add yara-python pymem pefile

第二步:按需修改 start.ps1 中的路径

用文本编辑器打开 start.ps1,确认以下两行是否与你的机器一致:

# 微信聊天数据目录(xwechat_files 的实际路径,因人而异)
$env:WECHAT_FILES_DIR = "C:\Users\你的用户名\xwechat_files"

# 可选:自定义解密输出目录(默认为项目内 decrypted/)
# $env:WECHAT_DECRYPTED_DIR = "D:\你的路径\decrypted"

微信数据目录默认在 C:\Users\<用户名>\xwechat_files 或 C:\Users\<用户名>\Documents\WeChat Files, 请根据你的实际路径修改。

第三步:首次启动(自动解密 + 启动 Server)

以管理员权限运行 PowerShell,执行:

powershell -ExecutionPolicy Bypass -File .\start.ps1
  • 首次运行会检测到 decrypted/ 目录不存在,自动运行 decrypt_standalone.py 提取密钥并解密

  • 密钥保存到 keys.json,数据库解密到 decrypted/

  • 解密完成后自动启动 MCP Server,监听 http://localhost:8765/mcp

之后日常启动:

powershell -ExecutionPolicy Bypass -File .\start.ps1

已有解密数据库时直接启动 Server,无需重新解密。

手动更新解密(获取最新消息):

# 无需管理员权限,用 keys.json 里已有密钥重新解密
uv run python scripts\quick_decrypt.py

第四步:配置客户端

编辑 ~/.kiro/settings/mcp.json(Kiro)或 claude_desktop_config.json(Claude Desktop):

{
  "mcpServers": {
    "wechat": {
      "url": "http://localhost:8765/mcp",
      "disabled": false
    }
  }
}

注意:MCP url 必须是 localhost 或 https,不能填局域网 IP(如 10.x.x.x)。 如需跨机访问,参考下方"迁移到新机器"章节。

第五步:验证

在 Kiro 里调用 check_status 工具,确认状态显示"本地解密数据库"而非"WeChatDataAnalysis"。


Windows 消息同步说明

  • 消息同步有 1~5 分钟延迟,依赖微信自动 WAL checkpoint 频率

  • 微信切换聊天窗口会触发 checkpoint,之后运行 quick_decrypt.py 可立即获取最新消息

  • MCP Server 以管理员权限运行时,密钥失效后会自动重新提取(10 分钟冷却)


Windows 回退模式(WeChatDataAnalysis)

若本地解密失败(如首次提取密钥失败),可以使用 WeChatDataAnalysis 作为数据源:

  1. 安装并启动 WeChatDataAnalysis,确保微信已登录

  2. 后端自动运行在 http://localhost:10392

  3. 启动 start.ps1,Server 会自动检测并使用 HTTP API 模式


Related MCP server: wechat-local-mcp

迁移到新机器(Windows)

在新机器上部署时,以下几点需要手动确认:

1. 修改 start.ps1 中的数据目录

# 根据新机器实际路径修改
$env:WECHAT_FILES_DIR = "C:\Users\新用户名\xwechat_files"

2. Weixin.dll 自动查找失败时手动指定

脚本通过注册表 HKLM\SOFTWARE\WOW6432Node\Tencent\WeChat\InstallPath 自动查找 Weixin.dll。 如果自动查找失败,先手动搜索:

Get-ChildItem "C:\Program Files\Tencent" -Recurse -Filter "Weixin.dll" -ErrorAction SilentlyContinue | Select-Object FullName

找到路径后,设置环境变量再运行解密:

$env:WECHAT_FILES_DIR = "C:\Users\你的用户名\xwechat_files"
$env:WEIXIN_DLL = "C:\Program Files\Tencent\Weixin\install\x.x.x\Weixin.dll"
uv run python scripts\decrypt_standalone.py

3. 依赖安装

uv sync
uv add yara-python pymem pefile

4. 检查注册表(诊断用)

Get-ItemProperty -Path "HKLM:\SOFTWARE\WOW6432Node\Tencent\WeChat" -Name "InstallPath" -ErrorAction SilentlyContinue
Get-ItemProperty -Path "HKLM:\SOFTWARE\Tencent\WeChat" -Name "InstallPath" -ErrorAction SilentlyContinue

macOS 快速开始

环境要求

  • macOS 11+,Apple Silicon(M1/M2/M3/M4)

  • 微信 4.x(已登录),Python 3.10+

  • uv 包管理器

  • Xcode Command Line Tools:xcode-select --install

整体流程

微信 Mac 客户端(运行中)
    ↓ scripts/extract_key.py(lldb 提取密钥)
keys.json(AES 密钥)
    ↓ scripts/decrypt_db.py(解密数据库)
decrypted/(标准 SQLite 文件)
    ↓ MCP Server(只读查询)
Kiro / Claude Desktop

步骤

第一步:安装依赖

uv sync

第二步:微信重新签名(仅需一次,微信更新后重做)

sudo codesign --force --deep --sign - /Applications/WeChat.app

第三步:提取数据库密钥

确保微信已登录并运行:

sudo python3 scripts/extract_key.py

密钥自动保存到 keys.json。

第四步:解密数据库

python3 scripts/decrypt_db.py

解密结果在 decrypted/ 目录。

第五步:配置客户端(stdio 模式,Kiro 自动启动)

编辑 ~/.kiro/settings/mcp.json:

{
  "mcpServers": {
    "wechat": {
      "command": "uv",
      "args": [
        "--directory", "/path/to/wechat-msg-mcp",
        "run", "python", "-m", "src.server"
      ],
      "disabled": false
    }
  }
}

Claude Desktop 编辑 ~/Library/Application Support/Claude/claude_desktop_config.json,格式相同。

第五步(可选):HTTP 模式

如需以 HTTP 方式暴露(手动启动,客户端用 url 连接):

uv run python -m src.server --transport streamable-http --host 0.0.0.0 --port 8765

然后 mcp.json 改为:

{
  "mcpServers": {
    "wechat": {
      "url": "http://localhost:8765/mcp",
      "disabled": false
    }
  }
}

可用 Tools

Tool

说明

check_status

检查 Server 状态(数据源是否就绪)

list_contacts

列出联系人和群聊

find_contact

查找联系人详细信息

get_sessions

获取最近会话列表

get_chat_history

获取与某人/群的聊天记录

search_messages

全局关键词搜索

get_recent_messages

获取最近 N 天的消息

summarize_chat

汇总某会话的统计信息

chat_stats_overview

所有会话的总览统计

使用示例

check_status()
list_contacts(keyword="王")
get_chat_history(contact_name="张总", start_date="2026-07-21")
search_messages(keyword="合同", contact_name="项目群")
summarize_chat(contact_name="工作群", period="this_week")
chat_stats_overview(period="last_30_days", top_n=10)

项目结构

wechat-msg-mcp/
├── src/
│   ├── server.py               # MCP Server 主入口(优先本地 SQLite,回退 HTTP API)
│   ├── config.py               # 路径配置
│   ├── db/
│   │   ├── models.py           # 数据模型
│   │   ├── reader.py           # 本地 SQLite 读取(Mac + Windows 本地模式)
│   │   └── windows_reader.py   # Windows HTTP API 读取(WeChatDataAnalysis 回退)
│   └── tools/
│       ├── contacts.py
│       ├── messages.py
│       └── summary.py
├── scripts/
│   ├── extract_key.py          # macOS 密钥提取(lldb)
│   ├── decrypt_db.py           # 数据库解密(Mac & Windows 通用)
│   ├── decrypt_standalone.py   # Windows 独立解密(含密钥提取,需管理员权限)
│   ├── quick_decrypt.py        # Windows 快速重解密(用已有密钥,无需管理员)
│   └── extract_key_windows.py  # Windows 密钥提取(备用)
├── start.ps1                   # Windows 启动脚本(首次自动解密 + 启动 Server)
├── pyproject.toml
├── uv.lock
└── README.md

常见问题

Q(Windows):找不到 Weixin.dll
A:脚本通过注册表自动定位,若失败请手动搜索并设置环境变量:

Get-ChildItem "C:\Program Files\Tencent" -Recurse -Filter "Weixin.dll" -ErrorAction SilentlyContinue | Select-Object FullName
$env:WEIXIN_DLL = "找到的完整路径\Weixin.dll"
uv run python scripts\decrypt_standalone.py

Q(Windows):找不到 xwechat_files 目录
A:需要在 start.ps1 里修改 WECHAT_FILES_DIR 为你机器上的实际路径。也可以在运行前设置环境变量:

$env:WECHAT_FILES_DIR = "C:\Users\你的用户名\xwechat_files"

Q(Windows):端口 8765 被占用
A:已有 Server 实例在运行,关闭后重新启动 start.ps1。或修改端口:

uv run python -m src.server --transport streamable-http --host 0.0.0.0 --port 8766

Q(Windows):check_status 显示需要 WeChatDataAnalysis
A:说明本地 decrypted/ 目录不存在或为空,需要先运行 decrypt_standalone.py(管理员权限)。

Q(Windows):decrypt_standalone.py 无输出直接退出
A:可能是权限问题(未以管理员运行),或微信未运行。确保微信已登录,并以管理员权限的 PowerShell 执行。

Q(Windows):MCP 配置了 IP 地址报错
A:MCP 协议要求 url 必须是 localhost 或 https://,不支持局域网 IP。Server 和客户端须在同一台机器上运行。

Q(macOS):task_for_pid failed
A:微信未完成 ad-hoc 重签名,或 extract_key.py 没有以 sudo 运行。

Q(macOS):解密后 SQLite 校验失败
A:密钥捕获时机不对,退出微信、运行 extract_key.py,然后重新登录微信。

Q(macOS):微信更新后密钥失效
A:重新签名微信,重新运行 extract_key.py 和 decrypt_db.py。


安全说明

  • 本工具只读访问数据,不修改任何微信文件

  • keys.json、wxecho_keys.json、decrypted/ 已加入 .gitignore,不会提交到代码库

  • Windows 模式所有数据在本机本地读取,不离开本机

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables Claude Code to read encrypted WeChat chat history from local database, search messages, view sessions and contacts.
    4
    32 PyPI
    19
    Do What The F*ck You Want To Public
  • A
    license
    A
    quality
    C
    maintenance
    A read-only MCP server that enables searching and extracting to-dos from local macOS WeChat chat databases. It decrypts and queries local WeChat data without sending messages or modifying databases.
    12
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to query local WeChat chat data through read-only MCP tools, including sessions, messages, contacts, search, and statistics, with everything processed locally.
    99 PyPI
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables an AI assistant to search the WeChat message history and files stored locally on a Mac, answering queries like finding a specific message or attachment. It is read-only and fully local, so it cannot send messages or contact any cloud service.
    3
    MIT