Token导航 LogoToken导航TokenDH.com
Timeseries One Class SVM MCP logo
数据服务stdio官方级别未说明来源级核验

Timeseries One Class SVM MCP

MCP Server

基于One-Class SVM的时间序列异常检测工具,支持CSV和TXT格式数据文件,通过SSE协议提供流式异常检测结果。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
机器学习Python数据分析

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Plc912

提供方

Plc912

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python --version

详细介绍

TimeSeries One-Class SVM MCP

作者:庞力铖

邮箱:3522236586@qq.com

GitHub:https://github.com/Plc912/TimeSeries-One-Class-SVM-MCP.git

基于 One-Class SVM 的时间序列异常检测工具,使用 fastMCP 框架封装为标准 MCP 工具,通过 SSE(Server-Sent Events)协议提供流式异常检测结果。

功能特性

  • ✅ 基于 One-Class SVM 的时间序列异常检测
  • ✅ 支持 CSV 和 TXT 格式数据文件
  • ✅ SSE 流式返回检测结果
  • ✅ 支持自然语言 prompt 指定检测参数
  • ✅ 滑动窗口特征工程
  • ✅ 模型保存与加载
  • ✅ 大数据集流式处理优化

安装依赖

1. 确保 Python 版本 >= 3.11

python --version

2. 安装项目依赖

pip install -r requirements.txt

启动服务

直接运行主程序

python main.py

服务启动后,你将看到:

启动 TimeSeries One-Class SVM MCP 服务
使用 fastMCP 框架
服务地址: http://127.0.0.1:3005
传输协议: SSE (Server-Sent Events)

fastMCP 服务器将在 http://127.0.0.1:3005 启动,使用 SSE 传输协议。

数据格式要求

数据文件需要满足以下格式:

  • 第一列:时间戳(可解析为 datetime 格式)
  • 第二列:数值(float 类型)

CSV 格式示例

timestamp,value
2024-01-01 00:00:00,100.5
2024-01-01 01:00:00,102.3
2024-01-01 02:00:00,98.7
...

TXT 格式示例(制表符分隔)

timestamp	value
2024-01-01 00:00:00	100.5
2024-01-01 01:00:00	102.3
2024-01-01 02:00:00	98.7
...

数据集anomalies_c41b7217-1e8b-42f1-8097-7290f0e2ad77.csv是检测出的异常数据,由于token限制只能导出为csv格式的数据集;

客户端调用示例

Python 客户端示例

1. 发送检测请求

import requests
import json
import sseclient

# 1. 发送检测请求
detect_url = "http://127.0.0.1:3005/mcp/detect"

# 方式一:使用 JSON 格式参数
request_data = {
    "command": "detect",
    "file_path": "data.csv",  # 数据文件路径(相对于服务运行目录或绝对路径)
    "nu": 0.05,
    "window_size": 48,
    "threshold_quantile": 0.01,
    "kernel": "rbf",
    "gamma": "scale"
}

response = requests.post(detect_url, json=request_data)
result = response.json()
task_id = result["task_id"]
print(f"任务 ID: {task_id}")

# 方式二:使用自然语言 prompt
request_data = {
    "prompt": "检测 data.csv 文件中的异常,nu=0.05,窗口大小=48,阈值分位数=0.01"
}

response = requests.post(detect_url, json=request_data)
result = response.json()
task_id = result["task_id"]

2. 接收 SSE 流式结果

# 2. 接收 SSE 流式结果
# fastMCP 使用 SSE 协议流式返回结果
sse_url = f"http://127.0.0.1:3005/sse/{task_id}"

# 使用 sseclient 库接收 SSE 流
messages = sseclient.SSEClient(sse_url)

for msg in messages:
    if msg.event == "start":
        print("开始检测...")
    elif msg.event == "anomaly_result":
        data = json.loads(msg.data)
        print(f"时间戳: {data['timestamp']}, "
              f"值: {data['value']}, "
              f"异常分数: {data['score']:.4f}, "
              f"标签: {'异常' if data['label'] == 1 else '正常'}")
    elif msg.event == "complete":
        print("检测完成!")
        break
    elif msg.event == "error":
        error_data = json.loads(msg.data)
        print(f"错误: {error_data['error']}")
        break

使用 curl 测试

1. 发送检测请求

curl -X POST http://127.0.0.1:3005/mcp/detect \
  -H "Content-Type: application/json" \
  -d '{
    "file_path": "data.csv",
    "nu": 0.05,
    "window_size": 48,
    "threshold_quantile": 0.01
  }'

2. 接收 SSE 流(使用任务 ID)

curl -N http://127.0.0.1:3005/sse/{task_id}

MCP 配置与自然语言 Prompt

MCP 工具配置

MCP 工具配置信息存储在 mcp_config.json 中,包含:

  • 工具名称和版本
  • 服务端口和协议
  • API 端点信息
  • 参数说明

标准 JSON 格式

也可以直接使用 JSON 格式指定所有参数:

{
  "command": "detect",
  "file_path": "data.csv",
  "nu": 0.05,
  "window_size": 48,
  "threshold_quantile": 0.01,
  "kernel": "rbf",
  "gamma": "scale"
}

参数说明

1. nu 参数(异常值比例上界)

范围

  • 有效范围: 0 = 2
  • 推荐范围: 10 - 200
  • 默认值: 48
  • 类型: int

说明

  • window_size 用于构建时间序列特征,表示滑动窗口包含的数据点数量
  • 窗口大小影响特征提取的粒度和模型对时间模式的捕获能力
  • 窗口太小:可能无法捕获长期趋势和周期性模式
  • 窗口太大:可能过度平滑,丢失短期异常信号

推荐值(根据数据频率)

  • 小时级数据(每小时一个点):

- 短期模式: 12 - 24(半天到一天) - 中期模式: 48 - 168(2天到一周) - 长期模式: 168 - 720(一周到一个月)

  • 分钟级数据(每分钟一个点):

- 短期模式: 30 - 60(半小时到一小时) - 中期模式: 60 - 1440(1小时到一天) - 长期模式: 1440 - 10080(一天到一周)

  • 日级数据(每天一个点):

- 短期模式: 7 - 14(一周到两周) - 中期模式: 30 - 90(一个月到三个月) - 长期模式: 90 - 365(三个月到一年)

注意事项

  • 窗口大小不能超过数据点总数
  • 建议窗口大小不超过数据点总数的 1/10
  • 对于小数据集(= 2 | 48 | 10 - 200` |

| threshold_quantile | float | 0 <= threshold_quantile <= 1 | 0.01 | 0.001 - 0.2 |

检测结果格式

每条检测结果包含以下字段:

{
  "timestamp": "2024-01-01T00:00:00",
  "value": 100.5,
  "score": -0.0234,
  "label": 0
}
  • timestamp: 时间戳(ISO 格式)
  • value: 原始数值
  • score: 异常分数(decision_function),分数越小越可能是异常
  • label: 异常标签(0=正常,1=异常)

模型保存与加载

模型会自动保存到 models/ 目录,文件名格式为:

model_nu{nu}_kernel{kernel}.pkl

可以通过 AnomalyDetector 类的 save_model()load_model() 方法进行模型的保存和加载。

性能优化

  • 滑动窗口特征生成使用生成器,减少内存占用
  • SSE 流式返回,客户端可以实时接收结果

目录标签

目录标签

机器学习Python数据分析时间序列本地部署异常检测流式处理

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP