MCP server for controlling Prusa 3D printers via Prusa Connect
Prusa MCP has 6 tools with consistent naming (verb_noun pattern: get_*, connect_*) and complete input schemas with type definitions. However, descriptions are minimal (10-50 chars), parameter descriptions lack detail about constraints/formats, and output schemas are entirely undocumented. No error handling guidance, no pagination support despite list tools, and no tool annotations. Naming is clear but descriptions fall well below the 50-200 char LLM-optimized baseline.
Report the Prusa Connect authentication status. The legacy ``email``/``password`` parameters are accepted for backwards compatibility but ignored: authentication now uses OAuth2 via the ``prusa-mcp login`` CLI subcommand, which must be run once from a shell that can open a browser (typically the host machine). Tokens are persisted to disk and refreshed automatically.
Get list of files for a given printer UUID.
Get recent jobs for a specific printer.
Get detailed status of a specific printer.
Get storage devices for a given printer UUID.
Get list of Prusa printers.
Descriptions are 10-50 characters, well below the 50-200 char LLM-optimized baseline. Tools lack context for selection (e.g., 'Get list of Prusa printers' vs 'Retrieve all Prusa printers registered to your account, including status and capabilities').
Parameter descriptions are missing or trivial. 'limit' is described as 'Maximum number of X to return (default: Y)' but lacks constraints (min/max bounds). 'printer_uuid' lacks guidance on format or how to obtain it.
Output schemas are completely undocumented. LLMs cannot plan downstream calls or extract required fields (e.g., does get_printers return printer_uuid for use in get_printer_status?).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | <=2025-11-25 | v2 |
List tools (get_printers, get_printer_jobs, get_printer_files) lack pagination support. No next_cursor, total_count, or offset parameters. Large result sets will blow context windows.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are read-only but this is not declared, limiting client-side optimization and safety checks.