Auto-Manager MCP
Enables natural language analysis of mechanical test data files (CSV, TDMS, MDF) by providing tools for channel statistics, spectrum analysis, rainflow fatigue counting, thermal state detection, and report generation.
README
auto-manager
Measurement analysis for mechanical test engineers — load messy DAQ files, get answers in one command, and let your LLM drive the whole toolbox over MCP.
You ran the test. Now you have a CSV from one rig, a TDMS file from another, semicolons and decimal commas from the German lab, and a manager who wants a report. auto-manager reads all of it, figures out what each channel is (accelerometer? load cell? thermocouple?), runs the right analysis for each, and writes a self-contained HTML report with plain-English findings:
- Accel_X: dominant frequency 32.5 Hz, Q≈16, broadband RMS 0.84 g (further peaks: 120.0 Hz).
- Load: 186 fatigue cycles counted (rainflow, ASTM E1049), max range 24.6 kN; damage-equivalent constant-amplitude range 14.4 kN (m=5).
- TC_Air: 3 steady plateau(s) at 25.0, 85.1, −20.1; max transition overshoot 5.1.
- Force: possible clipping: 608 samples pinned at the minimum.
No project files, no wiring diagrams, no license server.
Install
pip install "auto-manager @ git+https://github.com/Maxpeng59/auto-manager"
# or, inside a clone: pip install .
Python ≥ 3.10. MDF/MF4 support is an extra: pip install "auto-manager[mdf] @ git+...".
Try it in 60 seconds
automgr samples # writes 3 realistic demo datasets
automgr info samples/weld_fatigue_load.csv # channels, units, detected kinds
automgr report samples/bracket_vibration.csv --open # full HTML report
automgr fatigue samples/weld_fatigue_load.csv -c Last
automgr thermal samples/thermal_chamber.csv
The demo files are deliberately awkward — a German export with semicolons, decimal commas and a metadata preamble; a tab file with ISO timestamps — because that is what real DAQ exports look like.
What it does
| command | what you get |
|---|---|
automgr info FILE |
channels, units, auto-detected kinds, sample rate, duration, metadata |
automgr stats FILE [-c CH] |
min/max/mean/RMS/crest factor + data-quality flags (NaN gaps, clipping) |
automgr spectrum FILE -c CH |
Welch PSD: dominant peaks with Q estimates, broadband & band RMS |
automgr fatigue FILE -c CH |
rainflow cycle counting per ASTM E1049 (validated against the standard's worked example), range histogram, damage-equivalent ranges, optional Miner damage with your S-N parameters |
automgr thermal FILE [-c CH] |
soak plateau detection, ramp rates, controller overshoot |
automgr report FILE |
everything above, chosen per channel automatically, as one shareable HTML file with charts, findings and a provenance footer (source hash, tool version) |
automgr mcp |
all of it as MCP tools for Claude / any MCP client |
Every command works with zero flags on a well-formed file; every error message says what to do next (--rate when a file has no time column, channel suggestions on typos, ...).
File formats
- CSV / TXT / TSV — auto-detects delimiter (
,;tab), decimal commas, metadata preambles, separate unit rows, units embedded in headers (Load (kN),Accel [g]), datetime or elapsed-time columns, text status columns, NaN gaps. - TDMS (NI LabVIEW/DIAdem) — via npTDMS, including waveform timing and units.
- MDF / MF4 (CANape, INCA, ...) — via asammdf (
[mdf]extra).
The loaders normalise everything into one channel model, so a future live-DAQ backend feeds the same analyses.
Channel auto-classification
Units and names are strongly conventional in test data. g/m/s² → acceleration → PSD. kN/µε/Nm → load/strain/torque → rainflow. °C/TC_1/PT100 → temperature → steady-state detection. You can always override by calling a specific analysis on any channel.
Use it from an LLM (MCP)
auto-manager ships an MCP server so a model can be your natural-language front end — "load bench_run_042.csv, tell me whether the 32 Hz mode shifted vs. Tuesday's baseline, and write me a report" — while the numbers come from real signal processing, not from a model's imagination.
# Claude Code
claude mcp add automgr -- automgr mcp
// Claude Desktop (claude_desktop_config.json)
{ "mcpServers": { "automgr": { "command": "automgr", "args": ["mcp"] } } }
Exposed tools: measurement_info, channel_stats, spectrum, fatigue_rainflow, thermal_steady_states, channel_segment (inspect raw samples), generate_report, supported_formats. The model sees channel kinds and units, so it knows a kN channel gets rainflow, not an FFT.
Python API
import auto_manager as am
m = am.load("samples/bracket_vibration.csv") # any supported format
psd = am.welch_psd(m.channel("Accel_X"), m.sample_rate)
print(psd["peaks"][0]) # {'freq_hz': 32.5, 'psd': ..., 'q_estimate': 16.2}
fat = am.rainflow(m.channel("Load"), sn_exponent=5, sn_ref_range=80.0, sn_ref_cycles=2e6)
soaks = am.steady_states(m.channel("TC_Air"), m.sample_rate)
from auto_manager.report import generate_report
generate_report(m) # -> bracket_vibration.report.html
Honest limitations (v0.1)
- File-based analysis only. Live DAQ (LabJack, VISA/SCPI instruments) is the next milestone — the channel model is already designed for it.
- Steady-state detection is a windowed heuristic; its parameters (
--slope-limit,--min-duration) are exposed and echoed into results for reproducibility. - Miner damage needs your S-N parameters; the reference slopes (m=3, m=5) shown by default are labelled as assumptions, not material data.
- No unit conversion (a
lbfchannel stays in lbf) and no mean-stress correction yet. - Reports are generated automatically — review before you release them.
Roadmap
This is module 1 of a four-module plan for an AI-native hardware+software test bench (see research/2026-07-02-landscape-and-architecture.md for the full landscape study):
- Natural-language analysis over measurement files ← you are here
- Auto-control of external hardware (asyncio hardware-abstraction service as the LLM's tool surface; human approval on state-changing writes; simulation/dry-run backend)
- LLM-generated firmware for a fixed companion dev-board kit (two-domain firmware: frozen safety kernel + MPU-restricted app partition; sim→HIL pipeline; A/B rollback)
- Custom companion PCB (demand-gated)
Development
uv venv && uv pip install -e ".[dev]"
uv run pytest # 47 tests, incl. ASTM E1049 vector & MCP stdio handshake
python examples/generate_sample_data.py # regenerate examples/data
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.