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 分