MCP server for binary analysis and comparison using GNU binutils
Server has 7 tools with complete input schemas and descriptions. Naming follows verb_noun convention (analyze_, list_, get_, compare_, diff_). Descriptions are present (avg ~80 chars) but lack LLM-optimized guidance on WHEN to use each tool and dependencies between them. All parameters have types and descriptions. No output schemas documented, critical gap for agent planning. Error handling exists but lacks recovery guidance. No tool annotations (readOnlyHint present in metadata but not in schema). Composition is sound: tools are single-responsibility and chainable.
Analyze a binary file and return comprehensive information about its structure
Compare two binary files and show high-level differences
Compare sections between two binaries
Get detailed symbol-level differences between two binaries
List all sections in an ELF binary
List all functions in a binary with their sizes
List symbols from a binary file
No output schemas documented. LLMs cannot plan downstream tool calls or extract structured data from results. Critical for agent reasoning.
Tool descriptions lack WHEN-to-use guidance and dependencies. E.g., 'list_symbols' should note 'Call after analyze_binary to inspect symbol details' and 'diff_symbols' should explain when to use vs compare_binaries.
No tool annotations in schema. Risk metadata (READ_ONLY) exists in metadata but not exposed as readOnlyHint in tool definitions. Agents cannot infer safety/idempotency.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Error handling in Binutils.exec() returns raw error messages without recovery guidance. E.g., 'Command not found' should suggest 'Install GNU binutils or set BINDIFF_TOOLCHAIN_PREFIX'.
No pagination support. Tools like list_symbols and list_functions may return unbounded results for large binaries, risking context window exhaustion.