AutoTS provides an MCP server interface for a Python time series forecasting package that enables rapid deployment of high-accuracy predictions at scale using dozens of forecasting models (naive, statistical, machine learning, and deep learning) and over 30 time series-specific transforms compatible with scikit-learn conventions. The server exposes tools for multivariate and probabilistic forecasting, automated model selection via genetic algorithms, horizontal and mosaic ensemble methods, cross-validation, and regressor generation—all operating directly on Pandas DataFrames without proprietary object conversion. AutoTS solves the problem of automating time series model selection and optimization for large datasets, having demonstrated competition-winning performance in the M6 forecasting competition.
claude mcp add autots -- uvx autots-mcpRun in your terminal. Replace YOUR_* placeholders with real values; add --scope user to install for every project.
Review the command, arguments, and environment values before installing — MCP servers run with your local permissions.
Verified live against the running server on Jun 11, 2026.
list_cacheList all cached objects across all cache types (predictions, autots_models, event_risk, feature_detectors, data). Call this to discover existing IDs before calling any get_*, plot_*, or apply_* tools.List all cached objects across all cache types (predictions, autots_models, event_risk, feature_detectors, data). Call this to discover existing IDs before calling any get_*, plot_*, or apply_* tools.
No parameters — call it with no arguments.
clear_cacheClear cache: specific object by ID+type, an entire cache type, or all caches. Destructive — freed objects cannot be recovered.2 paramsClear cache: specific object by ID+type, an entire cache type, or all caches. Destructive — freed objects cannot be recovered.
object_idstringcache_typestringprediction · autots · event_risk · feature_detector · dataload_sample_dataLoad a built-in sample time series dataset. Returns data_id for use as the data_id parameter in forecast_*, detect_features, forecast_event_risk, clean_data, and get_data.2 paramsLoad a built-in sample time series dataset. Returns data_id for use as the data_id parameter in forecast_*, detect_features, forecast_event_risk, clean_data, and get_data.
longbooleandatasetstringdaily · hourly · weekly · monthly · yearly · lineardefault: dailyload_live_dataLoad live data from external sources (FRED economic data, stock tickers). Returns data_id. Requires network access.4 paramsLoad live data from external sources (FRED economic data, stock tickers). Returns data_id. Requires network access.
longbooleantickersarrayfred_keystringfred_seriesarraygenerate_synthetic_dataGenerate synthetic time series data with labeled components for testing. Returns data_id.1 paramsGenerate synthetic time series data with labeled components for testing. Returns data_id.
n_seriesintegerload_data_from_fileLoad a CSV from a local file path or URL. Returns data_id. CSV must have a datetime column as the first column (index).1 paramsLoad a CSV from a local file path or URL. Returns data_id. CSV must have a datetime column as the first column (index).
filepath*stringget_dataRetrieve cached data as JSON (wide or long) or save as CSV. Requires data_id from load_sample_data, load_live_data, load_data_from_file, generate_synthetic_data, convert_long_to_wide, or clean_data.2 paramsRetrieve cached data as JSON (wide or long) or save as CSV. Requires data_id from load_sample_data, load_live_data, load_data_from_file, generate_synthetic_data, convert_long_to_wide, or clean_data.
data_id*stringoutput_formatstringjson_wide · json_long · csv_wide · csv_longdefault: json_wideconvert_long_to_wideConvert long-format data (datetime, series_id, value columns) to wide format. Provide either data (inline dict) or data_id. Returns new data_id.2 paramsConvert long-format data (datetime, series_id, value columns) to wide format. Provide either data (inline dict) or data_id. Returns new data_id.
dataobjectdata_idstringclean_dataClean time series data: fill missing values and handle outliers. Provide either data (inline dict) or data_id. Returns new data_id with cleaned data.3 paramsClean time series data: fill missing values and handle outliers. Provide either data (inline dict) or data_id. Returns new data_id with cleaned data.
dataobjectfillnastringffill · mean · median · rolling_mean · lineardefault: ffilldata_idstringforecast_fastFAST: Pre-configured mosaic ensemble forecast using fit_data (no model search). Use for quick results. Provide data or data_id. Returns prediction_id for use in get_forecast, plot_forecast, apply_constraints, apply_adjustments, get_model_params.4 paramsFAST: Pre-configured mosaic ensemble forecast using fit_data (no model search). Use for quick results. Provide data or data_id. Returns prediction_id for use in get_forecast, plot_forecast, apply_constraints, apply_adjustments, get_model_params.
dataobjectdata_idstringforecast_lengthintegerprofile_templateobjectforecast_explainableMODERATE: AutoTS model search restricted to EXPLAINABLE models (Cassandra, TVVAR, BasicLinearModel). Use when interpretability matters. Provide data or data_id. Returns prediction_id and autots_id. Use get_forecast_components on prediction_id for component decomposition.3 paramsMODERATE: AutoTS model search restricted to EXPLAINABLE models (Cassandra, TVVAR, BasicLinearModel). Use when interpretability matters. Provide data or data_id. Returns prediction_id and autots_id. Use get_forecast_components on prediction_id for component decomposition.
dataobjectdata_idstringforecast_lengthintegerforecast_customCUSTOM: AutoTS with user-specified parameters or template. Use when forecast_fast results are insufficient. Read the autots://docs/forecast_custom_params resource for available parameters. Defaults to 'scalable' model_list. Provide data or data_id. Returns prediction_id and au...7 paramsCUSTOM: AutoTS with user-specified parameters or template. Use when forecast_fast results are insufficient. Read the autots://docs/forecast_custom_params resource for available parameters. Defaults to 'scalable' model_list. Provide data or data_id. Returns prediction_id and au...
dataobjectdata_idstringautots_paramsobjectmodel_templateobjectforecast_lengthintegerfuture_regressor_trainobjectfuture_regressor_forecastobjectget_forecastRetrieve forecast values from a cached prediction as JSON or CSV. Requires prediction_id from forecast_fast, forecast_explainable, forecast_custom, or forecast_from_features. Use output='all' to get point, upper, and lower forecasts combined with a forecast_type column.3 paramsRetrieve forecast values from a cached prediction as JSON or CSV. Requires prediction_id from forecast_fast, forecast_explainable, forecast_custom, or forecast_from_features. Use output='all' to get point, upper, and lower forecasts combined with a forecast_type column.
formatstringjson_wide · json_long · csv_wide · csv_longdefault: json_wideoutputstringforecast · upper_forecast · lower_forecast · alldefault: forecastprediction_id*stringplot_forecastPlot forecast with optional history and prediction intervals. Requires prediction_id from forecast_fast, forecast_explainable, forecast_custom, or forecast_from_features. Returns base64-encoded PNG image. Defaults to first series only.4 paramsPlot forecast with optional history and prediction intervals. Requires prediction_id from forecast_fast, forecast_explainable, forecast_custom, or forecast_from_features. Returns base64-encoded PNG image. Defaults to first series only.
seriesarrayplot_allbooleanprediction_id*stringinclude_historybooleanapply_constraintsApply constraints to a forecast (dampen growth, enforce upper/lower bounds, or quantile clipping). Requires prediction_id from a forecast tool. Returns a new prediction_id with constrained values.4 paramsApply constraints to a forecast (dampen growth, enforce upper/lower bounds, or quantile clipping). Requires prediction_id from a forecast tool. Returns a new prediction_id with constrained values.
prediction_id*stringconstraint_valuenumberconstraint_method*stringdampen · upper · lower · quantileconstraint_directionstringupper · lowerapply_adjustmentsApply post-hoc adjustments to a forecast. Requires prediction_id from a forecast tool. Three types: 1) 'basic'/'linear'/'ramp' — linear ramp between start/end dates with start/end values (additive or multiplicative); 2) 'align_last_value'/'alignlastvalue' — align forecast to r...5 paramsApply post-hoc adjustments to a forecast. Requires prediction_id from a forecast tool. Three types: 1) 'basic'/'linear'/'ramp' — linear ramp between start/end dates with start/end values (additive or multiplicative); 2) 'align_last_value'/'alignlastvalue' — align forecast to r...
data_idstringseries_idsarrayprediction_id*stringadjustment_method*stringbasic · linear · ramp · align_last_value · alignlastvalue · smoothingadjustment_paramsobjectget_model_paramsGet model name, parameters, and transformation parameters from a cached prediction. Requires prediction_id from any forecast tool.1 paramsGet model name, parameters, and transformation parameters from a cached prediction. Requires prediction_id from any forecast tool.
prediction_id*stringget_forecast_componentsGet decomposed forecast components (trend, seasonality, etc.) if available. Only works for Cassandra and TVVAR models — use forecast_explainable to guarantee these model types. Requires prediction_id.1 paramsGet decomposed forecast components (trend, seasonality, etc.) if available. Only works for Cassandra and TVVAR models — use forecast_explainable to guarantee these model types. Requires prediction_id.
prediction_id*stringget_validation_resultsGet cross-validation results and top model rankings from an AutoTS model search. Requires autots_id from forecast_explainable or forecast_custom.1 paramsGet cross-validation results and top model rankings from an AutoTS model search. Requires autots_id from forecast_explainable or forecast_custom.
autots_id*stringplot_validationPlot cross-validation forecasts from an AutoTS model search. Requires autots_id from forecast_explainable or forecast_custom. Returns base64-encoded PNG.1 paramsPlot cross-validation forecasts from an AutoTS model search. Requires autots_id from forecast_explainable or forecast_custom. Returns base64-encoded PNG.
autots_id*stringforecast_event_riskForecast the probability of crossing a threshold over future periods (e.g., stockout risk, capacity breach). Threshold in [0,1] is treated as a historical quantile; values outside [0,1] are absolute. Provide data or data_id. Returns event_risk_id for use in get_event_risk_resu...6 paramsForecast the probability of crossing a threshold over future periods (e.g., stockout risk, capacity breach). Threshold in [0,1] is treated as a historical quantile; values outside [0,1] are absolute. Provide data or data_id. Returns event_risk_id for use in get_event_risk_resu...
dataobjecttunebooleandata_idstringdirectionstringupper · lowerdefault: upperthreshold*valueforecast_lengthintegerget_event_risk_resultsGet event risk probability values from a cached EventRiskForecast. Requires event_risk_id from forecast_event_risk. Returns probabilities per period per series.2 paramsGet event risk probability values from a cached EventRiskForecast. Requires event_risk_id from forecast_event_risk. Returns probabilities per period per series.
formatstringjson_wide · json_long · csv_wide · csv_longdefault: json_wideevent_risk_id*stringplot_event_riskPlot event risk probabilities over the forecast horizon. Requires event_risk_id from forecast_event_risk. Returns base64-encoded PNG.1 paramsPlot event risk probabilities over the forecast horizon. Requires event_risk_id from forecast_event_risk. Returns base64-encoded PNG.
event_risk_id*stringdetect_featuresDetect anomalies, changepoints, level shifts, holidays, and seasonality patterns across all series. Provide data or data_id. Returns detector_id for use in get_detected_features, plot_features, and forecast_from_features.2 paramsDetect anomalies, changepoints, level shifts, holidays, and seasonality patterns across all series. Provide data or data_id. Returns detector_id for use in get_detected_features, plot_features, and forecast_from_features.
dataobjectdata_idstringget_detected_featuresQuery detected features (anomalies, changepoints, level shifts, holidays, seasonality) from a cached detector. Requires detector_id from detect_features. Supports filtering by date range, specific date, or series name. Use include_components=true for time-series component valu...7 paramsQuery detected features (anomalies, changepoints, level shifts, holidays, seasonality) from a cached detector. Requires detector_id from detect_features. Supports filtering by date range, specific date, or series name. Use include_components=true for time-series component valu...
date_endstringdate_startstringdetector_id*stringseries_namestringspecific_datestringinclude_metadatabooleaninclude_componentsbooleanplot_featuresPlot detected features overlaid on the time series. Requires detector_id from detect_features. Returns base64-encoded PNG.2 paramsPlot detected features overlaid on the time series. Requires detector_id from detect_features. Returns base64-encoded PNG.
seriesarraydetector_id*stringforecast_from_featuresEXPERIMENTAL: Create a forecast using the decomposed components from a feature detector. Only use after detect_features, not as a standalone forecasting method. Requires detector_id from detect_features. Returns prediction_id for use in get_forecast, plot_forecast.2 paramsEXPERIMENTAL: Create a forecast using the decomposed components from a feature detector. Only use after detect_features, not as a standalone forecasting method. Requires detector_id from detect_features. Returns prediction_id for use in get_forecast, plot_forecast.
detector_id*stringforecast_lengthinteger
AutoTS is a time series package for Python designed for rapidly deploying high-accuracy forecasts at scale. Give it a try in your browser with the official demo app.
In 2023, AutoTS won in the M6 forecasting competition, delivering the highest performance investment decisions across 12 months of stock market forecasting.
There are dozens of forecasting models usable in the sklearn style of .fit() and .predict().
These includes naive, statistical, machine learning, and deep learning models.
Additionally, there are over 30 time series specific transforms usable in the sklearn style of .fit(), .transform() and .inverse_transform().
All of these function directly on Pandas Dataframes, without the need for conversion to proprietary objects.
All models support forecasting multivariate (multiple time series) outputs and also support probabilistic (upper/lower bound) forecasts. Most models can readily scale to tens and even hundreds of thousands of input series. Many models also support passing in user-defined exogenous regressors.
These models are all designed for integration in an AutoML feature search which automatically finds the best models, preprocessing, and ensembling for a given dataset through genetic algorithms.
Horizontal and mosaic style ensembles are the flagship ensembling types, allowing each series to receive the most accurate possible models while still maintaining scalability.
A combination of metrics and cross-validation options, the ability to apply subsets and weighting, regressor generation tools, simulation forecasting mode, event risk forecasting, live datasets, template import and export, plotting, and a collection of data shaping parameters round out the available feature set.
pip install autots
This includes dependencies for basic models, but additonal packages are required for some models and methods.
Be advised there are several other projects that have chosen similar names, so make sure you are on the right AutoTS code, papers, and documentation.
Input data for AutoTS is expected to come in either a long or a wide format:
pandas.DataFrame with a pandas.DatetimeIndex and each column a distinct series.datetime format)= None..fit() as date_col, id_col, and value_col. No parameters are needed for wide data.Lower-level functions are only designed for wide style data.
# also load: _hourly, _monthly, _weekly, _yearly, or _live_daily
from autots import AutoTS, load_daily
# sample datasets can be used in either of the long or wide import shapes
long = False
df = load_daily(long=long)
model = AutoTS(
forecast_length=21,
frequency="infer",
prediction_interval=0.9,
ensemble=None,
model_list="superfast", # "fast", "default", "fast_parallel"
transformer_list="fast", # "superfast",
drop_most_recent=1,
max_generations=4,
num_validations=2,
validation_method="backwards"
)
model = model.fit(
df,
date_col='datetime' if long else None,
value_col='value' if long else None,
id_col='series_id' if long else None,
)
prediction = model.predict()
# plot a sample
prediction.plot(model.df_wide_numeric,
series=model.df_wide_numeric.columns[0],
start_date="2019-01-01")
# Print the details of the best model
print(model)
# point forecasts dataframe
forecasts_df = prediction.forecast
# upper and lower forecasts
forecasts_up, forecasts_low = prediction.upper_forecast, prediction.lower_forecast
# accuracy of all tried model results
model_results = model.results()
# and aggregated from cross validation
validation_results = model.results("validation")
The lower-level API, in particular the large section of time series transformers in the scikit-learn style, can also be utilized independently from the AutoML framework.
Check out extended_tutorial.md for a more detailed guide to features.
Also take a look at the production_example.py
superfast (simple naive models) and fast (more complex but still faster models, optimized for many series)fast_parallel (a combination of fast and parallel) or parallel, given many CPU cores are available
n_jobs usually gets pretty close with ='auto' but adjust as necessary for the environmentfrom autots.models.model_list import model_listssubset parameter when there are many similar series, subset=100 will often generalize well for tens of thousands of similar series.
subset, passing weights for series will weight subset selection towards higher priority series.model_interrupt=True to skip only the current model when you hit Ctrl+C. Tap Ctrl+C a second time within 1.5 seconds to end the entire run, or pass something like model_interrupt={"mode": "skip", "double_press_window": 1.2} to tighten/loosen the window.result_file method of .fit() which will save progress after each generation - helpful to save progress if a long training is being done. Use import_results to recover.transformer_max_depth to a lower number (say, 2) will increase speed. Also utilize transformer_list == 'fast' or 'superfast'.ensemble='horizontal-max' with model_list='no_shared_fast' can scale relatively well given many cpu cores because each model is only run on the series it is needed for.num_validations and models_to_validate will decrease runtime but may lead to poorer model selections.frequency and aggfunc but is probably best done before passing data into AutoTS.runtime_weighting in metric_weighting to a higher value. This will guide the search towards faster models, although it may come at the expense of accuracy.See the README.md in ./autots/mcp. Note install with pip install autots[mcp] for full dependencies, or the equivalent pip install autots-mcp.
{
"mcpServers": {
"autots": {
"command": "autots-mcp"
}
}
}
mcp-name: io.github.winedarksea/AutoTS
flowchart TD
A[Initiate AutoTS Model] --> B[Import Template]
B --> C[Load Data]
C --> D[Split Data Into Initial Train/Test Holdout]
D --> E[Run Initial Template Models]
E --> F[Evaluate Accuracy Metrics on Results]
F --> G[Generate Score from Accuracy Metrics]
G --> H{Max Generations Reached or Timeout?}
H -->|No| I[Evaluate All Previous Templates]
I --> J[Genetic Algorithm Combines Best Results and New Random Parameters into New Template]
J --> K[Run New Template Models and Evaluate]
K --> G
H -->|Yes| L[Select Best Models by Score for Validation Template]
L --> M[Run Validation Template on Additional Holdouts]
M --> N[Evaluate and Score Validation Results]
N --> O{Create Ensembles?}
O -->|Yes| P[Generate Ensembles from Validation Results]
P --> Q[Run Ensembles Through Validation]
Q --> N
O -->|No| R[Export Best Models Template]
R --> S[Select Single Best Model]
S --> T[Generate Future Time Forecast]
T --> U[Visualize Results]
R --> B[Import Best Models Template]
If you wish to cite AutoTS in an academic work, the following paper may be used.
Colin Catlin, Adaptive forecasting in dynamic markets: An evaluation of AutoTS within the M6 competition, International Journal of Forecasting, Volume 41, Issue 4, 2025, Pages 1485-1493, ISSN 0169-2070, https://doi.org/10.1016/j.ijforecast.2025.08.004.
Also known as Project CATS (Catlin's Automated Time Series) hence the logo.
com.mcparmory/google-search
io.github.pipeworx-io/brave-search
marcopesani/mcp-server-serper
brave/brave-search-mcp-server
com.mcparmory/google-search-console
acamolese/google-search-console-mcp