返回 MCP 目录
public公开dns本地运行

deobfuscate-mcp-server

一个专为大型语言模型优化的MCP服务器,用于反混淆、解包和导航经过压缩与打包的JavaScript代码,帮助LLM理解复杂代码结构并节省上下文窗口。

article

README

🚀 反混淆MCP服务器

这是一个经过大语言模型优化的模型上下文协议(MCP)服务器,旨在帮助大语言模型对压缩和打包后的JavaScript代码进行逆向工程、导航和理解。

🚀 快速开始

本服务器将压缩代码视为一个可搜索的数据库,解决了标准“美化器”仅格式化代码,导致大语言模型难以处理超出上下文窗口的大量线性文本文件的问题。它允许大语言模型执行以下操作:

  1. 反混淆和解包:使用webcrack将Webpack/Browserify包拆分为单个模块。
  2. 查看架构:在读取代码之前,返回文件结构(导出、函数)的JSON摘要。
  3. 随机导航:按需读取特定模块(get_module),而不是整个文件。
  4. 语义搜索:在数千个解包模块中查找特定字符串或模式的存在位置。

✨ 主要特性

  • deobfuscate:入口点。解包并将包缓存到内存中。
    • returnCode(默认false):默认返回摘要以节省上下文。设置为true可查看完整代码。
    • skipVendor:过滤掉node_modules和Webpack样板代码,专注于应用代码。
    • mangle:缩短变量名以节省令牌。
    • jsx:恢复React JSX语法。
  • analyze_structure:返回高级抽象语法树(AST)摘要(函数、类、导出)以节省令牌。
  • list_modules:列出解包包中找到的所有模块。
  • list_functions:扫描缓存模块,列出具有签名和参数的已定义函数/类。
  • get_call_graph:为特定函数生成调用图,识别它调用的内容和调用它的内容。
  • get_module:获取单个模块的格式化源代码。
  • get_symbol_source:仅提取特定函数、类或变量以节省令牌。
  • search_modules:在所有模块中进行正则表达式/字符串搜索。
  • format_code:对JS/HTML/CSS进行标准的Prettier格式化。
  • get_help:返回任何工具的详细文档。

📦 安装指南

从npm安装(推荐)

npm install -g deobfuscate-mcp-server

从源代码构建

git clone https://github.com/ricardodeazambuja/deobfuscate-mcp-server.git
cd deobfuscate-mcp-server
npm install
npm run build

打包并安装(可选)

要创建可分发的tarball并全局安装:

npm pack
npm install -g ./deobfuscate-mcp-server-1.0.0.tgz

💻 使用示例

客户端配置

要将此服务器与你喜欢的大语言模型客户端一起使用,请添加以下配置。

Claude Code

在终端中运行以下命令:

claude mcp add deobfuscate-mcp-server -- npx -y deobfuscate-mcp-server

或者,编辑~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "deobfuscate-mcp-server": {
      "command": "npx",
      "args": ["-y", "deobfuscate-mcp-server"]
    }
  }
}

Gemini CLI

在终端中运行以下命令:

gemini mcp add deobfuscate-mcp-server npx -y deobfuscate-mcp-server

或者,编辑~/.gemini/settings.json

{
  "mcpServers": {
    "deobfuscate-mcp-server": {
      "command": "npx",
      "args": ["-y", "deobfuscate-mcp-server"]
    }
  }
}

Antigravity

在终端中运行以下命令:

antigravity --add-mcp '{"deobfuscate-mcp-server": {"command": "npx", "args": ["-y", "deobfuscate-mcp-server"]}}'

或者,编辑~/.antigravity/settings.json

{
  "mcpServers": {
    "deobfuscate-mcp-server": {
      "command": "npx",
      "args": ["-y", "deobfuscate-mcp-server"]
    }
  }
}

开发/本地使用

如果你从源代码运行服务器,请将命令替换为:

"command": "node",
"args": ["ABSOLUTE_PATH_TO_DIST/index.js"]

(将ABSOLUTE_PATH_TO_DIST替换为你机器上dist文件夹的实际绝对路径)

启动服务器

node dist/index.js

大语言模型的示例工作流程

  1. 用户:“分析这个压缩文件:bundle.min.js...”
  2. 大语言模型:调用deobfuscate(code="...", skipVendor=true)
    • 服务器:“反混淆完成。解包了15个模块。跳过了45个供应商模块...”
  3. 大语言模型:“好的,我看到入口点需要模块42。那是什么?”
  4. 大语言模型:调用get_module(id="42")
    • 服务器:返回模块42的代码。
  5. 大语言模型:“'login'函数在哪里定义?”
  6. 大语言模型:调用search_modules(query="function login")
    • 服务器:“在模块88中找到。”
  7. 大语言模型:“我只想查看login函数的逻辑。”
  8. 大语言模型:调用get_symbol_source(symbolName="login", moduleId="88")
    • 服务器:仅返回'login'函数的源代码。

📚 详细文档

开发

  • 构建npm run build
  • 测试npm test

限制

  • 文件大小:服务器接受最大为50MB的输入文件(包)。
  • 内存:解包的模块会缓存在RAM中。非常大的包(解包后数百MB)可能会耗尽服务器的可用内存,具体取决于你的环境。
help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端