MCP Server for Aibolit Java code quality analyzer
Single tool with a clear purpose but significant definition gaps. Tool name is descriptive (starts with verb 'find'), description is moderately detailed but lacks critical context on when to use the tool versus alternatives. Input schema is minimal (single string parameter with no validation constraints). Output schema is not documented. No error handling guidance provided. The tool wraps a Python subprocess call with basic file existence checking but does not communicate error recovery paths to the LLM. Parameter 'path' lacks format constraints (file extension, absolute vs relative path expectations). No pagination, rate limiting, or per-item error reporting. The server uses STDIO transport, which is a hard blocker for remote accessibility.
Analyze one Java file. Find the most serious design flaw. It must need immediate refactoring. Ignore cosmetic or minor issues. Fix the one problem that will best improve code quality. Code quality means maintainability, readability, loose coupling, and high cohesion. Point out the problem and where it is in the file.
Parameter lacks type constraints and format documentation. 'path' parameter is a bare string with no validation for file extension, absolute vs relative paths, or character restrictions. LLM may pass invalid paths (e.g. directories, non-Java files, or relative paths without cwd context).
Output schema not documented. Tool returns a text response but LLM has no visibility into response structure, fields, or expected format. This violates the documented-output-schema requirement and forces the LLM to infer response structure.
No error handling guidance. If Aibolit is not installed, path is invalid, or parsing fails, the tool returns a basic error string ('File does not exist') with no recovery path. LLM receives no actionable instruction on what to do next (e.g., 'Install aibolit via pip', 'Verify path is absolute', 'Retry with a different file').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 30 | - | v1 |
STDIO-only transport. Server is not remotely accessible and cannot be used by hosted MCP clients (e.g., Claude.ai, hosted agent platforms). Hard cap of 50 applies per protocol readiness rules.
Tool description is 206 characters, within acceptable range (10-1024), but lacks critical WHEN and WHY context. Missing: (1) When to use this vs running Aibolit directly, (2) Prerequisites (Aibolit must be installed), (3) Expected input format (absolute path, .java file only), (4) Example output structure. Description reads as a command prompt rather than an LLM-optimized invocation guide.
No idempotency guarantee documented. Tool calls an external analyzer (Aibolit) which may produce different results on subsequent calls (new rules, version changes). LLM has no guidance on whether it is safe to retry on ambiguous failures.