Skip to main content
Glama
wangfan0524

wechat-msg-mcp

by wangfan0524

微信聊天记录 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_filesC:\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 必须是 localhosthttps,不能填局域网 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 MCP Server

迁移到新机器(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 必须是 localhosthttps://,不支持局域网 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.jsonwxecho_keys.jsondecrypted/ 已加入 .gitignore,不会提交到代码库

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

F
license - not found
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    -
    quality
    D
    maintenance
    Provides read-only access to local Beeper message history on macOS, enabling users to search conversations, read messages, and list recent chats through natural language queries. Supports both SQLite and IndexedDB storage formats with privacy-focused local-only operation.
    1
  • A
    license
    A
    quality
    F
    maintenance
    Enables Claude Code to read encrypted WeChat chat history from local database, search messages, view sessions and contacts.
    4
    18
    Do What The F*ck You Want To Public
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to securely access and search enterprise WeChat (WeCom) chat records with full decryption and auditing, supporting message retrieval, decryption, local storage, and querying via MCP tools.
    9
    2
    MIT

View all related MCP servers

Related MCP Connectors

  • Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only

  • Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.

  • Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.

View all MCP Connectors

Latest Blog Posts

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/wangfan0524/wechat-msg-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server