ReverseCraft DevTools MCP

ReverseCraft DevTools MCP

A powerful MCP server for browser debugging and reverse engineering, providing AI coding assistants with comprehensive browser automation, JavaScript debugging, and network analysis capabilities.

Category
访问服务器

README

ReverseCraft DevTools MCP

A powerful MCP (Model Context Protocol) server for browser debugging and reverse engineering. Provides AI coding assistants with comprehensive browser automation, JavaScript debugging, and network analysis capabilities.

Features

  • JavaScript Debugging: Set breakpoints, step through code, inspect variables, and analyze call graphs
  • Network Analysis: Monitor, search, and save network requests with full request/response details
  • Script Interception: Replace JavaScript code on-the-fly for testing and reverse engineering
  • Page Automation: Navigate pages, interact with elements, and capture screenshots
  • Console Monitoring: Access and filter console messages with full stack traces

Installation

Using npx (Recommended)

npx @reverse-craft/rc-devtools-mcp@latest

Using npm

npm install -g @reverse-craft/rc-devtools-mcp
rc-devtools-mcp

MCP Client Configuration

Kiro

Add to your Kiro MCP configuration (.kiro/settings/mcp.json):

{
  "mcpServers": {
    "rc-devtools": {
      "command": "npx",
      "args": ["@reverse-craft/rc-devtools-mcp@latest"]
    }
  }
}

Cursor

Add to your Cursor MCP configuration:

{
  "mcpServers": {
    "rc-devtools": {
      "command": "npx",
      "args": ["@reverse-craft/rc-devtools-mcp@latest"]
    }
  }
}

Claude Desktop

Add to your Claude Desktop configuration (claude_desktop_config.json):

{
  "mcpServers": {
    "rc-devtools": {
      "command": "npx",
      "args": ["@reverse-craft/rc-devtools-mcp@latest"]
    }
  }
}

With Custom Options

{
  "mcpServers": {
    "rc-devtools": {
      "command": "npx",
      "args": [
        "@reverse-craft/rc-devtools-mcp@latest",
        "--headless",
        "--viewport", "1920x1080"
      ]
    }
  }
}

Quick Start

  1. Configure your MCP client with the server
  2. Start a conversation with your AI assistant
  3. Ask it to navigate to a website and debug JavaScript:
Navigate to https://example.com and set a breakpoint on line 10 of main.js

Or analyze network traffic:

List all network requests and show me the API calls

Available Tools

Input Automation

click - Click on an element

  • uid (string, required): Element uid from page content snapshot
  • dblClick (boolean, optional): Set to true for double click (default: false)

fill - Type text into input or select option

  • uid (string, required): Element uid from page content snapshot
  • value (string, required): Text to fill or option to select

press_key - Press a key or key combination

  • key (string, required): Key or combination (e.g., "Enter", "Control+A", "Control+Shift+R")
    • Supported modifiers: Control, Shift, Alt, Meta

Navigation

navigate_page - Navigate to URL, go back/forward, or reload

  • type (string, optional): Navigation type: url, back, forward, or reload
  • url (string, optional): Target URL (required when type=url)
  • ignoreCache (boolean, optional): Ignore cache on reload
  • enableDebugger (boolean, optional): Enable JavaScript debugger after navigation (default: true)
  • timeout (number, optional): Navigation timeout in milliseconds

new_page - Create a new browser page

  • url (string, required): URL to load in the new page
  • incognito (boolean, optional): Open in incognito window
  • newWindow (boolean, optional): Open in new window
  • userDataDir (string, optional): Independent user data directory path
  • enableDebugger (boolean, optional): Enable JavaScript debugger (default: true)
  • timeout (number, optional): Navigation timeout in milliseconds

close_page - Close a page by index

  • pageIdx (number, required): Index of page to close (from list_pages)

list_pages - List all open pages

  • No parameters

select_page - Select a page as active context

  • pageIdx (number, required): Index of page to select (from list_pages)
  • bringToFront (boolean, optional): Focus and bring page to top

clear_cookies - Clear browser cookies

  • url (string, optional): Clear cookies for specific domain only (omit to clear all)

Network

list_network_requests - List all network requests

  • pageSize (number, optional): Maximum requests to return
  • pageIdx (number, optional): Page number (0-based)
  • resourceTypes (array, optional): Filter by resource types (e.g., ["xhr", "fetch", "script"])
  • includePreservedRequests (boolean, optional): Include requests from last 3 navigations (default: false)

get_network_request - Get details of a specific request

  • reqid (number, optional): Request ID (omit to use currently selected request in DevTools)

search_network_requests - Search requests by URL, method, status, or content

  • searchContent (string, optional): Search term in URL, headers, and bodies (returns highlighted snippets)
  • urlPattern (string, optional): URL pattern (substring or regex, e.g., "api/users" or ".*\\.json$")
  • method (string, optional): HTTP method filter (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS)
  • statusCode (number, optional): Exact status code filter
  • statusCodeMin (number, optional): Minimum status code (inclusive)
  • statusCodeMax (number, optional): Maximum status code (inclusive)
  • contentType (string, optional): Response content type filter (substring match, e.g., "json")
  • resourceTypes (array, optional): Filter by resource types
  • includePreservedRequests (boolean, optional): Search in preserved requests (default: false)
  • pageSize (number, optional): Maximum results to return
  • pageIdx (number, optional): Page number (0-based)

save_network_request - Save request/response to file in raw HTTP format

  • reqid (number, optional): Request ID (omit to use currently selected request)
  • filePath (string, required): File path to save HTTP transaction
  • responseBodyFilePath (string, optional): Separate file for binary response body
  • saveRequestBody (boolean, optional): Save request body to separate file
  • requestBodyFilePath (string, optional): File path for request body

save_static_resource - Save static resource to file

  • reqid (number, required): Request ID containing the resource
  • filePath (string, required): File path or directory (extension auto-detected from content type)

Debugging

Breakpoint Management

set_breakpoint - Set a JavaScript breakpoint at a specific line

  • urlRegex (string, required): Regular expression to match script URL (e.g., ".*main\\.js.*")
  • lineNumber (number, required): Line number (1-based, as shown in editors)
  • columnNumber (number, optional): Target column number (0-based) for smart snapping
  • snapRange (number, optional): Search range around target column for valid positions (default: 100)
  • condition (string, optional): JavaScript expression - breakpoint only triggers when true

remove_breakpoint - Remove a breakpoint by its ID

  • breakpointId (string, required): CDP breakpoint ID from set_breakpoint or list_breakpoints

list_breakpoints - List all active breakpoints

  • searchTerm (string, optional): Filter breakpoints by ID or URL pattern
  • pageSize (number, optional): Maximum breakpoints per page
  • pageIdx (number, optional): Page number (0-based)

clear_all_breakpoints - Remove all breakpoints on the current page

  • No parameters

get_possible_breakpoints - Find valid breakpoint locations (useful for minified code)

  • urlRegex (string, required): Regular expression to match script URL
  • lineNumber (number, required): Line number to search (1-based)
  • startColumn (number, optional): Start column for search range (0-based)
  • endColumn (number, optional): End column for search range (0-based)
  • maxCount (number, optional): Maximum locations to return (default: 20)

Execution Control

step_into - Step into a function call

  • maxCallStackDepth (number, optional): Max call stack frames to display (default: 4)
  • contextLines (number, optional): Lines of code context before/after (default: 2)
  • maxLocalVariables (number, optional): Max local variables to display (default: 5)
  • showStatus (boolean, optional): Whether to show debug status (default: true)

step_over - Step over to the next line

  • maxCallStackDepth (number, optional): Max call stack frames to display (default: 4)
  • contextLines (number, optional): Lines of code context before/after (default: 2)
  • maxLocalVariables (number, optional): Max local variables to display (default: 5)
  • showStatus (boolean, optional): Whether to show debug status (default: true)

step_out - Step out of the current function

  • maxCallStackDepth (number, optional): Max call stack frames to display (default: 4)
  • contextLines (number, optional): Lines of code context before/after (default: 2)
  • maxLocalVariables (number, optional): Max local variables to display (default: 5)
  • showStatus (boolean, optional): Whether to show debug status (default: true)

resume_execution - Resume paused execution

  • No parameters

Inspection & Evaluation

get_debugger_status - Get current debugger state with call stack and variables

  • frameIndex (number, optional): Call frame index to inspect (default: 0)
  • contextLines (number, optional): Lines of code context (default: 5)
  • maxPropertiesPerScope (number, optional): Max properties per scope to display
  • skipScopeVariables (boolean, optional): Skip scope variable inspection
  • useObjectPreviews (boolean, optional): Use object previews instead of full retrieval
  • maxOutputLines (number, optional): Maximum output lines (default: 100)
  • maxCallStackFrames (number, optional): Max call stack frames (default: 20)
  • maxLineLength (number, optional): Max characters per line (default: 500)

evaluate_on_call_frame - Evaluate JavaScript expression in a specific call frame

  • expression (string, required): JavaScript expression to evaluate
  • frameIndex (number, optional): Call frame index (default: 0)
  • maxOutputChars (number, optional): Max output characters (default: 10000)
  • filepath (string, optional): Save result to file instead of displaying

get_scope_variables - Get detailed variable information from a scope

  • frameIndex (number, optional): Call frame index (default: 0)
  • scopeType (string, optional): Filter by scope type (local, closure, block, script, global, etc.)
  • variableName (string, optional): Get specific variable by name
  • searchTerm (string, optional): Search variables by name
  • pageSize (number, optional): Max variables per page
  • pageIdx (number, optional): Page number (0-based)
  • maxDepth (number, optional): Max depth for nested objects (default: 3)
  • maxOutputLines (number, optional): Max output lines (default: 100)
  • saveToFile (string, optional): Save output to file path
  • maxLineLength (number, optional): Max characters per line (default: 1000)

save_scope_variables - Save all scope variables to a JSON file

  • filePath (string, required): Output file path
  • frameIndex (number, optional): Call frame index (default: 0)
  • includeGlobal (boolean, optional): Include global scope (default: false)

disable_debugger - Disable the debugger and remove all breakpoints

  • No parameters

XHR/Fetch Breakpoints

set_xhr_breakpoint - Set a breakpoint on XHR/Fetch requests

  • urlPattern (string, required): URL substring to match (empty string matches all requests)

remove_xhr_breakpoint - Remove an XHR breakpoint

  • urlPattern (string, optional): URL pattern to remove (omit to remove all XHR breakpoints)

list_xhr_breakpoints - List all active XHR breakpoints

  • No parameters

Script Analysis

save_script_source - Save script source code to file

  • scriptId (string, optional): Script ID (omit to use currently selected script in DevTools)
  • filePath (string, required): File path to save the source code

analyze_call_graph - Analyze function callers and callees

  • functionName (string, required): Name of the function to analyze
  • upstreamDepth (number, optional): Max depth for upstream trace (callers, default: 3, max: 10)
  • downstreamDepth (number, optional): Max depth for downstream trace (callees, default: 3, max: 10)
  • urlPattern (string, optional): Regex pattern to filter scripts by URL

search_functions - Search for functions by name pattern

  • pattern (string, required): Function name pattern (substring or regex)
  • urlPattern (string, optional): Regex pattern to filter scripts by URL
  • maxResults (number, optional): Maximum results to return (default: 50)

Script Interception

replace_script - Replace code in scripts matching a URL pattern

  • urlPattern (string, required): Regex to match script URLs (e.g., ".*main\\.js.*")
  • oldCode (string, required): Original code snippet to replace (must match exactly)
  • newCode (string, required): New code snippet
  • Note: Changes take effect after page refresh. Rules persist across refreshes.

list_script_replacements - List active script replacement rules

  • No parameters

remove_script_replacement - Remove a script replacement rule

  • ruleId (string, required): Rule ID to remove (from list_script_replacements)

clear_script_replacements - Remove all script replacement rules

  • No parameters

Console

list_console_messages - List console messages

  • pageSize (number, optional): Maximum messages to return
  • pageIdx (number, optional): Page number (0-based)
  • types (array, optional): Filter by message types (e.g., ["log", "error", "warn"])
    • Available types: log, debug, info, error, warn, dir, dirxml, table, trace, clear, assert, issue, etc.
  • includePreservedMessages (boolean, optional): Include messages from last 3 navigations (default: false)
  • savePath (string, optional): Save messages to file instead of displaying
  • maxLineLength (number, optional): Max characters per line (default: 500)

get_console_message - Get a specific console message by ID

  • msgid (number, required): Message ID from list_console_messages

Screenshots & Snapshots

take_screenshot - Capture a screenshot

  • format (string, optional): Image format: png, jpeg, or webp (default: png)
  • quality (number, optional): Compression quality for JPEG/WebP (0-100, higher = better quality)
  • uid (string, optional): Element uid to screenshot (omit for full page)
  • fullPage (boolean, optional): Capture full page instead of viewport (incompatible with uid)
  • filePath (string, optional): Save to file instead of attaching to response

take_snapshot - Take a text snapshot of the page

  • No parameters
  • Returns accessibility tree representation of the page

Configuration Options

Option Description Default
--cdp-url CDP URL to connect to a running Chrome instance http://127.0.0.1:9222
--browser-url Connect to a debuggable Chrome instance -
--ws-endpoint WebSocket endpoint for Chrome connection -
--headless Run Chrome in headless mode false
--executable-path Path to custom Chrome executable -
--viewport Initial viewport size (e.g., 1280x720) -
--user-data-dir Chrome user data directory -
--channel Chrome channel (stable, beta, dev, canary) stable
--isolated Use temporary user data directory false
--no-sandbox Disable Chrome sandboxes (for Docker) false
--proxy-server Proxy server configuration -
--proxy-username Proxy authentication username -
--proxy-password Proxy authentication password -
--log-file Path to save debug logs -
--no-category-emulation Disable emulation tools -
--no-category-network Disable network tools -

Examples

Connect to an existing Chrome instance:

npx @reverse-craft/rc-devtools-mcp@latest --browser-url http://127.0.0.1:9222

Run in headless mode:

npx @reverse-craft/rc-devtools-mcp@latest --headless

Use Chrome Canary:

npx @reverse-craft/rc-devtools-mcp@latest --channel canary

Set viewport size:

npx @reverse-craft/rc-devtools-mcp@latest --viewport 1920x1080

Use with proxy:

npx @reverse-craft/rc-devtools-mcp@latest --proxy-server http://proxy.example.com:8080

Requirements

  • Node.js 20.19.0+, 22.12.0+, or 23+
  • Chrome/Chromium browser (automatically managed or custom installation)

License

Apache-2.0

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选