
Motor Current Signature Analysis
io.github.LGDiMaggio由 GitHub 账号 LGDiMaggio 发布v0.2.1更新于 Oct 24, 2026
MCP server for Motor Current Signature Analysis — fault detection in electric motors
概览
一个本地 MCP 服务器,用于电机电流特征分析,让助手加载电机电流信号、进行频谱分析并对电机故障分类。
- 可以做什么
- 检查并加载 CSV、TSV、WAV 或 NumPy 文件中的电流信号,生成带注入故障的合成测试信号,以短 ID 存到磁盘,并可列出或清除已存数据。计算电机参数(转差率、同步转速、转子频率)以及预期故障频率和轴承缺陷频率。对信号做去直流、滤波、归一化和加窗等预处理。计算 FFT 频谱、Welch 功率谱密度、频谱峰值、频带能量、希尔伯特包络谱和 STFT 时频视图。检测转子断条、偏心、定子故障和轴承故障并给出严重程度分级,也可从文件或已存信号一次性完成完整诊断。
- 适用场景
- 适用于电机的预测性维护与状态监测:让助手分析实测定子电流记录、核对预期故障频率,或在无需振动传感器和停机的情况下生成带严重程度分级的诊断报告。
- 运行要求
- 以 Python 包(mcp-server-mcsa)形式通过 stdio 在本地运行,通常用 uvx 或 pip 启动;未声明账户、API 密钥或请求头。信号文件需由用户提供。数据默认存于 ~/.mcsa_data/,可通过环境变量 MCSA_DATA_DIR 更改。
安装
在 SourceWeft 中
- 打开 控制台中的 Motor Current Signature Analysis,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
mcp-server-mcsa
[License: MIT] [Python 3.10+] [MCP]
A Model Context Protocol (MCP) server for Motor Current Signature Analysis (MCSA) — non-invasive spectral analysis and fault detection in electric motors using stator-current signals.
mcp-server-mcsa turns any LLM into a predictive-maintenance expert. By integrating advanced techniques such as Fast Fourier Transform (FFT) and envelope analysis, the system can listen to a motor's electrical signature and automatically identify mechanical and electrical anomalies — all through natural language.
MCSA is an industry-standard condition-monitoring technique that analyses the harmonic content of the stator current to detect rotor, stator, bearing, and air-gap faults in electric motors — without requiring vibration sensors, downtime, or physical access to the machine. This server brings the full MCSA diagnostic workflow to any MCP-compatible AI assistant (Claude Desktop, VS Code Copilot, and others), enabling both interactive expert analysis and automated condition-monitoring pipelines.
Features
- Real signal loading — read measured data from CSV, TSV, WAV, and NumPy
.npyfiles - Motor parameter calculation — slip, synchronous speed, rotor frequency from nameplate data
- Fault frequency computation — broken rotor bars, eccentricity, stator faults, mixed eccentricity
- Bearing defect frequencies — BPFO, BPFI, BSF, FTF from bearing geometry
- Signal preprocessing — DC removal, normalisation, windowing, bandpass/notch filtering
- Spectral analysis — FFT spectrum, Welch PSD, spectral peak detection
- Envelope analysis — Hilbert-transform demodulation for mechanical/bearing faults
- Time-frequency analysis — STFT with frequency tracking for non-stationary conditions
- Fault detection — automated severity classification (healthy / incipient / moderate / severe)
- One-shot diagnostics — full pipeline from signal array or directly from file
- Test signal generation — synthetic signals with configurable fault injection for demos and benchmarking
- Persistent data store — signals and spectra saved to
~/.mcsa_data/as compressed.npzfiles; referenced by short IDs (sig_xxxx,spec_xxxx) to keep large arrays out of the chat context; data survives server restarts
Tools (21)
Resources
Prompts
Installation & Setup
Step 1 — Install uv (one-time, if you don't have it)
uv is the recommended Python package manager. It handles everything (Python, packages, virtual environments) in a single tool and is used throughout the MCP ecosystem.
Windows (PowerShell):
macOS / Linux:
After installing, restart your terminal so the
uv/uvxcommands are available.
Step 2 — Verify it works
You should see the help text. That's it — no pip install needed. uvx downloads and runs the package automatically in an isolated environment.
Step 3 — Add to your MCP client
Pick your client and add the configuration below. No other steps are required.
Claude Desktop
Open the config file:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Add mcsa inside the mcpServers object (create the file if it doesn't exist):
Then restart Claude Desktop.
VS Code (Copilot / Continue)
Create (or edit) .vscode/mcp.json in your workspace:
Cursor
Go to Settings → MCP Servers → Add new server:
- Type:
command - Command:
uvx mcp-server-mcsa
Step 4 — Test
In your MCP client, try:
"Generate a test signal with a broken rotor bar fault and run a full diagnosis. Motor: 4 poles, 50 Hz, 1470 RPM."
If the server responds with a diagnostic report, you're all set.
Alternative: install with pip (not recommended — see note)
Then configure your client with:
⚠️ Common issue on Windows: if you installed Python from the Microsoft Store, the
mcp-server-mcsacommand may not be in your PATH, causing a "server disconnected" error. In that case, find your Python path withpython -c "import sys; print(sys.executable)"and use the full path in the config:Using
uvxavoids this problem entirely.
Alternative: install from source (for development)
Configure the client to point to the local repo:
Run tests:
Debug with MCP Inspector:
Troubleshooting
Data Store
Signals and spectra are persisted to disk as compressed .npz files
in ~/.mcsa_data/ (configurable via the MCSA_DATA_DIR environment
variable). This means:
- Large arrays never enter the chat — only short IDs (
sig_xxxx,spec_xxxx) and compact summaries are returned to the LLM. - Data survives server restarts — reopen Claude Desktop tomorrow and your signals are still there.
- All data in one place — loaded measurements and generated test signals live side by side in the same folder.
Use list_stored_data to see everything on disk and clear_stored_data
to remove items.
Usage Examples
Real Signal — One-Shot Diagnosis
The fastest way to analyse a measured signal is the diagnose_from_file
tool. Simply provide the file path and motor nameplate data:
"Diagnose the motor from
C:\data\motor_phaseA.csv— 50 Hz supply, 4 poles, 1470 RPM"
The server loads the file, preprocesses the signal, computes the spectrum, runs all fault detectors, and returns a complete JSON report with severity-classified results.
Step-by-Step Workflow (with signal IDs)
-
Load a measured signal (or generate a synthetic one):
"Load the signal from
measurement.wav" → returnssignal_id: sig_a1b2or: "Generate a test signal with a broken-rotor-bar fault" →sig_c3d4 -
Calculate motor parameters:
"Calculate motor parameters for a 4-pole motor, 50 Hz supply, running at 1470 RPM"
-
Compute expected fault frequencies:
"What are the expected fault frequencies for this motor?"
-
Preprocess the signal:
"Preprocess signal sig_a1b2" → returns new
signal_id: sig_e5f6 -
Analyse the spectrum:
"Compute the FFT spectrum of sig_e5f6" → returns
spectrum_id: spec_g7h8 -
Detect specific faults:
"Check for broken rotor bars in spec_g7h8"
-
Envelope analysis (optional):
"Compute the envelope spectrum of sig_e5f6"
Quick Diagnosis from Stored Signal
The run_full_diagnosis tool runs the entire pipeline on a stored signal
in a single call:
Bearing Analysis
For bearing fault analysis, you need the bearing geometry (number of balls, ball diameter, pitch diameter, contact angle). The server will:
- Calculate characteristic defect frequencies (BPFO, BPFI, BSF, FTF)
- Compute expected current sidebands
- Search the spectrum for those sidebands
Supported File Formats
Fault Detection Theory
Broken Rotor Bars (BRB)
Sidebands at $(1 \pm 2s) \cdot f_s$ where $s$ is slip and $f_s$ is supply frequency. Severity is classified by the dB ratio of sideband to fundamental amplitude.
Eccentricity
Sidebands at $f_s \pm k \cdot f_r$ where $f_r$ is the rotor mechanical frequency.
Stator Inter-Turn Faults
Sidebands at $f_s \pm 2k \cdot f_r$ due to winding asymmetry.
Bearing Defects
Torque oscillations modulate the stator current, creating sidebands at $f_s \pm k \cdot f_{defect}$. Defect frequencies depend on bearing geometry (BPFO, BPFI, BSF, FTF).
Severity Thresholds (dB below fundamental)
Note: These are general guidelines. Actual thresholds should be adapted to the specific motor, load, and application based on baseline measurements.
Development
Setup
Run tests
Run with MCP Inspector
Lint and type check
Dependencies
- mcp — Model Context Protocol SDK
- numpy — numerical computing
- scipy — signal processing (FFT, filtering, Hilbert transform)
- pydantic — data validation
Documentation
For a detailed reference of every tool, resource, and prompt — including parameter tables, diagnostic workflows, integration patterns, and severity thresholds — see the Usage Guide.
Citation
If you use this software in your research, please cite it:
GitHub shows a "Cite this repository" button automatically from the
CITATION.cfffile.
License
MIT — see LICENSE for details.
来源:README.md,提交 d8aabc7
工具
0版本历史
1- v0.2.1最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分