Predictalot
Self-hosted MCP server for time-series forecasting and tabular ML via foundation models.
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
docker.io/psyb0t/predictalot:v1.2.2claude mcp add predictalot -- docker run -i --rm docker.io/psyb0t/predictalot:v1.2.2
{
"mcpServers": {
"predictalot": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/psyb0t/predictalot:v1.2.2"
]
}
}
}
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
predictalot
One HTTP service, two model families, zero ceremony.
- Foundation time-series — 5 zero-shot forecasters (chronos-2, timesfm-2.5, moirai-2, toto-1, sundial-base-128m). Hand them a context window, get quantile or sample-path forecasts. No training step. Six modality-specific endpoints under
/v1/timeseries/<type>/. - Model lifecycle —
POST /v1/models/unloadreleases all resident foundation-model weights and runtime caches. A forecast body with"unload": trueschedules its model for teardown after concurrent forecasts using that model finish. - Tabular ML — 9 supervised learners (lightgbm, xgboost, hist-gbt, random-forest, logistic, mlp, svm-rbf, knn, naive-bayes) + 3 meta-learners (calibrated, stacking, diversified). Train on YOUR engineered features, persist server-side by
modelId, forecast on the latest snapshot. Under/v1/tabular/. - MCP — streamable-HTTP tools at
/mcp. One named tool per (FM type, model) cell plus per-type ensemble + listing. Tabular endpoints are HTTP-only for now.
Quick start
docker run -d --name predictalot \
-v $HOME/predictalot-models:/models \
-e PREDICTALOT_AUTH_TOKENS=changeme \
-p 8080:8080 \
psyb0t/predictalot:latest
# Zero-shot FM forecast
curl -s http://localhost:8080/v1/timeseries/univariate/forecast \
-H "Authorization: Bearer changeme" -H "Content-Type: application/json" \
-d '{"model":"chronos-2","context":[[10,11,12,13,14,15,16,17,18,19,20]],"config":{"horizon":5}}' | jq
# Train + persist a tabular model on your own features
curl -s http://localhost:8080/v1/tabular/train \
-H "Authorization: Bearer changeme" -H "Content-Type: application/json" \
-d '{"modelId":"my-model","backend":"lightgbm","target":[[100,101,99,...]],
"features":[{"rsi":[55,58,...],"macd":[0.3,0.4,...]}],
"config":{"mode":"direction","horizon":3,"nEstimators":400}}' | jq
# Then forecast on the latest snapshot
curl -s http://localhost:8080/v1/tabular/forecast \
-H "Authorization: Bearer changeme" -H "Content-Type: application/json" \
-d '{"modelId":"my-model","features":[{"rsi":[58],"macd":[0.4]}]}' | jq
# Release all resident foundation-model memory when it is no longer needed
curl -s -X POST http://localhost:8080/v1/models/unload \
-H "Authorization: Bearer changeme" | jq
Documentation
| Doc | What it covers |
|---|---|
| docs/timeseries.md | Foundation time-series API. All 5 models (capabilities + per-model quirks + what each is recommended for), all 6 forecast types, per-type ensemble with weights + memberOverrides, extra per-call hatch, /models listings. |
| docs/tabular.md | Tabular ML API. All 9 backends (what each is recommended for), 3 modes (direction / value / quantile), tier-1/2/3 config knobs, the 3 meta-learners (calibrated / stacking / diversified), storage layout. |
| docs/mcp.md | MCP streamable-HTTP server: tool naming, args, current scope (FM only). |
| docs/configuration.md | Every PREDICTALOT_* env var. |
| docs/architecture.md | Multi-venv sidecar pattern for sundial, CPU vs CUDA images, multi-stage build. |
| docs/accuracy.md | Benchmark sMAPE + latency on academic + real-world datasets. Honest takeaways including which models lose. |
| docs/errors.md | Error contract: 400 / 401 / 404 / 413 / 422 / 503 shapes. |
CHANGELOG.md tracks per-version changes.
Agent integrations
The skill works in any agent that reads .agents/skills/ (such as peen), and
installs natively in the clients below.
Claude Code
claude plugin marketplace add psyb0t/agents
claude plugin install predictalot@psyb0t
Claude Code prompts for the predictalot URL and, if auth is enabled, the token — the token is stored in your OS keychain.
Codex
codex plugin marketplace add psyb0t/agents
codex plugin add predictalot@psyb0t
Installed via the marketplace, the skill invokes as $predictalot:predictalot. Codex also picks
the skill up automatically, with no install, in any repo containing .agents/skills/ — there it
invokes as plain $predictalot.
OpenClaw
The skill is published to ClawHub on every release:
openclaw skills install @psyb0t/predictalot
For MCP clients that speak local stdio, the @psyb0t/predictalot
plugin bridges to predictalot's /mcp endpoint:
openclaw plugins install clawhub:@psyb0t/predictalot
Then set PREDICTALOT_URL (and PREDICTALOT_AUTH_TOKENS if the server requires one).
License
Code: WTFPL (see LICENSE). The MCP plugin under .agents/plugins/predictalot/ is MIT (its own LICENSE).
Foundation models retain their upstream licenses — chronos-2 / timesfm-2.5 / toto-1 / sundial-base-128m: Apache 2.0; moirai-2: CC-BY-NC-4.0 (non-commercial). Tabular backends use their upstream licenses — lightgbm / xgboost / scikit-learn: permissive. Review each before commercial use.
Questions fréquentes
Qu'est-ce que Predictalot ?
Self-hosted MCP server for time-series forecasting and tabular ML via foundation models.
Comment installer Predictalot ?
Il s'exécute sur votre machine. Dans Claude Code : claude mcp add predictalot -- docker run -i --rm docker.io/psyb0t/predictalot:v1.2.2. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour Predictalot ?
Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.
Predictalot est-il open source ?
Oui. Son code est sur GitHub sous licence WTFPL.
Qui maintient Predictalot ?
Il est publié par psyb0t. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.