Prophet MCP服务器
开源 模型上下文协议(MCP) 服务器设计用于 时间序列预测.
由...驱动 Meta的先知,该服务器使LLM能够从历史数据中生成准确的预测、趋势分析和置信区间,从而将原始数据转化为AI工作流程中可操作的见解。
注: 这个项目是 sendgrid mcp 服务器经过重新设计,通过MCP协议提供强大的预测能力。
______________________________________________________________________
🚀 关键能力
1.预测建模
杠杆 Meta的先知 基于历史数据预测未来趋势。自动处理季节性、异常值和趋势变化。
2.增长模式选择
为您的场景选择正确的预测模型:
- 线性 (默认):无边界直线趋势——非常适合没有自然上限的指标。
- 物流 (S曲线):饱和增长,尊重
cap(最大)和可选floor(min)——非常适合市场份额、采用率或容量有限的系统等指标。
3.多频预测
通过以下方式支持每日、每小时、每周和每月的时间序列 freq 参数——使用与输入数据匹配的频率。
4.LLM友好输出
以针对大型语言模型优化的结构化、两部分格式返回数据:
content[0]--文本摘要: 具有趋势方向的简明英语分析(例如。, *“上升+26.1%”*),统计细分、增长模型详细信息和完整的预测数据表。content[1]--Chart.js配置: 正确的JSON有效载荷(chartjs_config:{...})已准备好可视化——无需正则表达式解析。
5.高级交互式可视化
每个响应都包含一个Chart.js配置:
- 🟣 靛蓝渐变 置信带 (上下限之间的阴影)
- 🔵 纯蓝色 拟合线 历史模型拟合
- 🔵 淡蓝色 预测线 使用钻石标记进行未来预测
- 🔴 珊瑚 实际值 带有白色边框的圆形标记
- 📍 垂直 “预测→“注释 标记预测开始的位置
- 🔴 红色/🟠 橙色虚线 盖/地板线 物流增长
- 🌙 高级 暗黑主题 采用玻璃造型
6.稳健的错误处理
输入验证,并显示以下内容的明确错误消息:
- 数据数组为空或不匹配
- 增长模型值无效
- 缺失
cap物流增长 - 无效
floor >= cap组合
______________________________________________________________________
📖 运作原理
┌─────────────────────────────────────────────────────────────┐
│ 1. LLM sends historical data (dates + values) via MCP │
│ 2. User selects growth model (linear or logistic) │
│ 3. Prophet model learns patterns and generates forecast │
│ 4. Response contains two content items: │
│ ├── content[0]: Human-readable summary + data table │
│ └── content[1]: Chart.js JSON config for visualization │
└─────────────────────────────────────────────────────────────┘______________________________________________________________________
📊 响应格式
MCP tools/call 响应返回 两个内容项:
content\[0\]--文本摘要
### Prophet Forecast Data ###
Growth model used: LOGISTIC (cap=120, floor=30)
Summary of forecast metrics:
- Historical Period: 2025-02-01 to 2025-03-02
- Trend Direction: UPWARD (+26.1% vs historical mean)
Date | yhat | yhat_lower | yhat_upper
-------------------------------------
2025-03-03 | 79.56 | 76.93 | 81.98
...content\[1\]--Chart.js JSON
chartjs_config:{"type":"line","data":{"labels":[...],"datasets":[...]},"options":{...}}这是前缀为的有效JSON chartjs_config: --解析为:
cfg_json = content[1]["text"][len("chartjs_config:"):]
config = json.loads(cfg_json)______________________________________________________________________
🛠️ 工具: forecast_time_series
输入参数
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
ds | array[string] | ✅ 是 | -- | ISO格式的日期列表(YYYY-MM-DD) |
y | array[number] | ✅ 是 | -- | 与对齐的数值列表 ds |
periods | integer | 没有 | 10 | 要预测的未来期数 |
growth | string | 没有 | "linear" | 增长模式: "linear" 或 "logistic" |
cap | number | 当逻辑 | -- | 饱和最大值时(预测不会超过此值) |
floor | number | 否 | -- | 饱和最小值(预测不会低于此值) |
freq | string | 没有 | "D" | 时间序列频率: "D", "H", "W", "MS" |
何时使用每种增长模型
| 情景 | 增长 | 为什么 |
|---|---|---|
| 收入、温度、股价 | linear | 无天然天花板或地板 |
| 市场份额、采用率 | logistic | 100%饱和 |
| 服务器容量、团队带宽 | logistic | 存在物理限制 |
| 网站转化率 | logistic | 范围在0-100%之间 |
输出列
| 列 | 含义 |
|---|---|
ds | 观测值或预测值的日期 |
yhat | 预测值(模型的最佳估计值) |
yhat_lower | 置信区间下限 |
yhat_upper | 置信区间上限 |
______________________________________________________________________
📂 项目结构
Prophet_mcp/
├── app.py # Flask server — MCP endpoint, auth, JSON-RPC routing
├── mcp_helper.py # Core engine — Prophet forecasting, summary, Chart.js config
├── requirements.txt # Python dependencies
├── Procfile # Cloud deployment (gunicorn)
├── README.md # This file
├── .gitignore # Git exclusions
└── examples/ # Local testing utilities (not required for deployment)
├── plot_forecast.py # Basic forecast test with Chart.js visualization
└── test_gcp_marketing.py # Real-world marketing scenario (30-day conversions)______________________________________________________________________
📦 安装和设置
先决条件
- 蟒蛇 或Miniconda(建议用于Prophet依赖项)
- Python 3.11+
1.环境设置
# Create environment
conda create -n prophet-mcp python=3.11
conda activate prophet-mcp
# Install dependencies
pip install -r requirements.txtWindows用户: 先知要求CmdStan。如果您遇到问题,请参阅 Prophet安装指南 或通过conda安装:conda install -c conda-forge prophet.
2.配置
服务器使用承载令牌身份验证。设置 MCP_TOKEN 环境变量:
# Set your token (required)
export MCP_TOKEN="your-secure-token-here"______________________________________________________________________
🏃♂️ 运行服务器
本地开发
MCP_TOKEN="your-token" python app.py生产(云)
gunicorn app:app- 服务器URL:
http://localhost:3000 - MCP端点:
POST http://localhost:3000/mcp - 健康检查:
GET /health
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
MCP_TOKEN | *(必填)* | 用于身份验证的承载令牌 |
PORT | 3000 | 服务器端口 |
MCP_DEBUG | false | 启用Flask调试模式 |
认证
全部 /mcp 请求必须包含标头:
Authorization: Bearer 示例API调用(cURL)
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer " \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "forecast_time_series",
"arguments": {
"ds": ["2025-01-01","2025-01-02","2025-01-03","2025-01-04","2025-01-05",
"2025-01-06","2025-01-07","2025-01-08","2025-01-09","2025-01-10"],
"y": [10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
"periods": 5,
"growth": "logistic",
"cap": 25,
"floor": 5
}
},
"id": 1
}'______________________________________________________________________
🧪 测试和可视化
基本测试
MCP_TOKEN="your-token" python examples/plot_forecast.py营销预测测试(30天真实场景)
MCP_TOKEN="your-token" python examples/test_gcp_marketing.py这两个脚本将:
- 呼叫MCP服务器的API
- 从以下位置提取Chart.js配置
content[1] - 生成具有高级深色主题的交互式HTML图表
- 在默认浏览器中打开它
______________________________________________________________________
☁️ 云部署
要部署到Google Cloud Run(或任何云提供商),您需要:
app.py
mcp_helper.py
requirements.txt
Procfile这 examples/ 文件夹仅用于本地测试,生产中不需要。
服务器绑定到 0.0.0.0 并阅读 PORT 自动环境变量以实现云兼容性。
______________________________________________________________________
🔐 安全
- 所有人的承载令牌身份验证
/mcp端点 - 令牌可通过以下方式配置
MCP_TOKEN环境变量(无默认值,必须显式设置) - 默认情况下禁用调试模式(通过启用
MCP_DEBUG=true) - JSON-RPC错误处理与正确的错误代码
- 所有工具参数的输入验证
- 源代码中未存储敏感数据
______________________________________________________________________
📄 依赖项
| 包装 | 用途 |
|---|---|
flask | Web服务器框架 |
pandas | 数据操纵 |
prophet | 时间序列预测引擎 |
gunicorn | 生产WSGI服务器 |
requests | HTTP客户端(仅示例) |
______________________________________________________________________
📄 许可证
MIT许可证
______________________________________________________________________
👥 贡献
欢迎投稿!请随时提交拉取请求。
作者 普拉迪普·钱德拉·卡拉什蒂\ 原始基地: sendgrid mcp
