MCP server that integrates with Hopper Disassembler to provide reverse engineering and binary analysis capabilities through the Model Context Protocol
HopperMCP is a STDIO-only server exposing 11 tools for reverse-engineering code analysis via the Hopper disassembler. The server definition is extremely minimal. Tool names are present but follow non-standard naming conventions (Request suffix, CamelCase instead of verb_noun), descriptions are present but generic and brief (10-50 chars), and no input/output schemas are visible in the provided source. The main source file references are SDK headers and sample tool implementations from Hopper itself, not actual MCP tool registration code. No evidence of JSON Schema, parameter types, or structured output definitions. No error handling, validation, or recovery guidance is visible. This server appears to be in early prototype or proof-of-concept stage.
Add a comment at a specific address
Add an inline comment at a specific address
Get assembly code for a function by address
Get assembly code for a function by name
Get assembly code from a specific document at the current address
Get assembly code from the current document at the current address
Get pseudocode from a specific document at the current address
Get pseudocode from the current document at the current address
No input schemas visible or documented. All tools scored 0 for schema quality. Cannot determine parameter types, required fields, enums, or validation rules. Required by MCP spec and critical for LLM reasoning.
Tool naming violates verb_noun convention. Names use PascalCase 'Request' suffix (e.g., 'CurrentAssemblyRequest') instead of snake_case action verbs (e.g., 'get_current_assembly', 'list_documents'). LLMs cannot parse intent from these names and will confuse similar tools like 'CurrentAssemblyByDocumentRequest' vs 'AssemblyByNameRequest'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 32 | 2026-07-28+ | v2 |
List all open documents in Hopper
Get pseudocode for a function by address
Get pseudocode for a function by name
Descriptions are extremely brief (10-50 characters) and lack context for LLM selection. Example: 'Get assembly code from the current document at the current address' (62 chars) does not explain when to use 'CurrentAssemblyRequest' vs 'AssemblyByNameRequest' vs 'AssemblyByAddressRequest'. No dependency hints, no discovery guidance, no output schema hints.
No output schemas documented. Cannot determine what fields tools return, whether results are paginated, or what IDs/references are available for chaining. LLMs cannot plan multi-step operations without knowing response structure.
No error handling or recovery guidance visible. Cannot determine if errors are retryable, what validation rules exist, or how to resolve failures. LLMs have no path forward on tool failure.
No tool composition strategy visible. Multiple tools query assembly/pseudocode differently (current, by document, by name, by address) but descriptions do not explain which to use or how they chain. High cognitive load on LLM.
Tool definitions inferred from tool list; actual MCP registration code not visible in source. Cannot verify that tools are properly registered with JSON Schema, parameter descriptions, or output documentation. Per scoring rules, tools with no visible registration are capped at 50 overall.