# lgdimaggio/predictive-maintenance-mcp architecture

> Architecture diagram of the GitHub repository lgdimaggio/predictive-maintenance-mcp, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/lgdimaggio/predictive-maintenance-mcp
- Repository: https://github.com/lgdimaggio/predictive-maintenance-mcp

## Overview

This is a local predictive-maintenance MCP server for reliability engineers: an assistant loads vibration data, requests spectral and fault analysis, reviews ISO severity and evidence, and can generate a diagnostic report. Separate tool families expose acquisition, analysis, diagnosis, decision support, asset history, prognostics, and reporting. The graph preserves these README capabilities; sampled source confirms the signal cache, spectral functions, diagnosis pipeline, ISO assessment, and asset-ledger roles. Some tool-to-subsystem wiring is inferred from documented responsibilities rather than inspected handler bodies.

Main entry points: [`src/server.py`](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/server.py) (MCP Server), [`src/mcp_tools/diagnostics_tools.py`](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/mcp_tools/diagnostics_tools.py) (Diagnostic Tools), [`src/decision_support/diagnosis_pipeline.py`](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/decision_support/diagnosis_pipeline.py) (Diagnosis Pipeline), [`src/signal_acquisition/repository.py`](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/signal_acquisition/repository.py) (Signal Cache)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["MCP Interface"]
  node_mcp_server["MCP Server<br/>[server.py]"]
  node_acquisition_tools["Acquisition Tools"]
  node_analysis_tools["Analysis Tools<br/>[analysis_tools.py]"]
  node_diagnostics_tools["Diagnostic Tools"]
  node_asset_tools["Asset Tools<br/>[asset_tools.py]"]
  node_decision_tools["Decision Tools"]
  node_prognostics_tools["Prognostic Tools"]
  node_report_tools["Report Tools<br/>[report_tools.py]"]
end

subgraph group_diagnostics["Signal Diagnostics"]
  node_signal_repository[("Signal Cache<br/>[repository.py]")]
  node_signal_loaders["Signal Loaders<br/>[loaders.py]"]
  node_spectral["Spectral Analysis<br/>[spectral.py]"]
  node_features["Feature Extraction<br/>[features.py]"]
  node_diagnosis_pipeline["Diagnosis Pipeline"]
  node_bearing_analysis["Bearing Analysis"]
  node_bearing_catalog[("Bearing Catalog<br/>[bearing_catalog.py]")]
  node_iso_severity["ISO Severity<br/>[iso20816.py]"]
  node_document_reader["Manual Reader<br/>[document_reader.py]"]
  node_rag["Manual Search<br/>[rag.py]"]
end

subgraph group_history["Asset History"]
  node_ledger_service["Ledger Service<br/>[service.py]"]
  node_ledger_store[("Asset Ledger<br/>[store.py]")]
  node_asset_assessment["Change Assessment<br/>[assessment.py]"]
  node_snapshot["Health Snapshot<br/>[snapshot.py]"]
end

subgraph group_outputs["Decision and Reports"]
  node_recommendations["Recommendations<br/>[recommendations.py]"]
  node_alerts["Alerts<br/>[alerts.py]"]
  node_trend["Trend Analysis<br/>[trend_analyzer.py]"]
  node_rul["RUL Estimation<br/>[rul_estimator.py]"]
  node_report_generator["Report Generation"]
  node_html_templates["Report Templates<br/>[html_templates.py]"]
  node_report["Diagnostic Report"]
end

node_engineer(("Reliability Engineer"))
node_assistant(("AI Assistant"))

node_engineer -->|"requests analysis"| node_assistant
node_assistant -->|"invokes tools"| node_mcp_server
node_mcp_server -->|"dispatches"| node_acquisition_tools
node_mcp_server -->|"dispatches"| node_analysis_tools
node_mcp_server -->|"dispatches"| node_diagnostics_tools
node_mcp_server -->|"dispatches"| node_asset_tools
node_mcp_server -->|"dispatches"| node_decision_tools
node_mcp_server -->|"dispatches"| node_prognostics_tools
node_mcp_server -->|"dispatches"| node_report_tools
node_acquisition_tools -->|"loads signals"| node_signal_repository
node_signal_repository -->|"reads files"| node_signal_loaders
node_analysis_tools -->|"gets signal"| node_signal_repository
node_analysis_tools -->|"analyzes spectrum"| node_spectral
node_diagnostics_tools -->|"runs diagnosis"| node_diagnosis_pipeline
node_diagnosis_pipeline -->|"computes spectra"| node_spectral
node_diagnosis_pipeline -->|"checks faults"| node_bearing_analysis
node_diagnosis_pipeline -->|"assesses severity"| node_iso_severity
node_diagnosis_pipeline -->|"extracts features"| node_features
node_bearing_analysis -->|"looks up specs"| node_bearing_catalog
node_diagnostics_tools -->|"reads manuals"| node_document_reader
node_diagnostics_tools -->|"searches manuals"| node_rag
node_diagnostics_tools -->|"gets signal"| node_signal_repository
node_asset_tools -->|"manages history"| node_ledger_service
node_ledger_service -->|"reads and writes"| node_ledger_store
node_ledger_service -->|"records health"| node_snapshot
node_asset_tools -->|"compares baseline"| node_asset_assessment
node_asset_assessment -->|"reads history"| node_ledger_store
node_decision_tools -->|"requests advice"| node_recommendations
node_decision_tools -->|"checks alerts"| node_alerts
node_prognostics_tools -->|"analyzes trends"| node_trend
node_prognostics_tools -->|"estimates life"| node_rul
node_report_tools -->|"generates report"| node_report_generator
node_report_generator -->|"renders with"| node_html_templates
node_report_generator -->|"produces"| node_report
node_report_tools -->|"gets signal"| node_signal_repository
node_assistant -->|"presents evidence"| node_engineer

click node_mcp_server "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/server.py"
click node_acquisition_tools "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/mcp_tools/acquisition_tools.py"
click node_analysis_tools "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/mcp_tools/analysis_tools.py"
click node_diagnostics_tools "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/mcp_tools/diagnostics_tools.py"
click node_asset_tools "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/mcp_tools/asset_tools.py"
click node_decision_tools "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/mcp_tools/decision_support_tools.py"
click node_prognostics_tools "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/mcp_tools/prognostics_tools.py"
click node_report_tools "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/mcp_tools/report_tools.py"
click node_signal_repository "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/signal_acquisition/repository.py"
click node_signal_loaders "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/signal_acquisition/loaders.py"
click node_spectral "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/signal_processing/spectral.py"
click node_features "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/signal_processing/features.py"
click node_diagnosis_pipeline "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/decision_support/diagnosis_pipeline.py"
click node_bearing_analysis "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/diagnostics/bearing_analyzer.py"
click node_bearing_catalog "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/diagnostics/bearing_catalog.py"
click node_iso_severity "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/diagnostics/iso20816.py"
click node_document_reader "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/document_reader.py"
click node_rag "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/rag.py"
click node_ledger_service "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/asset_ledger/service.py"
click node_ledger_store "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/asset_ledger/store.py"
click node_asset_assessment "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/asset_ledger/assessment.py"
click node_snapshot "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/asset_ledger/snapshot.py"
click node_recommendations "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/decision_support/recommendations.py"
click node_alerts "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/decision_support/alerts.py"
click node_trend "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/prognostics/trend_analyzer.py"
click node_rul "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/prognostics/rul_estimator.py"
click node_report_generator "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/report_generator.py"
click node_html_templates "https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/html_templates.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_mcp_server,node_acquisition_tools,node_analysis_tools,node_diagnostics_tools,node_asset_tools,node_decision_tools,node_prognostics_tools,node_report_tools toneBlue
class node_signal_repository,node_signal_loaders,node_spectral,node_features,node_diagnosis_pipeline,node_bearing_analysis,node_bearing_catalog,node_iso_severity,node_document_reader,node_rag toneAmber
class node_ledger_service,node_ledger_store,node_asset_assessment,node_snapshot toneMint
class node_recommendations,node_alerts,node_trend,node_rul,node_report_generator,node_html_templates,node_report toneRose
class node_engineer,node_assistant toneIndigo
```

## Components

### MCP Interface

- [MCP Server](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/server.py): `src/server.py`
- [Acquisition Tools](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/mcp_tools/acquisition_tools.py): `src/mcp_tools/acquisition_tools.py`
- [Analysis Tools](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/mcp_tools/analysis_tools.py): `src/mcp_tools/analysis_tools.py`
- [Diagnostic Tools](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/mcp_tools/diagnostics_tools.py): `src/mcp_tools/diagnostics_tools.py`
- [Asset Tools](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/mcp_tools/asset_tools.py): `src/mcp_tools/asset_tools.py`
- [Decision Tools](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/mcp_tools/decision_support_tools.py): `src/mcp_tools/decision_support_tools.py`
- [Prognostic Tools](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/mcp_tools/prognostics_tools.py): `src/mcp_tools/prognostics_tools.py`
- [Report Tools](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/mcp_tools/report_tools.py): `src/mcp_tools/report_tools.py`

### Signal Diagnostics

- [Signal Cache](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/signal_acquisition/repository.py): `src/signal_acquisition/repository.py`
- [Signal Loaders](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/signal_acquisition/loaders.py): `src/signal_acquisition/loaders.py`
- [Spectral Analysis](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/signal_processing/spectral.py): `src/signal_processing/spectral.py`
- [Feature Extraction](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/signal_processing/features.py): `src/signal_processing/features.py`
- [Diagnosis Pipeline](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/decision_support/diagnosis_pipeline.py): `src/decision_support/diagnosis_pipeline.py`
- [Bearing Analysis](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/diagnostics/bearing_analyzer.py): `src/diagnostics/bearing_analyzer.py`
- [Bearing Catalog](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/diagnostics/bearing_catalog.py): `src/diagnostics/bearing_catalog.py`
- [ISO Severity](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/diagnostics/iso20816.py): `src/diagnostics/iso20816.py`
- [Manual Reader](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/document_reader.py): `src/document_reader.py`
- [Manual Search](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/rag.py): `src/rag.py`

### Asset History

- [Ledger Service](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/asset_ledger/service.py): `src/asset_ledger/service.py`
- [Asset Ledger](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/asset_ledger/store.py): `src/asset_ledger/store.py`
- [Change Assessment](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/asset_ledger/assessment.py): `src/asset_ledger/assessment.py`
- [Health Snapshot](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/asset_ledger/snapshot.py): `src/asset_ledger/snapshot.py`

### Decision and Reports

- [Recommendations](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/decision_support/recommendations.py): `src/decision_support/recommendations.py`
- [Alerts](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/decision_support/alerts.py): `src/decision_support/alerts.py`
- [Trend Analysis](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/prognostics/trend_analyzer.py): `src/prognostics/trend_analyzer.py`
- [RUL Estimation](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/prognostics/rul_estimator.py): `src/prognostics/rul_estimator.py`
- [Report Generation](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/report_generator.py): `src/report_generator.py`
- [Report Templates](https://github.com/lgdimaggio/predictive-maintenance-mcp/blob/main/src/html_templates.py): `src/html_templates.py`
- **Diagnostic Report**

### Other components

- **Reliability Engineer**
- **AI Assistant**

## Connections

- Reliability Engineer → AI Assistant: requests analysis
- AI Assistant → MCP Server: invokes tools
- MCP Server → Acquisition Tools: dispatches
- MCP Server → Analysis Tools: dispatches
- MCP Server → Diagnostic Tools: dispatches
- MCP Server → Asset Tools: dispatches
- MCP Server → Decision Tools: dispatches
- MCP Server → Prognostic Tools: dispatches
- MCP Server → Report Tools: dispatches
- Acquisition Tools → Signal Cache: loads signals
- Signal Cache → Signal Loaders: reads files
- Analysis Tools → Signal Cache: gets signal
- Analysis Tools → Spectral Analysis: analyzes spectrum
- Diagnostic Tools → Diagnosis Pipeline: runs diagnosis
- Diagnosis Pipeline → Spectral Analysis: computes spectra
- Diagnosis Pipeline → Bearing Analysis: checks faults
- Diagnosis Pipeline → ISO Severity: assesses severity
- Diagnosis Pipeline → Feature Extraction: extracts features
- Bearing Analysis → Bearing Catalog: looks up specs
- Diagnostic Tools → Manual Reader: reads manuals
- Diagnostic Tools → Manual Search: searches manuals
- Diagnostic Tools → Signal Cache: gets signal
- Asset Tools → Ledger Service: manages history
- Ledger Service → Asset Ledger: reads and writes
- Ledger Service → Health Snapshot: records health
- Asset Tools → Change Assessment: compares baseline
- Change Assessment → Asset Ledger: reads history
- Decision Tools → Recommendations: requests advice
- Decision Tools → Alerts: checks alerts
- Prognostic Tools → Trend Analysis: analyzes trends
- Prognostic Tools → RUL Estimation: estimates life
- Report Tools → Report Generation: generates report
- Report Generation → Report Templates: renders with
- Report Generation → Diagnostic Report: produces
- Report Tools → Signal Cache: gets signal
- AI Assistant → Reliability Engineer: presents evidence
