MCP server for remote Rails console execution via SSH
Three tools with explicit schemas and descriptions, but significant gaps in parameter documentation and error handling. Tool names follow verb_noun pattern (execute_*, dry_run_*) which is good. However, descriptions lack actionable context for LLM selection, parameters are minimally documented, and output schemas are not formally specified. No error recovery guidance. The dry_run_mutate tool has a complex multi-parameter interface that lacks dependency documentation.
Plans and validates potential Rails mutations without executing them. Every command is its own isolated session - you cannot use variables across commands.
Executes a previously validated Rails mutation using its snippet ID
Executes read-only Rails console operations safely. Every command is its own isolated session - you cannot use variables across commands.
Output schemas not documented. Tools return ToolResult but no schema specifies what fields/structure the LLM should expect. This forces LLMs to guess at response structure and breaks downstream tool chaining.
Parameter descriptions lack actionable constraints. 'code' param in execute_read_only says 'must be read-only' but provides no validation rules, error examples, or recovery guidance. LLMs cannot self-correct invalid input.
No error handling or recovery guidance. Tools can fail (SSH timeout, invalid Ruby syntax, mutation validation failure) but responses provide no actionable next steps. LLM cannot distinguish retryable vs fatal errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
dry_run_mutate has undocumented parameter dependencies. 'mutate_code' and 'dry_run_code' are related but descriptions do not explain the relationship or validation rules. LLM may pass inconsistent pairs.
Tool descriptions lack WHEN/WHY context. 'Executes read-only Rails console operations' does not explain when to use this vs dry_run_mutate, what prerequisites exist, or what the LLM should expect to learn from the result.