# prism-lca/life-cycle-assessment-mcp architecture

> Architecture diagram of the GitHub repository prism-lca/life-cycle-assessment-mcp, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/prism-lca/life-cycle-assessment-mcp
- Repository: https://github.com/prism-lca/life-cycle-assessment-mcp

## Overview

This repository provides an in-process life-cycle-assessment (LCA) service: users submit a product graph, the engine calculates inventory and impact results, and service modules expose search and visualizations. Separate interchange modules convert LCA datasets to and from several industry formats. The README is empty; relationships below are limited to those indicated by the source index and sampled source, so some possible runtime wiring is omitted.

Main entry points: [`lca_core/api.py`](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/api.py) (Service API), [`lca_core/engine.py`](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/engine.py) (LCA Engine), [`lca_core/interchange/archive.py`](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/archive.py) (ZIP Safety), [`lca_core/interchange/importer.py`](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/importer.py) (Format Dispatch)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_service["Service and API"]
  node_server["HTTP Server<br/>[lca_server.py]"]
  node_api["Service API<br/>[api.py]"]
  node_activity["Imported Activity"]
  node_jsonld["JSON-LD<br/>[jsonld.py]"]
  node_visualization["Visualization<br/>[visualization.py]"]
  node_renderer["SVG Renderer<br/>[svg_renderer.py]"]
end

subgraph group_calculation["LCA Calculation"]
  node_engine["LCA Engine<br/>[engine.py]"]
  node_contribution["Contribution Graph"]
  node_background_intensity["Background Intensity"]
  node_background_svg["Background SVG<br/>[background_svg.py]"]
  node_models["LCA Models<br/>[models.py]"]
end

subgraph group_data["Inventory and Search"]
  node_mockdb[("Mock Database<br/>[mock_database.py]")]
  node_search[("Inventory Search<br/>[search.py]")]
end

subgraph group_interchange["Interchange"]
  node_interchange_api["Format Dispatch<br/>[importer.py]"]
  node_format_export["Export Dispatch<br/>[exporter.py]"]
  node_archive["ZIP Safety<br/>[archive.py]"]
  node_bundle["Bundle Validation<br/>[bundle.py]"]
  node_ecospold["EcoSpold2<br/>[ecospold2.py]"]
  node_ilcd["ILCD Import<br/>[ilcd.py]"]
  node_ilcd_export["ILCD Export<br/>[ilcd_export.py]"]
  node_openlca["openLCA<br/>[openlca.py]"]
  node_simapro["SimaPro<br/>[simapro.py]"]
  node_tidas["TIDAS Import<br/>[tidas.py]"]
  node_tidas_export["TIDAS Export<br/>[tidas_export.py]"]
end

node_user(("User"))

node_user -.->|"submits requests"| node_server
node_server -->|"uses API"| node_api
node_api -->|"runs calculations"| node_engine
node_api -->|"queries inventory"| node_search
node_api -->|"requests rendering"| node_background_svg
node_api -->|"uses activity data"| node_activity
node_api -->|"uses JSON-LD"| node_jsonld
node_api -->|"builds visualizations"| node_visualization
node_engine -->|"uses models"| node_models
node_engine -->|"builds contributions"| node_contribution
node_engine -->|"uses database"| node_mockdb
node_engine -->|"uses inventory search"| node_search
node_engine -->|"attaches intensities"| node_background_intensity
node_visualization -->|"renders SVG"| node_renderer
node_interchange_api -->|"dispatches imports"| node_ecospold
node_interchange_api -->|"dispatches imports"| node_ilcd
node_interchange_api -->|"dispatches imports"| node_openlca
node_interchange_api -->|"dispatches imports"| node_simapro
node_interchange_api -->|"dispatches imports"| node_tidas
node_format_export -->|"dispatches exports"| node_ecospold
node_format_export -->|"dispatches exports"| node_ilcd_export
node_format_export -->|"dispatches exports"| node_openlca
node_format_export -->|"dispatches exports"| node_simapro
node_format_export -->|"dispatches exports"| node_tidas_export
node_ecospold -->|"uses ZIP handling"| node_archive
node_ecospold -->|"uses bundle helpers"| node_bundle
node_ilcd -->|"uses ZIP handling"| node_archive
node_ilcd_export -->|"uses ZIP handling"| node_archive
node_ilcd_export -->|"uses bundle helpers"| node_bundle
node_openlca -->|"uses ZIP handling"| node_archive
node_openlca -->|"uses bundle helpers"| node_bundle
node_simapro -->|"uses ZIP handling"| node_archive
node_simapro -->|"uses bundle helpers"| node_bundle
node_tidas -->|"uses ZIP handling"| node_archive
node_tidas_export -->|"uses ZIP handling"| node_archive
node_tidas_export -->|"uses bundle helpers"| node_bundle

click node_server "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_server.py"
click node_api "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/api.py"
click node_activity "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/imported_activity.py"
click node_jsonld "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/jsonld.py"
click node_visualization "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/visualization.py"
click node_renderer "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/svg_renderer.py"
click node_engine "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/engine.py"
click node_contribution "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/contribution_graph.py"
click node_background_intensity "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/background_intensity.py"
click node_background_svg "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/background_svg.py"
click node_models "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/models.py"
click node_mockdb "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/mock_database.py"
click node_search "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/search.py"
click node_interchange_api "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/importer.py"
click node_format_export "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/exporter.py"
click node_archive "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/archive.py"
click node_bundle "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/bundle.py"
click node_ecospold "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/ecospold2.py"
click node_ilcd "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/ilcd.py"
click node_ilcd_export "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/ilcd_export.py"
click node_openlca "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/openlca.py"
click node_simapro "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/simapro.py"
click node_tidas "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/tidas.py"
click node_tidas_export "https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/tidas_export.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_server,node_api,node_activity,node_jsonld,node_visualization,node_renderer,node_user toneBlue
class node_engine,node_contribution,node_background_intensity,node_background_svg,node_models toneAmber
class node_mockdb,node_search toneMint
class node_interchange_api,node_format_export,node_archive,node_bundle,node_ecospold,node_ilcd,node_ilcd_export,node_openlca,node_simapro,node_tidas,node_tidas_export toneRose
```

## Components

### Service and API

- [HTTP Server](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_server.py): `lca_server.py`
- [Service API](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/api.py): `lca_core/api.py`
- [Imported Activity](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/imported_activity.py): `lca_core/imported_activity.py`
- [JSON-LD](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/jsonld.py): `lca_core/jsonld.py`
- [Visualization](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/visualization.py): `lca_core/visualization.py`
- [SVG Renderer](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/svg_renderer.py): `lca_core/svg_renderer.py`

### LCA Calculation

- [LCA Engine](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/engine.py): `lca_core/engine.py`
- [Contribution Graph](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/contribution_graph.py): `lca_core/contribution_graph.py`
- [Background Intensity](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/background_intensity.py): `lca_core/background_intensity.py`
- [Background SVG](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/background_svg.py): `lca_core/background_svg.py`
- [LCA Models](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/models.py): `lca_core/models.py`

### Inventory and Search

- [Mock Database](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/mock_database.py): `lca_core/mock_database.py`
- [Inventory Search](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/search.py): `lca_core/search.py`

### Interchange

- [Format Dispatch](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/importer.py): `lca_core/interchange/importer.py`
- [Export Dispatch](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/exporter.py): `lca_core/interchange/exporter.py`
- [ZIP Safety](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/archive.py): `lca_core/interchange/archive.py`
- [Bundle Validation](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/bundle.py): `lca_core/interchange/bundle.py`
- [EcoSpold2](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/ecospold2.py): `lca_core/interchange/ecospold2.py`
- [ILCD Import](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/ilcd.py): `lca_core/interchange/ilcd.py`
- [ILCD Export](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/ilcd_export.py): `lca_core/interchange/ilcd_export.py`
- [openLCA](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/openlca.py): `lca_core/interchange/openlca.py`
- [SimaPro](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/simapro.py): `lca_core/interchange/simapro.py`
- [TIDAS Import](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/tidas.py): `lca_core/interchange/tidas.py`
- [TIDAS Export](https://github.com/prism-lca/life-cycle-assessment-mcp/blob/main/lca_core/interchange/tidas_export.py): `lca_core/interchange/tidas_export.py`

### Other components

- **User**

## Connections

- User → HTTP Server: submits requests
- HTTP Server → Service API: uses API (evidence: `lca_server.py`)
- Service API → LCA Engine: runs calculations (evidence: `lca_core/api.py`)
- Service API → Inventory Search: queries inventory (evidence: `lca_core/api.py`)
- Service API → Background SVG: requests rendering (evidence: `lca_core/api.py`)
- Service API → Imported Activity: uses activity data (evidence: `lca_core/api.py`)
- Service API → JSON-LD: uses JSON-LD (evidence: `lca_core/api.py`)
- Service API → Visualization: builds visualizations (evidence: `lca_core/api.py`)
- LCA Engine → LCA Models: uses models (evidence: `lca_core/engine.py`)
- LCA Engine → Contribution Graph: builds contributions (evidence: `lca_core/engine.py`)
- LCA Engine → Mock Database: uses database (evidence: `lca_core/engine.py`)
- LCA Engine → Inventory Search: uses inventory search (evidence: `lca_core/engine.py`)
- LCA Engine → Background Intensity: attaches intensities (evidence: `lca_core/engine.py`)
- Visualization → SVG Renderer: renders SVG (evidence: `lca_core/visualization.py`)
- Format Dispatch → EcoSpold2: dispatches imports (evidence: `lca_core/interchange/importer.py`)
- Format Dispatch → ILCD Import: dispatches imports (evidence: `lca_core/interchange/importer.py`)
- Format Dispatch → openLCA: dispatches imports (evidence: `lca_core/interchange/importer.py`)
- Format Dispatch → SimaPro: dispatches imports (evidence: `lca_core/interchange/importer.py`)
- Format Dispatch → TIDAS Import: dispatches imports (evidence: `lca_core/interchange/importer.py`)
- Export Dispatch → EcoSpold2: dispatches exports (evidence: `lca_core/interchange/exporter.py`)
- Export Dispatch → ILCD Export: dispatches exports (evidence: `lca_core/interchange/exporter.py`)
- Export Dispatch → openLCA: dispatches exports (evidence: `lca_core/interchange/exporter.py`)
- Export Dispatch → SimaPro: dispatches exports (evidence: `lca_core/interchange/exporter.py`)
- Export Dispatch → TIDAS Export: dispatches exports (evidence: `lca_core/interchange/exporter.py`)
- EcoSpold2 → ZIP Safety: uses ZIP handling (evidence: `lca_core/interchange/ecospold2.py`)
- EcoSpold2 → Bundle Validation: uses bundle helpers (evidence: `lca_core/interchange/ecospold2.py`)
- ILCD Import → ZIP Safety: uses ZIP handling (evidence: `lca_core/interchange/ilcd.py`)
- ILCD Export → ZIP Safety: uses ZIP handling (evidence: `lca_core/interchange/ilcd_export.py`)
- ILCD Export → Bundle Validation: uses bundle helpers (evidence: `lca_core/interchange/ilcd_export.py`)
- openLCA → ZIP Safety: uses ZIP handling (evidence: `lca_core/interchange/openlca.py`)
- openLCA → Bundle Validation: uses bundle helpers (evidence: `lca_core/interchange/openlca.py`)
- SimaPro → ZIP Safety: uses ZIP handling (evidence: `lca_core/interchange/simapro.py`)
- SimaPro → Bundle Validation: uses bundle helpers (evidence: `lca_core/interchange/simapro.py`)
- TIDAS Import → ZIP Safety: uses ZIP handling (evidence: `lca_core/interchange/tidas.py`)
- TIDAS Export → ZIP Safety: uses ZIP handling (evidence: `lca_core/interchange/tidas_export.py`)
- TIDAS Export → Bundle Validation: uses bundle helpers (evidence: `lca_core/interchange/tidas_export.py`)
