TimeSeriesMCPServer
БесплатноНе проверен时间序列预测MCP服务器,支持RNN、LSTM、GRU三种深度学习模型的训练、对比和预测。
Описание
时间序列预测MCP服务器,支持RNN、LSTM、GRU三种深度学习模型的训练、对比和预测。
README
基于MCP (Model Context Protocol) 的时间序列预测服务,支持RNN、LSTM、GRU三种深度学习算法。
作者: Heny(兰翔)、LovelyFlash(王李超)
课程: 人工智能引论 25秋
工具列表:
工具 (Tools)
train_rnn_model- 训练RNN回归模型train_lstm_model- 训练LSTM回归模型train_gru_model- 训练GRU回归模型predict_model- 使用已训练模型进行预测compare_models- 对比三种模型性能并自动选择最佳get_available_models- 获取当前已训练可用的模型列表get_server_config- 获取服务器配置信息
资源 (Resources)
hello_resource- 示例MCP资源
提示词 (Prompts)
greet_user- 问候语生成提示predict_workflow- 时间序列预测完整工作流提示
一、项目结构
Simple_MCP_Server/
├── server.py # 服务器入口
├── setup.py # 安装脚本
├── config.yaml # 配置文件
├── pyproject.toml # 依赖管理
├── .gitignore # Git忽略文件
├── README.md # 本文档
│
├── tools/ # MCP工具
│ ├── __init__.py # 工具包初始化
│ ├── hello_tool.py # 示例工具
│ ├── time_series_models.py # RNN/LSTM/GRU模型实现
│ └── time_series_tools.py # 时间序列工具函数
│
├── prompts/ # MCP提示词模板
│ ├── __init__.py # 提示包初始化
│ ├── hello_prompt.py # 示例提示
│ └── predict_prompt.py # 时间序列预测工作流提示
│
├── resources/ # MCP资源
│ ├── __init__.py # 资源包初始化
│ └── hello_resource.py # 示例资源
│
├── core/ # 核心功能模块
│ ├── __init__.py # 核心包初始化
│ └── hello_secrets.py # 示例secrets管理
│
├── utils/ # 公共工具模块
│ ├── __init__.py # 工具包初始化
│ ├── config.py # 配置管理
│ ├── logger.py # 日志管理
│ ├── errors.py # 错误处理
│ ├── helpers.py # 辅助函数
│ ├── middleware.py # 中间件
│ ├── security.py # 安全模块
│ └── system.py # 系统工具
│
├── examples/ # 示例代码
│ ├── __init__.py # 示例包初始化
│ └── sdk_client.py # Python SDK客户端
│
├── logs/ # 日志文件目录
├── modules/ # 模块目录
│
├── deploy.sh # Linux部署脚本
└── deploy.bat # Windows部署脚本
二、快速开始
1. 安装依赖
uv venv
uv sync
2. 启动服务器
uv run server.py
服务器地址: http://127.0.0.1:12346
三、工具详解
3.1 train_rnn_model - RNN模型训练对话示例
用户: 我有一组温度数据,想训练一个RNN模型。
AI: 好的,我们可以使用train_rnn_model工具来训练RNN回归模型。你需要提供时间序列数据,比如说: [20.5, 21.2, 19.8, 22.0, 21.5, 20.9, 22.1, 21.8, 20.4, 23.0],以及设定训练轮数等参数。是否需要调整默认参数?
AI: 调用工具训练:
result = await client.train_rnn_model(
data=[20.5, 21.2, 19.8, 22.0, 21.5, 20.9, 22.1, 21.8, 20.4, 23.0],
epochs=50,
sequence_length=3,
hidden_size=32
)
AI: 训练完成!
{
"status": "success",
"model_type": "rnn",
"final_loss": 0.0123,
"metrics": {
"mse": 0.011,
"rmse": 0.105,
"mae": 0.082
},
"sample_predictions": [21.1, 19.9, 22.2],
"sample_actuals": [21.2, 19.8, 22.0]
}
AI: RNN模型训练成功!最终损失为0.0123,MSE为0.011。可以看到预测值与实际值很接近。
3.2 train_lstm_model - LSTM模型训练对话示例
用户: 我有一段时间序列数据,序列比较长,有50个点,想用LSTM模型做预测。
AI: 好的,LSTM适合处理长序列数据,记忆能力更强。我们可以使用train_lstm_model工具。我看到你有50个数据点,那么我们可以设置序列长度为5,隐藏层大小为64,训练轮数为100。数据准备好了吗?
AI: 开始训练LSTM模型:
result = await client.train_lstm_model(
data=[2.1, 2.3, 2.0, 2.5, 2.2, 2.8, 1.9, 3.0, 2.7, 2.4, 2.9, 2.1, 3.2, 2.6, 2.8, 3.1, 2.5, 3.3, 2.7, 3.0, 2.8, 2.9, 3.4, 2.6, 3.5, 2.9, 3.1, 3.2, 2.8, 3.6, 3.0, 3.3, 3.1, 2.9, 3.7, 3.2, 3.4, 3.1, 3.0, 3.8, 3.3, 3.5, 3.2, 3.1, 3.9, 3.4, 3.6, 3.2, 3.3, 4.0],
epochs=100,
sequence_length=5,
hidden_size=64
)
AI: LSTM训练结果:
{
"status": "success",
"model_type": "lstm",
"final_loss": 0.0089,
"metrics": {
"mse": 0.007,
"rmse": 0.084,
"mae": 0.061
},
"sample_predictions": [3.35, 3.5, 3.2],
"sample_actuals": [3.4, 3.5, 3.2]
}
AI: LSTM模型训练成功!相比RNN,LSTM在处理长序列时表现更稳定,最终损失为0.0089,MSE为0.007。看起来预测准确度很高。
3.3 train_gru_model - GRU模型训练对话示例
用户: 我设备性能有限,想用最少的参数做时间序列预测,GRU是不是适合我?
AI: 确实,GRU 参数量比LSTM少,适合资源受限的环境。我们可以使用train_gru_model工具。给你看一个简单的例子,只需要很少的数据点和小的隐藏层。
AI: 训练GRU模型:
result = await client.train_gru_model(
data=[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0],
epochs=30,
sequence_length=2,
hidden_size=16
)
AI: GRU训练结果:
{
"status": "success",
"model_type": "gru",
"final_loss": 0.0156,
"metrics": {
"mse": 0.014,
"rmse": 0.118,
"mae": 0.091
},
"sample_predictions": [9.8, 10.1, 10.5],
"sample_actuals": [10.0, 10.0, 11.0]
}
AI: 太好了!GRU模型训练成功。虽然参数量少,但表现还不错,最终损失为0.0156,MSE为0.014。对于资源有限的设备来说,这是一个很好的选择。
3.4 predict_model - 使用模型进行预测对话示例
用户: 我已经训练了一个LSTM模型,现在想对未来数据做预测,怎么做?
AI: 好,我们可以使用predict_model工具来使用已训练的模型进行预测。首先你需要确保模型已经训练好了,然后提供待预测的数据序列。
AI: 首先检查可用模型:
await client.get_available_models()
AI: 如果LSTM已训练,就可以进行预测:
result = await client.predict_model(
data=[10.0, 11.0, 12.5],
model_type="lstm"
)
AI: 预测结果:
{
"status": "success",
"model_type": "lstm",
"predictions": [13.1, 14.2, 15.3, 16.5, 17.8],
"prediction_count": 5
}
AI: 成功预测了未来5个数据点!根据输入序列[10.0, 11.0, 12.5],模型预测下一阶段的值为[13.1, 14.2, 15.3, 16.5, 17.8]。
用户: 我想预测其他模型,可是我还没训练过。
AI: 这样的话会返回错误信息:
{
"status": "error",
"message": "Model 'rnn' not trained yet. Please train the model first."
}
AI: 看来需要先训练相应的模型,然后再进行预测。
3.5 compare_models - 模型对比和自动选择对话示例
用户: 我很难决定用哪个模型,RNN、LSTM还是GRU?有没有工具可以帮我比较它们?
AI: 当然有!我们可以使用compare_models工具来同时训练三种模型,并自动选择表现最好的一个。这个工具会比较MSE(均方误差)来确定哪个模型最合适。
AI: 调用比较工具:
result = await client.compare_models(
data=[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0],
epochs=100,
sequence_length=3,
hidden_size=64
)
AI: 模型比较结果:
{
"status": "success",
"results": {
"rnn": {
"mse": 0.031,
"rmse": 0.176,
"mae": 0.145
},
"lstm": {
"mse": 0.012,
"rmse": 0.109,
"mae": 0.085
},
"gru": {
"mse": 0.022,
"rmse": 0.148,
"mae": 0.112
}
},
"best_model": "lstm",
"best_mse": 0.012
}
AI: 太棒了!经过比较,LSTM模型表现最佳,MSE只有0.012,比RNN的0.031和GRU的0.022都要好。系统自动推荐使用LSTM模型进行后续预测,这对长序列数据来说是最合适的。
3.6 get_available_models - 检查可用模型对话示例
用户: 我想知道当前已经训练了哪些模型。
AI: 没问题,我们可以使用get_available_models工具来查看当前已训练并可用的模型列表。这个工具不需要任何参数。
AI: 检查可用模型:
result = await client.get_available_models()
AI: 查询结果:
{
"status": "success",
"available_models": ["lstm", "gru"],
"model_count": 2
}
AI: 好的,当前已经训练了两个模型:LSTM和GRU。现在你可以直接使用这两个模型进行预测,而不需要重新训练。
3.7 get_server_config - 获取服务器配置对话示例
用户: 我想了解服务器的当前配置。
AI: 我们可以用get_server_config工具来获取服务器的配置信息。你可以指定具体要查询的配置键,如果不指定会返回默认值。
AI: 获取服务器配置:
result = await client.get_server_config(key="server.name")
AI: 配置查询结果:
{
"status": "success",
"config_key": "server.name",
"config_value": "TimeSeriesMCPServer",
"description": "当前服务器名称"
}
AI: 如果你想查看所有配置,也可以不传key参数来获取完整的配置信息。
3.8 predict_prompt - 时间序列预测工作流对话示例
用户: 预测时间序列[1.02, 2.11, 2.98, 4.05, 5.12, 6.03, 7.19, 8.25, 9.17, 10.28, 11.33, 12.41, 13.29, 14.45, 15.52, 16.37, 17.58, 18.64, 19.71, 20.83, 21.92, 22.78, 23.89, 25.01, 26.10, 27.05, 28.18, 29.27, 30.34, 31.42, 32.51, 33.63, 34.72, 35.81, 36.90, 37.95, 39.08, 40.13, 41.27, 42.39, 43.48, 44.55, 45.69, 46.77, 47.84, 48.91, 50.02, 51.15, 52.23, 53.31]的后五项
AI: 根据对时间序列数据的分析和模型训练,以下是预测结果和模型对比分析:
预测后五项
基于训练的LSTM模型,时间序列的后五项预测值为:
- 第51项:53.31 → 预测为 54.40
- 第52项:54.40 → 预测为 55.49
- 第53项:55.49 → 预测为 56.58
- 第54项:56.58 → 预测为 57.67
- 第55项:57.67 → 预测为 58.76
(注:以上为基于模型趋势的连续预测,根据最后几个点的模式推算得出。)
模型性能对比
我们对比了RNN、LSTM和GRU三种模型在相同数据集上的表现,评估指标包括均方误差(MSE)、均方根误差(RMSE)和平均绝对误差(MAE):
| 模型 | MSE | RMSE | MAE | 最终损失 |
|---|---|---|---|---|
| RNN | 0.0671 | 0.2591 | 0.2192 | 0.0000276 |
| LSTM | 0.0236 | 0.1537 | 0.1346 | 0.0000095 |
| GRU | 0.0249 | 0.1576 | 0.1375 | 0.0000083 |
结论与推荐
- 最佳模型:LSTM,在所有指标中表现最优,尤其是在MSE和RMSE上显著优于RNN和GRU。
- 次优模型:GRU,性能与LSTM非常接近,但略逊于LSTM。
- 最差模型:RNN,误差明显高于其他两种模型,不适合此时间序列任务。
推荐
建议使用LSTM模型进行后续预测,其预测精度最高,对趋势的捕捉能力最强。
四、大模型调用配置
Cursor/Cline
{
"mcpServers": {
"timeseries-mcp": {
"url": "http://127.0.0.1:12346/sse"
}
}
}
Claude Desktop
%APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"timeseries-mcp": {
"command": "uv",
"args": ["run", "--directory", "D:\\desktop\\Simple_MCP_Server", "server.py"]
}
}
}
Python SDK
from examples import TimeSeriesMCPClient
import asyncio
async def main():
async with TimeSeriesMCPClient(cwd=".") as client:
# 训练模型
result = await client.train_lstm(data=[1,2,3,4,5], epochs=50)
# 预测
pred = await client.predict(data=[6,7], model_type="lstm")
asyncio.run(main())
五、配置说明
修改 config.yaml:
server:
name: TimeSeriesMCPServer
version: 0.1.0
transport:
type: "sse" # stdio 或 sse
port: 12346
security:
enabled: false # 启用安全认证
api_key: "your-key"
六、算法选择
| 场景 | 推荐 | 原因 |
|---|---|---|
| 短序列 | RNN | 简单快速 |
| 长序列 | LSTM | 记忆能力强 |
| 资源受限 | GRU | 参数量少 |
Установка TimeSeriesMCPServer
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/Heny114514/TimeSeriesMCPServerFAQ
TimeSeriesMCPServer MCP бесплатный?
Да, TimeSeriesMCPServer MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для TimeSeriesMCPServer?
Нет, TimeSeriesMCPServer работает без API-ключей и переменных окружения.
TimeSeriesMCPServer — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить TimeSeriesMCPServer в Claude Desktop, Claude Code или Cursor?
Открой TimeSeriesMCPServer на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare TimeSeriesMCPServer with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
