Ruby MCP server for searching and displaying Rails route tables with pagination and filtering. Returns file:line references for RubyMine IDE integration.
Two tools with clear, action-verb names (search_routes, show_route) and reasonable descriptions (97 - 115 chars, within baseline 34 - 392). Input schemas present with type definitions and constraints (page_size 1 - 20, page ≥1). However, parameter descriptions are sparse or missing: 'verb' and 'path' in show_route lack descriptions entirely; search_routes params lack guidance on what 'controller' fragment matching does. Output schema is undocumented, LLMs cannot infer what fields to expect from search results or show_route responses. Error handling is basic (tool_error returns JSON with 'ok: false' and 'error' message) but lacks recovery guidance or categorization. No tool annotations (readOnlyHint, idempotentHint). Composition is sound, two focused, single-responsibility tools with clear verb-noun naming.
Search the Rails route table. Paginated. Filter by verb, path substring, or controller. Returns file:line so RubyMine can open the action without a second lookup.
One route by verb + path. Includes next.file and next.line for RubyMine.
Output schema undocumented. LLMs cannot infer what fields search_routes and show_route return. Baseline: 100% of A+ tools document return types.
Parameter descriptions missing or incomplete. 'verb' and 'path' in show_route have no descriptions. 'controller' in search_routes lacks guidance on fragment-matching behavior. Baseline: 100% of A+ tool params have descriptions.
No tool annotations. Missing readOnlyHint (both tools are read-only) and idempotentHint (both are safe to retry). Agents cannot infer safety properties.
Error messages lack recovery guidance. 'route not found' and 'missing argument' are bare, no suggestion to try search_routes or what valid inputs look like.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Pagination result structure unclear. search_routes returns 'total' field (visible in test), but no documentation of 'items', 'page', 'page_size', or 'next_cursor' fields. LLMs cannot plan multi-page iteration.