All notable changes to the Predictive Maintenance MCP Server project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- SSE & Streamable-HTTP transport —
main()now accepts--transport sse|streamable-http(or env varMCP_TRANSPORT) via argparse CLI, enabling remote HTTPS deployment for Microsoft Copilot Studio and other networked MCP clients.--host/--port(orMCP_HOST/MCP_PORT) configure the listen address. - Docker Compose + Caddy — New
docker-compose.ymlwithmcp-serverservice (SSE by default) and commented-out Caddy reverse proxy for automatic Let's Encrypt HTTPS certificates. NewCaddyfiletemplate. - HTTPS Deployment guide — New
docs/DEPLOYMENT.mdcovering local SSE testing, Docker Compose + Caddy auto-TLS, nginx reverse proxy, Azure/cloud deployment, Copilot Studio connection, and CLI reference.
- Dockerfile rebuilt for SSE default — installs
uvicorn, setsMCP_TRANSPORT=sse,MCP_HOST=0.0.0.0,EXPOSE 8000 - README updated: enterprise-ready features, Copilot Studio mention, deployment docs table, roadmap progress
- Version bumped to 0.7.1
- FAISS vector search —
search_documentationnow uses FAISS + sentence-transformers for semantic retrieval when installed (pip install predictive-maintenance-mcp[vector-search]). Falls back to TF-IDF keyword search when not installed. Dual-backendDocumentIndexinsrc/rag.py. - OCR for scanned PDFs —
document_reader.extract_text_from_pdf()automatically falls back to Tesseract OCR for pages with empty/minimal text. Requires optionalpytesseract+pdf2image+ Poppler. - DOCX diagnostic reports — New
generate_diagnostic_report_docxMCP tool andsave_diagnostic_report_docx()in report generator. Creates structured Word documents with statistics tables, FFT/envelope peaks, bearing frequencies, ISO evaluation, and diagnostic summary. Requires optionalpython-docx. - New optional dependency groups in
pyproject.toml:vector-search,ocr,docx. Thefullextra now includes all of them. - Overlapping chunking — New
chunk_text()helper in RAG module for character-level overlapping chunks alongside paragraph-aware chunking.
search_documentationnow reports active backend (faissortfidf) in response- 27 MCP tools (was 26) — added
generate_diagnostic_report_docx - Version bumped to 0.7.0
- RAG-based document search — New
search_documentationMCP tool using TF-IDF indexing over machine manuals and bearing catalogs (src/rag.py) SpectralPeakmodel — Structured representation for individual FFT peaks (frequency, magnitude, dB, annotation)
- Compact FFT output —
analyze_fftnow returns top-20 peaks + RMS/stats instead of full frequency/magnitude arrays (~200 KB → ~2 KB per call), eliminating LLM context overflow - Compact signal resource —
read_signal_filereturns metadata + statistics only (no raw samples), preventing large JSON payloads - Server instructions updated with output-efficiency policy and RAG documentation guidance
pypdfpromoted from optional to required dependency
- LLM "output too long" errors caused by full-array serialisation in
FFTResult
- Multi-format signal loading —
load_signal_data()now supports CSV, TXT, NPY, MAT (MATLAB), WAV, and Parquet formats __main__.py— Server can now be run aspython -m predictive_maintenance_mcp- Ollama Guide added to documentation table in README
- Unified signal loading — All 16
pd.read_csv()call sites refactored to useload_signal_data(), enabling all tools to accept any supported format - ML code deduplication — Extracted 4 helper functions (
_resolve_sampling_rate,_segment_and_extract_features,_extract_features_from_files,_extract_and_transform_validation_features), reducing ~163 statements intrain_anomaly_model - ISO metadata consolidation —
evaluate_iso_20816now reads metadata file once instead of twice - PyPDF2 → pypdf migration — Replaced deprecated PyPDF2 with pypdf in
document_reader.py - Pytest config consolidation — Merged
pytest.iniintopyproject.toml([tool.pytest.ini_options]) - Logging to stderr — Server logging now uses
stderrto avoid polluting MCP stdio transport - Report filenames —
report_generator.pyusesPath.stemfor all filename sanitizations
- Packaging — Corrected
pyproject.tomlpackage-dir mapping (src/→predictive_maintenance_mcp) - Metadata paths —
get_metadata_path()now usesPath.stemto work with all signal extensions - Plot output directories — Report generator creates output directories before writing files
- Flaky ML test — Fixed
test_predict_anomaliesinstability with deterministic seed
- Aligned
__version__insrc/__init__.pyandSERVER_VERSIONin.env.exampleto 0.4.x (were still 0.3.4 after merge) - Shortened
server.jsondescription to ≤100 characters (MCP Registry validation requirement) - Added
0.4.xto supported versions table inSECURITY.md - PyPI publish: v0.4.0 was uploaded with stale
__init__version; this release corrects it
-
Persona-Based Documentation System
- New
docs/QUICKSTART_ENGINEER.md— Zero-code guide for maintenance and reliability engineers - New
docs/QUICKSTART_DEVELOPER.md— Architecture guide for AI/software developers with tutorial on creating new MCP tools - "Choose Your Path" section in README with two clear entry points
- New
-
"Our Mission" Section in README
- Project vision and purpose integrated directly into the repository (previously only on external blog post)
- Explains the "why" of MCP for industrial diagnostics
-
Ecosystem Architecture Overview
- Visual diagram explaining the MCP flow: User → LLM → MCP Server → Data
- Explanation of MCP as "USB port for AI" — plug-and-play tool integration
- Clarifies the Resource vs Tool pattern
-
GitHub Issue Templates
- Bug Report template with environment details
- Feature Request template with impact assessment
- Good First Issue template with effort estimates and mentorship links
- Domain Validation template for engineers to provide expert feedback (no code required)
- Pull Request template with standardized checklist
- Issue template config with contact links to Discussions and guides
-
Revamped CONTRIBUTING.md with Four Contribution Paths
- Path 1: Domain Expert (no code required — validate results, provide datasets, review diagnostics)
- Path 2: Software Developer (add tools, improve architecture, build Docker support)
- Path 3: Technical Writer (tutorials, translations, case studies)
- Path 4: Tester / QA (edge cases, cross-platform, ground truth validation)
-
Actionable Roadmap
- Roadmap items now link to GitHub Issues/Discussions
- Priority-based table with Get Involved column
- Docker image for zero-install setup added as high-priority item
- README.md completely restructured — Mission → Architecture → Choose Your Path → Content
- Moved from purely technical README to narrative + technical hybrid
- Added Documentation table linking all guides by audience
- Consolidated support links (Issues, Discussions, Blog post) in dedicated section
- CONTRIBUTING.md rewritten — From generic PR guide to persona-based contribution manifesto
- Version bump from 0.3.2 to 0.4.0
-
Professional HTML Report Generation System
- Interactive Plotly visualizations with modern, responsive design
generate_fft_report()- FFT spectrum analysis with peak detectiongenerate_envelope_report()- Bearing fault detection with frequency markersgenerate_iso_report()- ISO 20816-3 compliance evaluation with zone chartslist_html_reports()- List all generated reports with metadataget_report_info()- Extract metadata without loading full HTML
-
Real Bearing Vibration Dataset
- 20 production-quality signals from real machinery tests (train: 14, test: 6)
- 3 healthy baselines, 7 inner race faults, 10 outer race faults
- Sampling rates: 48.8-97.7 kHz, durations: 3-6 seconds (varies by signal)
- Complete metadata with bearing frequencies (BPFO, BPFI, BSF, FTF)
-
Advanced Diagnostics
- Evidence-based bearing diagnostic workflow (
diagnose_bearing) - Gear fault detection workflow (
diagnose_gear) - ISO 20816-3 vibration severity assessment
- Automatic acceleration→velocity conversion
- Evidence-based bearing diagnostic workflow (
-
Machine Learning Tools
extract_features_from_signal()- 17+ statistical featurestrain_anomaly_model()- OneClassSVM/LocalOutlierFactor trainingpredict_anomalies()- Anomaly detection with confidence scores
-
Comprehensive Test Suite
- 80%+ test coverage
- Real data validation tests
- CI/CD pipeline with GitHub Actions
- Automated code quality checks (pytest, flake8, mypy, black)
- Migrated from inline HTML artifacts to file-based reports
- Optimized signal processing algorithms for accuracy and performance
- Enhanced documentation with step-by-step tutorials
- Improved diagnostic accuracy with evidence-based workflows
- Signal processing edge cases
- Peak detection accuracy
- ISO 20816-3 zone classification
- Metadata handling for various signal formats
- Initial release of Predictive Maintenance MCP Server
- Core vibration analysis tools (FFT, envelope, statistics)
- Basic MCP server implementation with FastMCP
- Sample signal generation
- Initial documentation and examples
- 📦 Docker image for zero-install setup
- 📏 Customizable ISO report thresholds
- Multi-signal comparison tools
- Advanced trending and monitoring
- Additional diagnostic workflows (pumps, motors, gearboxes)
- Extended dataset with more fault types
- Real-time signal streaming support
- Cloud integration options
- Dashboard for multi-asset monitoring
- Mobile-friendly report viewing
- Integration with industrial IoT platforms
- Multimodal diagnostics: Combine vibration, temperature, acoustic data