MiniApp CDP MCP
MiniApp CDP MCP
English | 中文
微信小程序逆向工程 MCP 服务器,让你的 AI 编码助手(如 Claude、Cursor、Antigravity)能够直接通过 Chrome DevTools Protocol (CDP) 调试和分析微信小程序(包括微信开发者工具或 PC 端微信小程序)中的 JavaScript 代码。
功能特点
多目标调试: 支持在
AppService(逻辑层)和WebView(渲染层)目标之间无缝切换网络拦截: 捕获、监控和过滤由小程序发起的 XHR/Fetch 请求
断点调试: 设置/移除代码断点和 XHR 断点,支持在压缩混淆代码中精确定位
执行控制: 暂停/恢复执行,单步调试(over/into/out)并返回源码上下文
脚本分析: 列出所有加载的 JS 脚本,搜索代码,获取/保存源码
运行时检查: 在断点处求值表达式,检查调用栈和作用域变量
WebSocket 分析: 监控 WebSocket 连接和消息模式
系统要求
前置准备 1:开启小程序调试端口
在使用本 MCP 之前,你需要先通过注入工具将微信小程序的 CDP 调试端口暴露出来。你可以根据你的操作系统和微信版本,选择以下开源工具之一来完成 Hook 和端口暴露(通常暴露于 62000 端口):
WMPFDebugger-arm (适用于 macOS ARM 架构)
前置准备 2:安装 uv
本项目通过 uvx 实现零配置的“开箱即用”。如果你还没安装 uv,请先根据你的系统执行以下命令安装:
macOS / Linux:
curl -LsSf https://astral.sh/uv/install.sh | shWindows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"快速开始(uvx 零安装)
无需把代码克隆到本地,你可以直接利用 uv 的能力,在 AI 助手的 MCP 配置文件中添加:
{
"mcpServers": {
"miniapp-cdp": {
"command": "uvx",
"args": ["--from", "miniapp-cdp", "miniapp-cdp-mcp"]
}
}
}Claude Desktop
修改 ~/Library/Application Support/Claude/claude_desktop_config.json,加入上述配置。
Cursor
进入 Cursor Settings -> Features -> MCP -> Add new MCP server:
Type:
commandName:
miniapp-cdpCommand:
uvx --from miniapp-cdp miniapp-cdp-mcp
本地安装(可选)
如果你想在本地修改或开发:
git clone https://github.com/yourusername/miniapp-cdp-py.git
cd miniapp-cdp-py
uv sync然后在 MCP 配置中使用本地运行方式:
{
"mcpServers": {
"miniapp-cdp": {
"command": "uv",
"args": ["run", "run_mcp_server.py"],
"cwd": "/你的路径/miniapp-cdp-py"
}
}
}工具列表
目标与上下文管理
工具 | 描述 |
| 列出调试器中所有可用的目标(AppService 线程、WebView 线程等) |
| 切换 CDP 连接到不同的目标线程进行调试上下文切换 |
网络与 WebSocket
工具 | 描述 |
| 列出小程序网络请求(支持分页),或获取单条详情 |
| 获取发起网络请求的 JavaScript 调用栈 |
| 获取网络请求的完整响应体 |
| 列出 WebSocket 连接或获取特定连接的消息详情 |
脚本分析
工具 | 描述 |
| 列出当前页面加载的所有 JavaScript 脚本 |
| 获取脚本源码片段,支持行范围或字符偏移 |
| 保存完整脚本源码到本地文件(适用于提取整包或核心风控代码) |
| 在所有脚本中搜索字符串或正则表达式 |
断点与执行控制
工具 | 描述 |
| 通过搜索代码文本自动设置断点(切勿直接对匿名函数声明下断点) |
| 按 URL 模式设置 XHR/Fetch 断点 |
| 移除指定的断点,或通过 |
| 列出所有活动断点 |
| 获取暂停状态、调用栈和作用域变量 |
| 释放断点,恢复代码执行 |
| 单步调试(over/into/out),返回位置和源码上下文 |
检查工具
工具 | 描述 |
| 在当前上下文中执行 JavaScript 表达式(支持在断点暂停时执行) |
使用示例
小程序逆向工程基本流程
连接与目标切换
列出所有小程序目标,并切换到 AppService (逻辑层) 线程查找目标函数与代码
在所有脚本中搜索包含 "encrypt" 的代码,并获取相关脚本的上下文源码设置断点
在加密函数的具体执行语句(如 return 处)设置断点触发并分析
在小程序上点击触发网络请求,断点命中后,检查参数、调用栈以及密钥的生成逻辑拦截并分析网络请求
抓取最新发出的网络请求列表,并找出特定的加密请求(如带有 mina_edata 参数的请求),
随后获取该请求的发起者调用栈 (Initiator) 定位加密入口。实战案例
在项目的 examples/ 目录下,包含了一些利用本工具逆向得出的实战脚本(例如 vipshop_decrypt_demo.py),展示了如何通过 MCP 分析出小程序的复杂多层加密算法并在 Python 中完美还原。
安全提示
此工具会将小程序的底层运行上下文暴露给 MCP 客户端,允许检查、调试和修改应用内存中的任何数据。请勿将此工具用于非法用途,仅限于个人学习、安全研究与合法授权的逆向分析。
致谢
本项目构建在 cdp-use 之上。cdp-use 提供了一个面向 Agent 场景进行高度优化和抽象的底层 WebSocket 交互层,极大地简化了原始 CDP 协议的通信复杂性。
许可证
MIT License
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/zhizhuodemao/miniapp-cdp-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server