Warm-process MCP server for PHPMD. Keeps PHPMD's classes + parsed rulesets bootstrapped across calls — faster per-file mess detection vs cold CLI invocation. Compatible with any MCP client (Claude Desktop, Cline, Continue, Zed, custom).
Single tool 'phpmd_analyse' has a clear verb-noun name and solid description (89 chars). Input schema is present with type and description. However, output schema is only partially documented in the return type annotation (array with exit_code, output, warm_boot, error, error_class, trace), not formally exposed in tool metadata. Parameter descriptions are minimal. Error handling returns structured objects but lacks actionable recovery guidance for LLMs. Security containment is well-implemented (path traversal checks), but the tool lacks idempotency hints and does not document when to retry vs. fail.
Run PHPMD mess detection on a path. Server-pinned rulesets, JSON output.
Output schema not formally documented in tool metadata. Return type is visible in PHP docstring but not exposed to MCP clients via structured schema declaration.
Parameter 'path' description is minimal (13 chars: 'Absolute path to a file under the server's working dir'). Does not explain format constraints, examples, or what happens if path is invalid.
Error responses (SecurityError, exception details) are returned but lack actionable recovery guidance. LLM cannot infer whether to retry, ask user, or abandon the call.
Tool does not declare idempotency or destructiveness hints. LLMs cannot determine if repeated calls with same input are safe or if the tool modifies state.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | <=2025-11-25 | v2 |
No pagination or result limiting documented. If PHPMD output is very large, response could exhaust context window without guidance on truncation or streaming.