forecast-mcp
forecast-mcp
An MCP server (Model Context Protocol) that exposes a three-tier demand forecasting and replenishment pipeline as tools. Any MCP client can call it: Cursor, Claude Desktop, Claude Code, Google Antigravity, Windsurf, and anything else that speaks MCP. Each series is classified with Syntetos–Boylan statistics (ADI and CV²) and routed to one model:
Pattern | Typical series | Model |
Cold-start | <14 days of history | Mean of observed demand |
Intermittent / lumpy | Sparse, mostly-zero demand | TSB ( |
Regular / erratic | Continuous daily demand | AutoETS ( |
Cutoffs: ADI = 1.32, CV² = 0.49 (classification.py).
Tools
Tool | Purpose |
| IDs in the loaded dataset |
| Pattern + model tier |
| Horizon forecast after routing |
| Holdout backtest (MASE) |
| Reorder point and order quantity |
| Routing rationale |
Data
The server generates a synthetic 25-SKU panel in memory on startup (regular, erratic, intermittent, lumpy, and cold-start). No external dataset or API key is required.
To use your own history, pass a CSV with unique_id, ds (date), y (units):
python -m forecast_mcp.server --data examples/sample_demand.csv
# or
export FORECAST_MCP_DATA=/path/to/demand.csvSetup
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
pip install -e ".[ui]"Run
python -m forecast_mcp.server
python -m forecast_mcp.server --transport http --port 8765
python -m forecast_mcp.uiHTTP health: http://127.0.0.1:8765/health
MCP endpoint: http://127.0.0.1:8765/mcp
UI: http://127.0.0.1:7860
Point the MCP command at this project's .venv/bin/python.
Tests
pip install pytest
pytest tests/ -vClient config
stdio (default) and Streamable HTTP are both supported. Example configs are
in examples/mcp/, plus .cursor/mcp.json and .agents/mcp_config.json.
{
"mcpServers": {
"forecast-mcp": {
"command": "/absolute/path/to/forecast-mcp/.venv/bin/python",
"args": ["-m", "forecast_mcp.server"]
}
}
}HTTP:
{
"mcpServers": {
"forecast-mcp": {
"url": "http://127.0.0.1:8765/mcp"
}
}
}Some clients use serverUrl instead of url.
Extensions
Cold-start: replace the mean fallback in
forecast_cold_start()with a zero-shot foundation model (e.g. Chronos-Bolt).Extra candidates per tier: score with MASE in
evaluation.py.Storage: swap
DataStorefor ClickHouse, Postgres, or DuckDB.Regular tier with exogenous features:
mlforecast+ LightGBM.
Layout
forecast-mcp/
├── src/forecast_mcp/
│ ├── server.py
│ ├── data.py
│ ├── classification.py
│ ├── forecasting.py
│ ├── evaluation.py
│ ├── replenishment.py
│ └── ui.py
├── scripts/
├── examples/
├── tests/
├── requirements.txt
└── pyproject.tomlRohan Singh · github.com/RohanSingh02
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/RohanSingh02/forecast-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server