JS Reverse MCP
NPM · @YUANHUAKK/JS-REVERSE-MCP · SCANNED SEP 20
MCP server for JavaScript reverse engineering and browser debugging.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security99
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 48 of 190 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency19
- Repository check failed: the declared repository URL returned HTTP 404. See how to fix → View diagnostics → Fail
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 87 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability76
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 8848 tokens (~92/item across 96 items; 96 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
- Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage84
- 97% of tools have a non-trivial description (not blank, and not just the tool's name).Partial
- 58% of tool parameters carry a description.Partial
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_session_state" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 96 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the JS Reverse MCP server?
JS Reverse MCP runs locally as an npm package, launched with npx -y @yuanhuakk/js-reverse-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · @yuanhuakk/js-reverse-mcp
claude mcp add yuanhuakk-jsreverser-mcp -- npx -y @yuanhuakk/js-reverse-mcp
{
"mcpServers": {
"yuanhuakk-jsreverser-mcp": {
"command": "npx",
"args": [
"-y",
"@yuanhuakk/js-reverse-mcp"
]
}
}
} {
"servers": {
"yuanhuakk-jsreverser-mcp": {
"command": "npx",
"args": [
"-y",
"@yuanhuakk/js-reverse-mcp"
]
}
}
} codex mcp add yuanhuakk-jsreverser-mcp -- npx -y @yuanhuakk/js-reverse-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"yuanhuakk-jsreverser-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"@yuanhuakk/js-reverse-mcp"
],
"enabled": true
}
}
} openclaw mcp add yuanhuakk-jsreverser-mcp --command npx --arg -y --arg @yuanhuakk/js-reverse-mcp
mcp_servers:
yuanhuakk-jsreverser-mcp:
command: "npx"
args: ["-y", "@yuanhuakk/js-reverse-mcp"] {
"McpServers": {
"yuanhuakk-jsreverser-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"@yuanhuakk/js-reverse-mcp"
]
}
}
} assistant mcp add yuanhuakk-jsreverser-mcp -t stdio -c npx -a -y @yuanhuakk/js-reverse-mcp
{
"mcpServers": {
"yuanhuakk-jsreverser-mcp": {
"command": "npx",
"args": [
"-y",
"@yuanhuakk/js-reverse-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 19 Sept 26 −2
- Stability: pass → 0.83 functional
- 18 Sept 26 0
- Stability: 0.97 → pass security
- 17 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 −3
- Stability: pass → 0.77 functional
- 10 Sept 26 0
- Stability: 0.97 → pass security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/@yuanhuakk/js-reverse-mcp@3.0.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 190 packages
| Packages resolved | 190 |
|---|---|
| Stale | 48 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
analyze_target ~143
一键式逆向流程:采集代码、执行安全与加密分析、可选反混淆,并关联 hook 时间线。
| Name | Type | Req | Description |
|---|---|---|---|
| autoInjectHooks | boolean | – | – |
| autoReplayActions | array | – | – |
| collect | object | – | – |
| correlationWindowMs | integer | – | – |
| hookPreset | string | – | – |
| maxCorrelatedFlows | integer | – | – |
| maxFingerprints | integer | – | – |
| runDeobfuscation | boolean | – | – |
| topN | integer | – | – |
| url | string | yes | – |
| useAI | boolean | – | – |
| waitAfterHookMs | integer | – | – |
No output schema declared.
No examples provided.
analyze_websocket_messages ~91
分析 WebSocket 消息并按模式/指纹对其分组。在直播流场景中理解二进制/protobuf 消息类型时尤为关键。为每种消息类型返回统计信息和样本索引。
| Name | Type | Req | Description |
|---|---|---|---|
| direction | string | – | Only analyze messages in this direction. |
| wsid | number | yes | The wsid of the WebSocket connection to analyze. |
No output schema declared.
No examples provided.
auto_patch_env ~265
闭环自动补环境:反复运行 rebuild 包 → 抓取 first divergence → 按补丁注册表自动写回 env.js → 重跑,直到复现成功、跑通无报错,或达到迭代上限(默认 6,符合「超过 6 个补丁未收敛就回浏览器取证」)。仅自动修补注册表内的低风险宿主缺口(window/self/document/navigator/location/history/screen/localStorage/sessionStorage/crypto/atob/btoa/TextEncoder/TextDecoder);遇到注册表外的错误(fetch/XHR/自定义检测等)会停下并交回人工。需先 export_rebuild_bundle 生成产物包。
| Name | Type | Req | Description |
|---|---|---|---|
| entryRelativePath | string | – | – |
| envRelativePath | string | – | 被自动写回补丁的 env 文件,相对 taskDir(默认 env/env.js)。 |
| expected | string | – | 若设置,stdout 包含该值即判定复现成功并提前停止。 |
| maxIterations | integer | – | 最多自动补丁轮数(默认 6)。 |
| taskDir | string | yes | export_rebuild_bundle 返回的 taskDir。 |
| timeout | integer | – | – |
No output schema declared.
No examples provided.
break_on_xhr ~45
设置一个断点,当 XHR/Fetch 请求的 URL 包含指定字符串时触发。
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | URL pattern to break on (partial match). |
No output schema declared.
No examples provided.
bypass_anti_debug ~108
消除常见的反调试防护,使调试/观察得以进行:在引擎层面跳过所有 debugger 暂停(破解 `debugger;` 陷阱),并注册一个预加载补丁,在后续页面加载时丢弃仅用于触发 debugger 的定时器循环。传入 off=true 可恢复正常的暂停行为。
| Name | Type | Req | Description |
|---|---|---|---|
| off | boolean | – | Restore normal debugger pausing instead of bypassing. |
No output schema declared.
No examples provided.
check_browser_health ~29
在运行逆向工作流之前,检查浏览器连接状态和活动页面就绪情况。
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
check_llm_health ~37
检查 LLM 服务商配置,可选发起一次实时对话探测。
| Name | Type | Req | Description |
|---|---|---|---|
| liveCheck | boolean | – | – |
No output schema declared.
No examples provided.
click_element ~23
通过选择器点击一个元素。
| Name | Type | Req | Description |
|---|---|---|---|
| selector | string | yes | – |
No output schema declared.
No examples provided.
collect_code ~275
从页面采集 JavaScript 代码,支持智能模式(summary/priority/incremental/full)。
| Name | Type | Req | Description |
|---|---|---|---|
| enableAdvancedDynamicAnalysis | boolean | – | Opt-in advanced dynamic analysis report. Adds broader browser-state, async, worker, wasm, fingerprint and anti-debug sampling plus replay and Node reproduction drafts. |
| enableRuntimeSampler | boolean | – | Opt-in runtime sampler. Captures lightweight stack summaries for fetch, XHR, WebSocket, crypto, time, random, btoa and atob before page scripts run. |
| includeDynamic | boolean | – | – |
| includeExternal | boolean | – | – |
| includeInline | boolean | – | – |
| limit | integer | – | – |
| maxFileSize | integer | – | – |
| maxSensitiveEvidenceLength | integer | – | Maximum plaintext length per target-parameter evidence record (default 2000). |
| maxTotalSize | integer | – | – |
| pattern | string | – | – |
| returnMode | string | – | – |
| smartMode | string | – | – |
| targetParamSampleWindowMs | integer | – | Runtime sampler correlation window for target parameter requests. |
| targetParams | array | – | Opt-in target parameter tracing. Matches target names in request query, headers and body, then links them to runtime stacks and replay hints. |
| topN | integer | – | – |
| url | string | yes | – |
No output schema declared.
No examples provided.
collection_diff ~44
对比前后两次采集到的文件摘要。
| Name | Type | Req | Description |
|---|---|---|---|
| current | array | – | – |
| includeUnchanged | boolean | – | – |
| previous | array | yes | – |
No output schema declared.
No examples provided.
create_hook ~85
推荐:为 function/fetch/xhr/property/cookie/websocket/eval/timer 创建 hook 脚本。hook 在不暂停页面执行的情况下运行,相比断点是监控与拦截的首选方案。
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | – |
| description | string | – | – |
| params | object | – | – |
| type | string | yes | – |
No output schema declared.
No examples provided.
crypto_verify ~187
在 Node 中计算标准加密原语(md5/sha*/hmac-*/base64/hex/AES-CBC),并可选地与观测到的值进行比对——用于确认复现的签名或加密方案。
| Name | Type | Req | Description |
|---|---|---|---|
| expected | string | – | If set, compare the result against this value. |
| input | string | yes | Input data (interpreted using inputEncoding). |
| inputEncoding | string | – | How to read input (default: utf8). |
| iv | string | – | IV for aes-*-cbc operations. |
| ivEncoding | string | – | – |
| key | string | – | Key for hmac-* / aes-* operations. |
| keyEncoding | string | – | – |
| op | string | yes | The operation to run. |
| outputEncoding | string | – | Output encoding for hash/hmac/encrypt (default: hex). |
No output schema declared.
No examples provided.
decrypt_calls_in_page ~161
页面内活解密去混淆:用目标页面里已加载的活解密函数还原 `decryptName(...)` 调用,无需重建解密器(node-vm 的 sojson/ob 重建失败时的兜底)。前置:页面已执行过目标脚本,使解密函数全局可达。babel 在 node 侧,只把解密调用经 evaluate 丢进页面求值后替换回字面量。
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | 要去混淆的代码(含 decryptName(...) 调用)。 |
| decryptName | string | yes | 页面里活的解密函数名(全局可达),如 _0x3925。 |
No output schema declared.
No examples provided.
delete_session_state ~31
按 sessionId 删除一个内存中的会话快照。
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | yes | – |
No output schema declared.
No examples provided.
deobfuscate_code ~54
AI 辅助的 JavaScript 反混淆。
| Name | Type | Req | Description |
|---|---|---|---|
| aggressive | boolean | – | – |
| code | string | yes | – |
| renameVariables | boolean | – | – |
| useAI | boolean | – | – |
No output schema declared.
No examples provided.
detect_crypto ~39
从 JavaScript 源码中检测加密算法与加密库。
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | – |
| useAI | boolean | – | – |
No output schema declared.
No examples provided.
diff_env_requirements ~54
将本地运行时的失败与观察到的浏览器能力进行对比,并给出下一步的环境修补建议。
| Name | Type | Req | Description |
|---|---|---|---|
| observedCapabilities | array | – | – |
| runtimeError | string | yes | – |
No output schema declared.
No examples provided.
disassemble_wasm ~168
把 WASM 二进制反汇编成可读的 wat 文本(基于 wabt)。逆向 WASM 承载的加密/签名逻辑时的第一步。输入 base64 编码的 wasm 字节,或一个 .wasm URL(由 MCP 进程 fetch)。可与 inspect_wasm 配合使用。
| Name | Type | Req | Description |
|---|---|---|---|
| base64 | string | – | base64 编码的 wasm 二进制(与 url 二选一)。 |
| maxChars | integer | – | 返回 wat 文本的最大字符数(默认 40000,超出截断)。 |
| url | string | – | .wasm 文件 URL,由 MCP 进程 fetch 后反汇编(与 base64 二选一)。 |
No output schema declared.
No examples provided.
dump_session_state ~56
将已保存的会话快照导出为 JSON,可选择写入文件。
| Name | Type | Req | Description |
|---|---|---|---|
| encrypt | boolean | – | – |
| path | string | – | – |
| pretty | boolean | – | – |
| sessionId | string | yes | – |
No output schema declared.
No examples provided.
evaluate_on_callframe ~84
在暂停时,于指定调用帧的上下文中执行一段 JavaScript 表达式。可借此查看变量并在暂停的作用域中执行代码。
| Name | Type | Req | Description |
|---|---|---|---|
| expression | string | yes | The JavaScript expression to evaluate. |
| frameIndex | integer | – | The call frame index to evaluate in (0 = top frame, default: 0). |
No output schema declared.
No examples provided.
evaluate_script ~113
在当前选中的页面内执行一个 JavaScript 函数。返回结果以 JSON 形式给出, 因此返回值必须可被 JSON 序列化。
| Name | Type | Req | Description |
|---|---|---|---|
| function | string | yes | A JavaScript function declaration to be executed by the tool in the currently selected page. Example without arguments: `() => { return document.title }` or `async () => { return await fetch("exa… |
No output schema declared.
No examples provided.
export_rebuild_bundle ~215
根据观察到的逆向证据导出本地 Node 复现产物包。
| Name | Type | Req | Description |
|---|---|---|---|
| autoGenerate | boolean | – | – |
| capture | object | – | – |
| entryCode | string | – | – |
| envBaseline | string | – | autoGenerate 时的补环境基线:minimal=零依赖手搓壳(默认,适合强指纹检测目标);jsdom=jsdom DOM 基线 + core-js + 保真覆盖层(适合 DOM 操作密集目标)。 |
| envCode | string | – | – |
| goal | string | yes | – |
| maxEvidenceItems | integer | – | – |
| notes | array | – | – |
| polyfillsCode | string | – | – |
| targetActionDescription | string | – | – |
| targetFunctionNames | array | – | – |
| targetKeywords | array | – | – |
| targetUrl | string | yes | – |
| targetUrlPatterns | array | – | – |
| taskId | string | yes | – |
| taskSlug | string | yes | – |
No output schema declared.
No examples provided.
export_session_report ~38
将当前逆向会话导出为 JSON 或 Markdown。
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | – |
| includeHookData | boolean | – | – |
No output schema declared.
No examples provided.
find_clickable_elements ~32
查找可点击的按钮/链接,可选按文本过滤。
| Name | Type | Req | Description |
|---|---|---|---|
| filterText | string | – | – |
No output schema declared.
No examples provided.
find_in_script ~149
在指定脚本中查找字符串,返回其精确的行/列位置以及周围上下文。非常适合在整段代码挤在一行的压缩文件中设置断点。
| Name | Type | Req | Description |
|---|---|---|---|
| caseSensitive | boolean | – | Whether the search is case-sensitive (default: true). |
| contextChars | integer | – | Number of characters to show before and after the match (default: 100). |
| occurrence | integer | – | Which occurrence to find (1 = first, 2 = second, etc.). |
| query | string | yes | The string to find in the script. |
| scriptId | string | yes | The script ID to search in (from list_scripts). |
No output schema declared.
No examples provided.
get_console_message ~52
按 ID 获取单条控制台消息。可通过调用 list_console_messages 获取全部消息。
| Name | Type | Req | Description |
|---|---|---|---|
| msgid | number | yes | The msgid of a console message on the page from the listed console messages |
No output schema declared.
No examples provided.
get_coverage ~133
收集自 start_coverage 以来累积的 JS 执行覆盖率,报告实际运行过的函数,按脚本分组并按调用次数排序。返回相对上一次 get_coverage 调用的增量。
| Name | Type | Req | Description |
|---|---|---|---|
| maxFunctionsPerScript | integer | – | Maximum executed functions to list per script (default: 40). |
| maxScripts | integer | – | Maximum number of scripts to report (default: 30). |
| stop | boolean | – | Stop and disable coverage after collecting (default: false). |
| urlFilter | string | – | Only include scripts whose URL contains this substring. |
No output schema declared.
No examples provided.
get_dom_structure ~34
获取当前页面的 DOM 树结构。
| Name | Type | Req | Description |
|---|---|---|---|
| includeText | boolean | – | – |
| maxDepth | integer | – | – |
No output schema declared.
No examples provided.
get_hook_data ~64
获取某个 hook 或全部 hook 捕获的数据。支持原始(raw)视图和用于降噪的摘要(summary)视图。
| Name | Type | Req | Description |
|---|---|---|---|
| hookId | string | – | – |
| maxRecords | integer | – | – |
| view | string | – | – |
No output schema declared.
No examples provided.
get_network_request ~66
按可选的 reqid 获取某个网络请求;省略时返回 DevTools 网络面板中当前选中的请求。
| Name | Type | Req | Description |
|---|---|---|---|
| reqid | number | – | The reqid of the network request. If omitted returns the currently selected request in the DevTools Network panel. |
No output schema declared.
No examples provided.
get_paused_info ~75
获取当前暂停状态的信息,包括调用栈、当前位置和作用域变量。命中断点后用它来了解执行上下文。
| Name | Type | Req | Description |
|---|---|---|---|
| includeScopes | boolean | – | Whether to include scope variables (default: true). |
| maxScopeDepth | integer | – | Maximum scope depth to traverse (default: 2). |
No output schema declared.
No examples provided.
get_performance_metrics ~19
通过 Performance API 获取页面性能指标。
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_request_initiator ~132
获取发起某个网络请求的 JavaScript 调用栈,便于追踪是哪段代码触发了 API 调用。
| Name | Type | Req | Description |
|---|---|---|---|
| goal | string | – | Optional reverse-engineering goal for the task artifact. |
| requestId | integer | yes | The request ID (from list_network_requests) to get the initiator for. |
| targetUrl | string | – | Optional target page URL associated with the reverse task. |
| taskId | string | – | Optional reverse task ID for writing durable evidence artifacts. |
| taskSlug | string | – | Optional reverse task slug used when opening the task artifact directory. |
No output schema declared.
No examples provided.
get_script_source ~166
通过 scriptId 获取 JavaScript 脚本的源代码。支持按行号范围(普通文件)或字符偏移(压缩成单行的文件)读取。请先用 `list_scripts` 查找 scriptId。
| Name | Type | Req | Description |
|---|---|---|---|
| endLine | integer | – | End line number (1-based). Use for multi-line files. |
| length | integer | – | Number of characters to return when using offset (default: 1000). |
| offset | integer | – | Character offset to start from (0-based). Use for minified single-line files. |
| scriptId | string | yes | The script ID (from list_scripts) to get the source code for. |
| startLine | integer | – | Start line number (1-based). Use for multi-line files. |
No output schema declared.
No examples provided.
get_storage ~54
获取浏览器存储数据,包括 cookies、localStorage 和 sessionStorage。
| Name | Type | Req | Description |
|---|---|---|---|
| filter | string | – | Optional filter string to match against keys/names. |
| type | string | – | Which storage to retrieve (default: all). |
No output schema declared.
No examples provided.
get_websocket_message ~76
通过 frame 索引获取单条 WebSocket 消息。请先使用 get_websocket_messages 或 analyze_websocket_messages 找到 frame 索引。
| Name | Type | Req | Description |
|---|---|---|---|
| frameIndex | integer | yes | The frame index (0-based) to retrieve. |
| wsid | number | yes | The wsid of the WebSocket connection. |
No output schema declared.
No examples provided.
get_websocket_messages ~183
获取某个 WebSocket 连接的消息。重要:对于二进制/protobuf 消息(如直播流),请先使用 analyze_websocket_messages 了解消息类型,再通过 groupId 参数筛选特定类型。默认模式仅显示摘要。
| Name | Type | Req | Description |
|---|---|---|---|
| direction | string | – | Filter by direction: "sent" or "received". |
| groupId | string | – | Filter by group ID (A, B, C, ...). Get group IDs from analyze_websocket_messages first. |
| pageIdx | integer | – | Page number (0-based). |
| pageSize | integer | – | Messages per page. Defaults to 10. |
| show_content | boolean | – | Set to true to show full message payload. Default false (summary only) to avoid large binary output. |
| wsid | number | yes | The wsid of the WebSocket connection. |
No output schema declared.
No examples provided.
hook_crypto_apis ~136
一键 hook 常见编码/加密/(可选)定时 API(JSON.parse·stringify、atob/btoa、encode·decodeURI(Component)、escape/unescape、WebCrypto…),记录调用参数与调用栈,用于快速定位加密/签名发生处。复用 create_hook 体系(含 toString 隐身),数据用 get_hook_data 读取。
| Name | Type | Req | Description |
|---|---|---|---|
| extra | array | – | 额外自定义函数表达式路径(如 CryptoJS.MD5、window.sign)。 |
| groups | array | – | 要 hook 的分组,默认 ["encode"]。 |
No output schema declared.
No examples provided.
hook_function ~170
逆向推荐方式:hook 一个 JavaScript 函数,在不暂停执行的情况下记录它的调用、参数和返回值。在自动化流程中比断点更可靠。监控函数时请将其作为默认方式。
| Name | Type | Req | Description |
|---|---|---|---|
| hookId | string | – | Custom identifier for this hook. Used to unhook later. Defaults to target name. |
| logArgs | boolean | – | Whether to log function arguments (default: true). |
| logResult | boolean | – | Whether to log return value (default: true). |
| logStack | boolean | – | Whether to log call stack (default: false). |
| target | string | yes | The function to hook. Can be: global function name ("fetch"), object method ("XMLHttpRequest.prototype.open"), or path ("window.app.api.request"). |
No output schema declared.
No examples provided.
inject_hook ~26
将已有的 hook 注入到当前页面。
| Name | Type | Req | Description |
|---|---|---|---|
| hookId | string | yes | – |
No output schema declared.
No examples provided.
inject_preload_script ~71
注册一段 JavaScript 代码,使其在后续文档加载时、页面脚本执行之前运行。可用于预加载脚本的钩子、环境修补以及早期插桩。
| Name | Type | Req | Description |
|---|---|---|---|
| script | string | yes | JavaScript source to register for future document loads. |
No output schema declared.
No examples provided.
inject_stealth ~31
向当前页面注入反检测 stealth 脚本。
| Name | Type | Req | Description |
|---|---|---|---|
| preset | string | – | – |
No output schema declared.
No examples provided.
inspect_object ~114
深度检查一个 JavaScript 对象,展示它的属性、原型链和方法。便于理解对象结构。
| Name | Type | Req | Description |
|---|---|---|---|
| depth | integer | – | How deep to inspect nested objects (default: 2). |
| expression | string | yes | JavaScript expression to evaluate and inspect (e.g., "window.app", "document.body", "myObject"). |
| showMethods | boolean | – | Whether to show methods (default: true). |
| showPrototype | boolean | – | Whether to show prototype chain (default: true). |
No output schema declared.
No examples provided.
inspect_wasm ~115
检查页面实例化的 WebAssembly 模块。action="install" 会 hook WebAssembly.instantiate 以记录导出/导入(请在 WASM 运行之前调用——如果它在加载时实例化则需重新加载);action="report" 列出捕获的模块及其导出和导入的名称/类型。
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | "install" the capture hook, or "report" captured modules. |
| max | integer | – | Max modules to list. |
No output schema declared.
No examples provided.
instrument_jsvmp ~260
jsvmp 插桩 trace:在脚本中定位解释器 dispatcher(巨型 switch + 无限循环 + 索引判别式),给分发 switch 注入探针(判别式只求值一次、语义保持),产出插桩后的等价源码与探针引导片段。随后用请求拦截/setScriptSource 把页面脚本换成插桩源码,触发行为后用 evaluate_script 读回 window.<probe>Buffer,再调用 reconstruct_jsvmp_trace 重建指令流。
| Name | Type | Req | Description |
|---|---|---|---|
| dispatcherStart | integer | – | 限定只对该起始偏移的函数内 switch 注入(来自候选的 start)。默认取最高分候选。 |
| minCases | integer | – | 只处理 case 数 ≥ 该值的 switch,默认 8。 |
| probeName | string | – | 探针函数名,默认 __vReverseProbe。 |
| registerProbe | boolean | – | true=把探针引导片段注册为 preload(下次文档加载前装好缓冲区)。默认 false。 |
| source | string | yes | 目标脚本源码(通常来自 get_script_source)。 |
No output schema declared.
No examples provided.
list_breakpoints ~25
列出当前调试会话中所有生效的断点。
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_console_messages ~123
列出当前选中页面自上次导航以来的所有控制台消息。
| Name | Type | Req | Description |
|---|---|---|---|
| includePreservedMessages | boolean | – | Set to true to return the preserved messages over the last 3 navigations. |
| pageIdx | integer | – | Page number to return (0-based). When omitted, returns the first page. |
| pageSize | integer | – | Maximum number of messages to return. When omitted, returns all requests. |
| types | array | – | Filter messages to only return messages of the specified resource types. When omitted or empty, returns all messages. |
No output schema declared.
No examples provided.
list_frames ~48
以树状结构列出当前页面中的所有 frame(包括 iframe),显示 frame 索引、名称和 URL。使用 select_frame 可将执行上下文切换到指定 frame。
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_hooks ~18
列出所有生效的函数 hook。
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_network_requests ~123
列出当前选中页面自上次导航以来的所有网络请求。
| Name | Type | Req | Description |
|---|---|---|---|
| includePreservedRequests | boolean | – | Set to true to return the preserved requests over the last 3 navigations. |
| pageIdx | integer | – | Page number to return (0-based). When omitted, returns the first page. |
| pageSize | integer | – | Maximum number of requests to return. When omitted, returns all requests. |
| resourceTypes | array | – | Filter requests to only return requests of the specified resource types. When omitted or empty, returns all requests. |
No output schema declared.
No examples provided.
What is the JS Reverse MCP server?
JS Reverse MCP is listed in the public MCP registry as io.github.YuanHuakk/JSReverser-MCP. MCP server for JavaScript reverse engineering and browser debugging. This page covers its npm package (@yuanhuakk/js-reverse-mcp).
Is the JS Reverse MCP server safe to use?
JS Reverse MCP scores 75 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the JS Reverse MCP server expose?
JS Reverse MCP exposes 96 tools: analyze_target, analyze_websocket_messages, auto_patch_env, break_on_xhr, bypass_anti_debug, and 91 more. Their descriptions and schemas cost roughly 8,848 tokens of context every time the server is loaded.
Is the JS Reverse MCP server still maintained?
JS Reverse MCP is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the JS Reverse MCP server under?
JS Reverse MCP declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.