MCP server that decompiles Java class/JAR files using CFR (Class File Reader). Supports both stdio and SSE transport modes with smart JAR scanning for methods and classes.
Single tool 'decompile' with reasonable parameter coverage and basic descriptions, but significant gaps in error handling, output schema documentation, and LLM-optimized guidance. The tool does one job well (decompile Java), but parameter descriptions lack specificity about constraints and expected formats. No documented output schema. Error messages present in implementation but not documented in tool definition. Bilingual descriptions (English + Chinese) are a design choice but add noise. Schema is complete with proper types and required field, which supports the moderate score.
Decompile a Java class/JAR using CFR. Use this to view the source code of compiled Java files. 使用 CFR 反编译 Java class/JAR 文件。用于查看编译后的 Java 文件的源代码。
Output schema not documented. Tool description and code lack specification of what the decompile tool returns (structure, field names, error format).
Parameter descriptions lack actionable constraints. 'file_path' says 'Absolute path' but doesn't explain validation behavior if path doesn't exist. 'options' object accepts arbitrary alphanumeric keys without documenting CFR option formats or common values. LLM cannot infer valid CFR options from description alone.
Error handling not documented in tool definition. Code implements timeouts, missing file detection, and stderr capture, but these error conditions and recovery steps are not mentioned in the tool description. LLMs don't know error possibilities exist.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | D | 59 | <=2025-11-25 | v2 |
| 2026-03-09 | C | 62 | - | v1 |
Bilingual descriptions (English + Chinese in same field) dilute clarity and waste tokens. LLMs optimized for English struggle to parse mixed-language content. Recommend single-language description with separate i18n.
'options' parameter is under-specified. Accepts arbitrary alphanumeric keys with no enumeration or documentation of valid CFR options. Description says 'e.g. {"sugarboxing": False}' but example values in descriptions cause LLMs to reuse them literally rather than adapt.
No pagination or result limiting documented. Tool can return arbitrarily large decompiled code blocks. For very large JAR files, this could exhaust context windows. No limit or chunking strategy mentioned.