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

已验证STDIO仅桌面开发者工具数据与分析

概览

AI 生成的概览

一个本地 MCP 服务器,用于电机电流特征分析,让助手加载电机电流信号、进行频谱分析并对电机故障分类。

可以做什么
检查并加载 CSV、TSV、WAV 或 NumPy 文件中的电流信号,生成带注入故障的合成测试信号,以短 ID 存到磁盘,并可列出或清除已存数据。计算电机参数(转差率、同步转速、转子频率)以及预期故障频率和轴承缺陷频率。对信号做去直流、滤波、归一化和加窗等预处理。计算 FFT 频谱、Welch 功率谱密度、频谱峰值、频带能量、希尔伯特包络谱和 STFT 时频视图。检测转子断条、偏心、定子故障和轴承故障并给出严重程度分级,也可从文件或已存信号一次性完成完整诊断。
适用场景
适用于电机的预测性维护与状态监测:让助手分析实测定子电流记录、核对预期故障频率,或在无需振动传感器和停机的情况下生成带严重程度分级的诊断报告。
运行要求
以 Python 包(mcp-server-mcsa)形式通过 stdio 在本地运行,通常用 uvx 或 pip 启动;未声明账户、API 密钥或请求头。信号文件需由用户提供。数据默认存于 ~/.mcsa_data/,可通过环境变量 MCSA_DATA_DIR 更改。
安装前请注意
服务器会把信号和频谱文件写入 ~/.mcsa_data/ 磁盘目录,并可通过 clear_stored_data 删除,清除前请确认。它会读取你提供的路径下的文件。严重程度阈值仅为通用参考,应结合具体电机、负载和基线测量调整;结果只是诊断辅助,不能替代专家检查。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Motor Current Signature Analysis,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

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 .npy files
  • 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 .npz files; referenced by short IDs (sig_xxxx, spec_xxxx) to keep large arrays out of the chat context; data survives server restarts

Tools (21)

ToolDescription
inspect_signal_fileInspect a signal file format and metadata without loading
load_signal_from_fileLoad a current signal from CSV / WAV / NPY file → returns signal_id
calculate_motor_paramsCompute slip, sync speed, rotor frequency from motor data
compute_fault_frequenciesCalculate expected fault frequencies for all common fault types
compute_bearing_frequenciesCalculate BPFO, BPFI, BSF, FTF from bearing geometry
preprocess_signalDC removal, filtering, normalisation, windowing pipeline → returns new signal_id
compute_spectrumSingle-sided FFT amplitude spectrum → returns spectrum_id
compute_power_spectral_densityWelch PSD estimation → returns spectrum_id
find_spectrum_peaksDetect and characterise peaks in a spectrum
detect_broken_rotor_barsBRB fault index with severity classification
detect_eccentricityAir-gap eccentricity detection via sidebands
detect_stator_faultsStator inter-turn short circuit detection
detect_bearing_faultsBearing defect detection from current spectrum
compute_envelope_spectrumHilbert envelope spectrum for modulation analysis
compute_band_energyIntegrated spectral energy in a frequency band
compute_time_frequencySTFT analysis with optional frequency tracking
generate_test_current_signalSynthetic motor current with optional faults → returns signal_id
run_full_diagnosisComplete MCSA diagnostic pipeline from signal or signal_id
diagnose_from_fileComplete MCSA diagnostic pipeline directly from file
list_stored_dataList all signals and spectra persisted on disk
clear_stored_dataDelete one or all stored items from disk

Resources

URIDescription
mcsa://fault-signaturesReference table of fault signatures, frequencies, and empirical thresholds

Prompts

PromptDescription
analyze_motor_currentStep-by-step guided workflow for MCSA analysis

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):

powershell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

macOS / Linux:

bash
curl -LsSf https://astral.sh/uv/install.sh | sh

After installing, restart your terminal so the uv / uvx commands are available.

Step 2 — Verify it works

bash
uvx mcp-server-mcsa --help

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):

json
{  "mcpServers": {    "mcsa": {      "command": "uvx",      "args": ["mcp-server-mcsa"]    }  }}

Then restart Claude Desktop.

VS Code (Copilot / Continue)

Create (or edit) .vscode/mcp.json in your workspace:

json
{  "servers": {    "mcsa": {      "command": "uvx",      "args": ["mcp-server-mcsa"]    }  }}
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)
bash
pip install mcp-server-mcsa

Then configure your client with:

json
{  "mcpServers": {    "mcsa": {      "command": "python",      "args": ["-m", "mcp_server_mcsa"]    }  }}

⚠️ Common issue on Windows: if you installed Python from the Microsoft Store, the mcp-server-mcsa command may not be in your PATH, causing a "server disconnected" error. In that case, find your Python path with python -c "import sys; print(sys.executable)" and use the full path in the config:

json
{  "mcpServers": {    "mcsa": {      "command": "C:/Users/YOU/AppData/Local/.../python.exe",      "args": ["-m", "mcp_server_mcsa"]    }  }}

Using uvx avoids this problem entirely.

Alternative: install from source (for development)
bash
git clone https://github.com/LGDiMaggio/mcp-motor-current-signature-analysis.gitcd mcp-motor-current-signature-analysisuv sync --dev

Configure the client to point to the local repo:

json
{  "mcpServers": {    "mcsa": {      "command": "uv",      "args": ["--directory", "/absolute/path/to/mcp-motor-current-signature-analysis", "run", "mcp-server-mcsa"]    }  }}

Run tests:

bash
uv run pytest

Debug with MCP Inspector:

bash
uv run mcp dev src/mcp_server_mcsa/server.py

Troubleshooting

ProblemFix
"server disconnected" on Claude DesktopCheck the logs at %APPDATA%\Claude\logs\ (Windows) or ~/Library/Logs/Claude/ (macOS). Most common cause: the command in the config is not found. Use uvx to avoid PATH issues.
uvx: command not foundRestart your terminal after installing uv. On Windows, you may need to close and reopen PowerShell.
mcp-server-mcsa: command not found (pip)The script wasn't added to PATH. Use python -m mcp_server_mcsa instead, or switch to uvx.
Server starts but tools don't appearMake sure you restarted the MCP client after editing the config.

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.
~/.mcsa_data/  signals/    sig_a1b2c3d4.npz   ← loaded from CSV    sig_e5f6g7h8.npz   ← generated test signal  spectra/    spec_i9j0k1l2.npz  ← FFT result

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)

  1. Load a measured signal (or generate a synthetic one):

    "Load the signal from measurement.wav" → returns signal_id: sig_a1b2 or: "Generate a test signal with a broken-rotor-bar fault" → sig_c3d4

  2. Calculate motor parameters:

    "Calculate motor parameters for a 4-pole motor, 50 Hz supply, running at 1470 RPM"

  3. Compute expected fault frequencies:

    "What are the expected fault frequencies for this motor?"

  4. Preprocess the signal:

    "Preprocess signal sig_a1b2" → returns new signal_id: sig_e5f6

  5. Analyse the spectrum:

    "Compute the FFT spectrum of sig_e5f6" → returns spectrum_id: spec_g7h8

  6. Detect specific faults:

    "Check for broken rotor bars in spec_g7h8"

  7. 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:

Input: signal_id + motor nameplate dataOutput: complete report with fault severities and recommendations

Bearing Analysis

For bearing fault analysis, you need the bearing geometry (number of balls, ball diameter, pitch diameter, contact angle). The server will:

  1. Calculate characteristic defect frequencies (BPFO, BPFI, BSF, FTF)
  2. Compute expected current sidebands
  3. Search the spectrum for those sidebands

Supported File Formats

FormatExtensionsSampling Rate
CSV / TSV.csv, .tsv, .txtFrom time column or user-supplied
WAV.wavEmbedded in header
NumPy.npyUser-supplied

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)

LevelRange
Healthy≤ −50 dB
Incipient−50 to −45 dB
Moderate−45 to −40 dB
Severe> −35 dB

Note: These are general guidelines. Actual thresholds should be adapted to the specific motor, load, and application based on baseline measurements.

Development

Setup

bash
git clone https://github.com/LGDiMaggio/mcp-motor-current-signature-analysis.gitcd mcp-motor-current-signature-analysisuv sync --dev

Run tests

bash
uv run pytest

Run with MCP Inspector

bash
uv run mcp dev src/mcp_server_mcsa/server.py

Lint and type check

bash
uv run ruff check src/ tests/uv run pyright src/

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:

bibtex
@software{dimaggio_mcsa_2025,  author       = {Di Maggio, Luigi Gianpio},  title        = {mcp-server-mcsa: MCP Server for Motor Current Signature Analysis},  year         = 2025,  url          = {https://github.com/LGDiMaggio/mcp-motor-current-signature-analysis},  license      = {MIT}}

GitHub shows a "Cite this repository" button automatically from the CITATION.cff file.

[ORCID]

License

MIT — see LICENSE for details.

来源:README.md,提交 d8aabc7

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.2.1最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分