An MCP server for training machine learning classifiers using data from CSV files
Single tool with adequate schema and description, but significant gaps in error handling, parameter validation, and composition patterns. The tool accepts file paths without sanitization (path traversal risk), lacks actionable error messages, and returns raw ML coefficients without context. Description is 194 chars (within baseline), but parameter descriptions are minimal. No pagination, no idempotency guarantees, no permission gating. Typical of a basic proof-of-concept rather than production-grade tooling.
Trains a logistic regression classifier using data loaded from a CSV file. Parameters: - data_path: Path to the CSV file. - target_column: Name of the target column in the CSV. - test_size: Proportion of the dataset to include in the test split. - random_state: Seed used by the random number generator. Returns: A dictionary containing: - accuracy: Accuracy of the model on the test set. - coefficients: The model coefficients. - intercept: The model intercept.
No input sanitization for file paths, vulnerable to path traversal attacks. LLM could be tricked into reading arbitrary files via prompt injection.
Error handling returns generic exception strings ('error': str(e)) without actionable recovery guidance. LLM cannot determine if error is retryable, user-fixable, or fatal.
Output includes raw ML coefficients (nested arrays) without documentation of structure, meaning, or how to interpret them. LLM cannot reason about the response.
Parameter descriptions are minimal (e.g., 'Seed used by the random number generator' lacks range, constraints, or guidance on when to override default). Does not meet 72-char baseline for param annotations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
No idempotency guarantees or dry-run support. Repeated calls with same input will retrain the model, wasting compute. Agents cannot safely retry on ambiguous failures.