Splitting "look at the columns", "check for categoricals" and "encode them" into distinct calls means the assistant has to inspect the data before it trains, and you can see each decision. Scope is exactly one model type and one metric — linear regression, RMSE — so treat it as a teaching and quick-exploration tool rather than a modelling stack.
An MCP server that gives an assistant the five steps of a linear-regression workflow as separate tools. You hand it a CSV path; it can then tell you what columns exist, whether any are categorical, encode those to numbers, and train a model against the target column you name, returning the RMSE. Each step is its own call, so the model decides the order and you see what it did.
- A CSV taken in by absolute path and held for the rest of the session — `upload_file`
- The column names of the loaded dataset, so the assistant is not guessing at the schema — `get_columns_info`
- A check for categorical columns before anything numeric is attempted — `check_category_columns`
- Those columns label-encoded into numeric values in place — `label_encode_categorical_columns`
- A linear regression trained against a target column you name, answered with the RMSE — `train_linear_regression_model`
No account and no key; everything runs locally against a file you point at. Clone the repository, install `uv`, run `uv sync`, then register it in `claude_desktop_config.json` with absolute paths to both the `uv` binary and the project directory, running `server.py`. The CSV path passed to the upload tool must also be absolute.
