Skip to main content
Glama
MadeByTokens

Deobfuscate MCP Server

by MadeByTokens

Deobfuscate MCP Server

An LLM-Optimized Model Context Protocol (MCP) server designed to help Large Language Models reverse-engineer, navigate, and understand minified and bundled JavaScript code.

Why this Server?

Standard "beautifiers" only format code, leaving LLMs to struggle with massive, linear text files that overflow context windows. This server treats minified code as a searchable database, allowing LLMs to:

  1. De-obfuscate & Unbundle: Uses webcrack to split Webpack/Browserify bundles into individual modules.

  2. See the Architecture: Returns a JSON summary of the file's structure (exports, functions) before reading the code.

  3. Navigate Randomly: Read specific modules on-demand (get_module) instead of the whole file.

  4. Search Semantically: Find where specific strings or patterns exist across thousands of unbundled modules.

Related MCP server: opensrc-mcp

Features

  • deobfuscate: The entry point. Unpacks bundles and caches them in memory.

    • returnCode (default false): Returns a summary by default to save context. Set to true to see the full code.

    • skipVendor: Filter out node_modules and webpack boilerplate to focus on app code.

    • mangle: Shorten variable names to save tokens.

    • jsx: Restore React JSX syntax.

  • analyze_structure: Returns a high-level AST summary (functions, classes, exports) to save tokens.

  • list_modules: Lists all modules found in the unpacked bundle.

  • list_functions: Scans cached modules to list defined functions/classes with signatures and parameters.

  • get_call_graph: Generates a call graph for a specific function, identifying what it calls and what calls it.

  • get_module: Fetches the formatted source code of a single module.

  • get_symbol_source: Extracts only a specific function, class, or variable to save tokens.

  • search_modules: Regex/String search across all modules.

  • format_code: Standard Prettier formatting for JS/HTML/CSS.

  • get_help: Returns detailed documentation for any tool.

Installation & Setup

npm install -g deobfuscate-mcp-server

Build from source

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

Pack and Install (Optional)

To create a distributable tarball and install it globally:

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

Client Configuration

To use this server with your favorite LLM client, add the following configuration.

Claude Code

Run the following command in your terminal:

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

Alternatively, edit ~/Library/Application Support/Claude/claude_desktop_config.json:

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

Gemini CLI

Run the following command in your terminal:

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

Alternatively, edit ~/.gemini/settings.json:

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

Antigravity

Run the following command in your terminal:

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

Alternatively, edit ~/.antigravity/settings.json:

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

Development / Local Usage

If you are running the server from the source code, replace the command with:

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

(Replace ABSOLUTE_PATH_TO_DIST with the actual absolute path to the dist folder on your machine)

Usage

Start the server:

node dist/index.js

Example Workflow for an LLM

  1. User: "Analyze this minified file: bundle.min.js..."

  2. LLM: Calls deobfuscate(code="...", skipVendor=true).

    • Server: "Deobfuscation complete. Unbundled 15 modules. Skipped 45 vendor modules..."

  3. LLM: "Okay, I see the entry point requires module 42. What is that?"

  4. LLM: Calls get_module(id="42").

    • Server: Returns code for module 42.

  5. LLM: "Where is the 'login' function defined?"

  6. LLM: Calls search_modules(query="function login").

    • Server: "Found in module 88."

  7. LLM: "I just want to see the login function logic."

  8. LLM: Calls get_symbol_source(symbolName="login", moduleId="88").

    • Server: Returns only the source for the 'login' function.

Development

  • Build: npm run build

  • Test: npm test

Limits

  • File Size: The server accepts input files (bundles) up to 50MB.

  • Memory: Unbundled modules are cached in RAM. Very large bundles (hundreds of MBs unpacked) may exhaust the server's available memory depending on your environment.

Available Tools

10 tools
analyze_structureC

Returns structural summary (AST) of code.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNo
filePathNo
limitNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool returns an AST summary but doesn't explain what that entails (e.g., format, depth, or limitations like the 'limit' parameter's effect). It also omits critical details such as whether this is a read-only operation, performance implications, or error handling, which are essential for safe and effective use.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and front-loaded with a single sentence: 'Returns structural summary (AST) of code.' It wastes no words and immediately communicates the core function. Every part of the sentence earns its place by specifying the action, output, and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of analyzing code structure with 3 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain the return format (e.g., JSON AST), how parameters affect the output, or behavioral traits like idempotency. For a tool that likely produces detailed data, more context is needed to guide the agent effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, meaning parameters are undocumented in the schema. The description adds no information about the three parameters ('code', 'filePath', 'limit'), such as their purposes, interactions, or constraints (e.g., 'limit' defaults to 50). This leaves the agent guessing about how to use these inputs effectively, failing to compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Returns structural summary (AST) of code.' It specifies the verb ('Returns'), resource ('structural summary'), and clarifies the output type ('AST'). However, it doesn't distinguish this tool from siblings like 'get_call_graph' or 'list_functions' which might also provide structural insights, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_call_graph' and 'list_functions' that might overlap in analyzing code structure, there's no indication of when 'analyze_structure' is preferred or what specific aspects it covers (e.g., AST vs. call graphs). This leaves the agent without context for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deobfuscateC

Unpacks/deobfuscates minified code & caches result.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNo
filePathNo
unbundleNo
returnCodeNo
mangleNo
jsxNo
skipVendorNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only mentions caching as a behavioral trait. It doesn't disclose other important aspects like whether this is a read-only or destructive operation, performance implications, error handling, or what 'caches result' entails (e.g., cache duration, invalidation). The description is minimal and leaves key behaviors unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with just one sentence containing two key actions and a caching note. It's front-loaded with the main purpose and wastes no words. Every part earns its place by conveying essential information efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (7 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain what the tool returns, how parameters affect behavior, or provide context for when and why to use it. For a tool with multiple boolean flags and no structured documentation, more guidance is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate but provides no parameter information. It doesn't explain what 'code' or 'filePath' should contain, what 'unbundle', 'returnCode', 'mangle', 'jsx', or 'skipVendor' do, or their interactions. With 7 parameters and no schema descriptions, this is a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('unpacks/deobfuscates') and resource ('minified code'), plus mentions caching. It distinguishes from siblings like 'format_code' or 'analyze_structure' by focusing on deobfuscation rather than formatting or analysis. However, it doesn't explicitly differentiate from all siblings (e.g., 'get_symbol_source' might overlap).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description mentions caching but doesn't specify when to use it over other tools like 'get_module' or 'get_symbol_source' for similar tasks. There's no mention of prerequisites, constraints, or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

format_codeC

Formats code with Prettier.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNo
filePathNo
parserNobabel

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Formats code') but doesn't explain what this entails—e.g., whether it modifies the input code in place, returns formatted output, requires specific file types, or has side effects like saving to disk. This leaves critical behavioral traits unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—a single sentence with no wasted words. It's front-loaded with the core action, making it easy to scan and understand quickly. Every word earns its place by directly stating the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a code formatting tool with 3 parameters, no annotations, and no output schema, the description is incomplete. It doesn't cover what the tool returns, how errors are handled, or the scope of Prettier's capabilities. This leaves significant gaps for an agent to use the tool effectively in varied contexts.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage for 3 parameters, the description adds no meaning beyond the schema. It doesn't explain what 'code', 'filePath', or 'parser' do, their relationships, or typical usage patterns. For example, it doesn't clarify if 'filePath' is optional for inline code or how 'parser' affects formatting. This fails to compensate for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Formats') and resource ('code') with the specific tool used ('Prettier'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'deobfuscate' or 'analyze_structure', which might also process code in different ways, preventing a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention scenarios like cleaning up messy code, preparing for commits, or why one might choose Prettier over other formatting methods. Without such context, the agent lacks direction for appropriate tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_call_graphC

Generates a call graph for a specific function.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolNameYes
moduleIdYes
scanAllModulesNo

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'generates a call graph', implying a read-only analysis operation, but fails to detail aspects like performance impact, error handling, or output format. This leaves significant gaps in understanding how the tool behaves beyond its basic purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy to parse, though it could benefit from more detail given the lack of annotations and schema coverage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of generating a call graph, no annotations, no output schema, and low schema coverage, the description is incomplete. It does not address key aspects like what the output contains, how to interpret results, or any limitations, making it inadequate for effective tool use by an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so parameters 'symbolName', 'moduleId', and 'scanAllModules' are undocumented. The description does not add any meaning beyond the schema, such as explaining what a 'symbolName' represents or the effect of 'scanAllModules', failing to compensate for the low coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool 'generates a call graph for a specific function', which provides a clear verb ('generates') and resource ('call graph') with a scope ('for a specific function'). However, it does not differentiate from sibling tools like 'analyze_structure' or 'list_functions', which might have overlapping purposes in code analysis, leaving the distinction vague.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives. It lacks context on prerequisites, such as needing a function symbol and module, or exclusions, like when other tools might be more appropriate for broader analysis or listing functions, leaving the agent without usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_helpC

Get detailed usage info and examples for a specific tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
tool_nameYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions retrieving 'detailed usage info and examples,' which implies a read-only, informational operation, but fails to specify aspects like response format, error handling, or any constraints (e.g., rate limits or authentication needs). This leaves significant gaps in understanding how the tool behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without any wasted words. It is appropriately sized for the tool's complexity, making it easy to parse and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (1 parameter with an enum), no annotations, and no output schema, the description is incomplete. It lacks details on behavioral traits, output format, and usage context, which are essential for an agent to effectively invoke and interpret results from this informational tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds minimal meaning beyond the input schema, which has 0% description coverage but includes an enum of valid tool names. It clarifies that the parameter is for 'a specific tool,' aligning with the enum, but doesn't explain the semantics of the tool_name parameter further (e.g., format or selection criteria). Given the low schema coverage, this partial compensation results in an average score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('detailed usage info and examples for a specific tool'), making it immediately understandable. However, it doesn't explicitly distinguish itself from potential alternatives or clarify its unique role among the sibling tools, which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as whether it's for learning tool capabilities or troubleshooting. It lacks context on prerequisites, timing, or exclusions, leaving the agent with minimal usage direction beyond the basic purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_moduleC

Gets code for specific module ID from cache.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool retrieves code from a cache, which implies read-only behavior, but doesn't address potential side effects (e.g., cache updates), error conditions, or response format. This leaves significant gaps in understanding how the tool behaves beyond its basic purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no wasted words. It front-loads the core action and resource efficiently, making it easy to parse while conveying essential information without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 parameter, no output schema, no annotations), the description is incomplete. It lacks details on error handling, cache behavior (e.g., freshness, eviction), and what the returned code includes (e.g., metadata, formatting). For a tool that retrieves code, more context about the output would be helpful despite the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must compensate. It mentions 'specific module ID' which adds some meaning to the 'id' parameter, but doesn't explain what constitutes a valid ID (e.g., format, source) or how it relates to the cache. This partial compensation is insufficient given the schema's lack of documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Gets') and the resource ('code for specific module ID from cache'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_modules' or 'get_symbol_source', which would require more specific language about what makes this retrieval unique.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'list_modules' or 'search_modules'. It mentions 'specific module ID' but doesn't clarify prerequisites (e.g., needing to know the ID first) or when other tools might be more appropriate, leaving the agent with minimal usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_symbol_sourceC

Extracts specific function/class source code.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolNameYes
codeNo
filePathNo
moduleIdNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'extracts' implies a read operation, it doesn't specify whether this requires file access permissions, how it handles missing symbols, what format the extracted code returns in, or any performance considerations. This leaves significant gaps for a tool with 4 parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at just 4 words, with no wasted language. It's front-loaded with the core action and resource. Every word earns its place, though this conciseness comes at the cost of completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 4 parameters, 0% schema coverage, no annotations, and no output schema, the description is inadequate. It doesn't explain what the tool returns, how parameters work together, or provide enough context for an agent to use it effectively beyond the basic purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage for all 4 parameters, the description provides no information about what 'symbolName', 'code', 'filePath', or 'moduleId' mean or how they interact. The description mentions 'specific function/class' which hints at 'symbolName', but doesn't explain the other parameters or their relationships.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'extracts' and the resource 'specific function/class source code', which is specific and actionable. However, it doesn't distinguish this tool from potential siblings like 'get_module' or 'list_functions' that might also retrieve code-related information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_module', 'list_functions', and 'search_modules' available, there's no indication of what makes this tool unique or when it's the appropriate choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_functionsC

Scans cached modules to list defined functions and classes.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleIdNo
limitNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'scans cached modules' which implies a read-only operation, but doesn't specify whether this requires specific permissions, how caching works, what happens if modules aren't cached, or the format of the returned list. This leaves significant gaps for a tool with two parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with two undocumented parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what the parameters mean, what the return format looks like, or important behavioral aspects like error conditions or performance characteristics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so parameters 'moduleId' and 'limit' are completely undocumented in the schema. The description doesn't mention either parameter or explain their purpose, failing to compensate for the schema's lack of documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('scans') and resource ('cached modules'), and identifies what it returns ('defined functions and classes'). However, it doesn't explicitly differentiate from sibling tools like 'list_modules' or 'get_module', which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'list_modules' (which likely lists modules rather than their contents) or 'get_module' (which might retrieve module details). There's no mention of prerequisites, limitations, or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_modulesC

Lists modules from cached bundle.

ParametersJSON Schema
NameRequiredDescriptionDefault
excludeVendorNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'cached bundle' which hints at performance characteristics but doesn't explain what caching entails, whether results are real-time, or how fresh the data is. It doesn't describe output format, pagination, or error conditions. For a list operation with zero annotation coverage, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose and includes a qualifying detail ('from cached bundle') that adds context without verbosity. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and 0% schema description coverage for the parameter, the description is incomplete. It doesn't explain what 'modules' are in this context, what the cached bundle contains, how results are structured, or how the parameter affects output. For a tool with one parameter and no structured documentation, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the undocumented parameter 'excludeVendor'. The description provides no information about this parameter—what 'vendor' means, why one would exclude it, or how it affects results. With 1 parameter completely undocumented, the description adds no value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Lists') and resource ('modules'), and specifies the source ('from cached bundle'). It distinguishes from siblings like 'get_module' (singular) and 'search_modules' (searching). However, it doesn't explicitly differentiate from 'list_functions' or 'analyze_structure' in terms of scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'search_modules' or 'get_module'. The description mentions 'cached bundle' but doesn't explain what that means or when caching applies. There are no explicit when/when-not instructions or named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_modulesC

Searches text/regex in cached modules.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
isRegexNo
limitNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions 'cached modules' which adds some context about data source, but fails to disclose critical behavioral traits: whether this is read-only, what happens if no matches are found, if results are paginated, or any performance/rate limit considerations for a search operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple search tool and front-loads the core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with 3 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what 'cached modules' are, what the search returns (e.g., matches, context, module names), or how results are structured. The agent lacks sufficient context to use this tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the schema provides no parameter documentation. The description mentions 'text/regex' which hints at the 'query' parameter and 'isRegex' boolean, but doesn't explain what 'cached modules' means, what format results return, or the purpose of the 'limit' parameter. It adds minimal value beyond the bare parameter names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('searches') and resource ('text/regex in cached modules'), making the purpose understandable. However, it doesn't differentiate this tool from potential sibling search tools (none are listed, but the agent might need to know when to use this vs. other search-related tools).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_module', 'list_modules', and 'list_functions', there's no indication of when searching text/regex is preferred over those listing tools, nor any prerequisites or exclusions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 10 tool updates
    • First observedanalyze_structure
    • First observeddeobfuscate
    • First observedformat_code
    • First observedget_call_graph
    • First observedget_help
    • First observedget_module
    • First observedget_symbol_source
    • First observedlist_functions
    • First observedlist_modules
    • First observedsearch_modules

TDQS

B3.2/5.0
Disambiguation4/5

Most tools have distinct purposes, but some potential overlap exists between 'list_functions' and 'search_modules' (both involve scanning cached modules) and between 'get_symbol_source' and 'get_module' (both retrieve code from cache). Descriptions help clarify differences, but an agent might occasionally misselect between these pairs.

Naming Consistency5/5

All tools follow a consistent verb_noun naming pattern (e.g., analyze_structure, deobfuscate, format_code, get_call_graph). There are no deviations in style or convention, making the set highly predictable and readable.

Tool Count5/5

With 10 tools, the server is well-scoped for deobfuscation and code analysis tasks. Each tool serves a clear purpose, such as analyzing structure, deobfuscating, formatting, and retrieving cached data, without feeling bloated or sparse.

Completeness4/5

The toolset covers core deobfuscation workflows, including analysis, deobfuscation, formatting, and cache retrieval. A minor gap exists in lifecycle management, such as tools to clear or manage the cache, but agents can work around this with the provided tools.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An intelligent server that provides semantic code search, domain-driven analysis, and advanced code understanding for large codebases using LLMs and vector embeddings.
    11
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    A codemode MCP server for fetching and querying dependency source code from npm, PyPI, crates.io, and GitHub. It allows agents to execute server-side JavaScript for context-efficient searching and browsing of large codebases without overwhelming the LLM's context window.
    1
    53
    39
    MIT
  • A
    license
    C
    quality
    B
    maintenance
    An MCP server for JavaScript reverse engineering that enables AI to perform browser debugging, script analysis, and automated hook injection. It streamlines complex workflows like deobfuscation, network tracing, and risk assessment through direct browser integration.
    35
    27
    995
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    A JavaScript reverse engineering MCP server that enables AI coding assistants to debug and analyze JavaScript code in web pages.
    1,291
    7
    Apache 2.0

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/MadeByTokens/deobfuscate-mcp-server'

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