MCP server for LM Studio - manage models, load/unload, and configure settings
Server has 5 tools with complete input schemas and descriptions. Naming follows verb_noun convention (list_, get_, load_, unload_, configure_). However, descriptions are generic and lack LLM-optimization guidance. Parameter descriptions are minimal (e.g., 'The ID of the model to load' lacks format/constraint details). No output schemas documented. Error handling is basic (generic try-catch). Missing tool annotations (readOnlyHint, destructiveHint). No pagination support despite potential for large model lists. Baseline: avg tool description ~194 chars; these average ~120 chars. Avg params per tool: 1.4 (below baseline 4), suggesting under-parameterization.
Configure model settings such as TTL and draft model for speculative decoding
Get detailed information about a specific model including architecture, quantization, and context length
List all available models in LM Studio with their current state (loaded/not-loaded)
Load a model into memory with configurable Time-To-Live (TTL). The model will auto-unload after the TTL expires.
Unload a model from memory immediately by setting its TTL to 0
No output schemas documented. LLMs cannot infer what fields to expect from tool responses (e.g., does list_models return an array of objects? What fields does each model object contain?). This forces LLMs to guess and wastes tokens parsing unstructured JSON.
Parameter descriptions lack actionable constraints. 'The ID of the model to load' does not specify format (alphanumeric? UUID? path?), length limits, or examples.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). list_models and get_model_details are read-only; load_model, unload_model, configure_model are destructive. LLMs cannot distinguish safe from risky operations without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
list_models lacks pagination support. If LM Studio has hundreds of models, returning all at once blows context window. No limit, offset, or cursor parameters.
Error handling is generic. Catch blocks return 'LM Studio API request failed: <message>' without recovery guidance. No categorization of retryable vs user-fixable vs fatal errors.