FastMCP server for local LLM fine-tuning via Unsloth - train, jobs, models, datasets, GGUF export, Ollama register with VRAM guard
Single tool 'unsloth_ops' exhibits critical design flaws. The tool name violates verb_noun convention (should be 'run_unsloth_operation' or split into separate tools). Description is adequate (89 chars) but the schema is severely overloaded: 16 parameters crammed into one tool that handles 7 distinct operations (system, train, jobs_list, jobs_status, jobs_cancel, jobs_export, jobs_register_ollama). Parameter descriptions exist but lack constraints, ranges, and format specifications. No output schema documented. No error handling guidance. The tool violates the single-responsibility principle, it should be split into 7 focused tools (e.g., start_training, list_jobs, cancel_job, export_job, register_ollama_model). Many parameters are conditionally required based on the 'operation' value, but this dependency is not documented. No validation rules, no enum constraints for operation types, no guidance on which parameters apply to which operations.
Unified operation handler for Unsloth training, job management, model export, and Ollama registration
Tool name 'unsloth_ops' violates verb_noun convention and does not reflect action. Should start with action verb (e.g., 'run_', 'execute_', 'manage_'). Current name is generic and ambiguous.
Single tool handles 7 distinct operations (system, train, jobs_list, jobs_status, jobs_cancel, jobs_export, jobs_register_ollama). Violates single-responsibility principle. Should be split into 7 separate tools: start_training, list_jobs, get_job_status, cancel_job, export_job, register_ollama_model, get_system_status.
16 parameters with conditional requirements based on 'operation' value. Dependencies undocumented. LLM cannot determine which parameters apply to which operations without trial-and-error. Example: 'model_name' required for 'train' but not 'jobs_list'.
No output schema documented. LLM cannot plan downstream tool calls or extract structured data. What fields does 'jobs_list' return? What does 'train' return on success?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | 2026-07-28+ | v2 |
Parameters lack constraints, ranges, and format specifications. 'max_seq_length' has no min/max bounds. 'quantization_method' accepts free-form string instead of enum (q4_k_m, q8_0, f16, q5_k_m). 'limit' accepts 1-100 but not documented in description.