Serveur MCP

container-loading

io.github.lxxmng/container-loading
Entreprise et opérations Commerce et retail Public et accessible MCP 2025-11-25

Ce que fait ce MCP

Plans and exports optimized container and truck loads with 3D placement, utilization, weight distribution, securing checks, and dangerous-goods paperwork.

export_dg_paperwork
Draft the dangerous-goods paperwork for a load from its cargo lines: an IMDG 5.4.1 transport-document description per DG line (UN, proper shipping name, class, PG, marine pollutant), the 5.3 placards + marks required, and the 5.4.2 container/vehicle packing-certificate statements. Input is a "loadingmcp.packing-list" document. This is a DRAFT from the curated DGL — it lists the fields a DG-competent person must still complete (flash point, net explosive mass, unverified PSN) and is never signed.
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['packingList'], 'properties': {'packingList': {'type': 'object', 'description': 'A loadingmcp.packing-list document with DG-bearing lines (unNumber/hazmatClass/packingGroup/marinePollutant). See docs/INTEGRATION.md.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}}
export_plan
Export a load as a machine-readable LOADING WORK ORDER: a numbered stuffing sequence (which SKU, where, in what order and orientation), the securing/bracing action list, the key declarable figures (VGM, axle load, centre of gravity), and an optional per-retailer inbound-packaging check (Amazon FBA / Walmart). Feed it to a WES/TMS, a robotic palletiser, or a printable worker sheet. This is decision support to MEET published retailer/carrier specs — verify in your own portal; it is not a retailer certification.
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'mode': {'enum': ['sea', 'road', 'air'], 'type': 'string', 'default': 'sea', 'description': 'Transport mode for auto right-size (ignored when equipmentCode is given).'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'length', 'width', 'height', 'weight'], 'properties': {'id': {'type': 'string', 'description': 'Your reference for this cargo line'}, 'type': {'enum': ['box', 'pallet', 'drum', 'cylinder', 'bigbag', 'roll', 'sack'], 'type': 'string', 'default': 'box'}, 'width': {'type': 'number', 'description': 'mm'}, 'height': {'type': 'number', 'description': 'mm'}, 'length': {'type': 'number', 'description': 'mm'}, 'weight': {'type': 'number', 'description': 'kg per unit'}, 'quantity': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'unNumber': {'type': 'string', 'description': 'UN number (e.g. "UN1263") â\x80\x94 derives the IMDG class/PG/segregation/stowage/EmS from the DGL.'}, 'stackable': {'type': 'boolean', 'default': True}, 'hazmatClass': {'type': 'string', 'description': 'IMDG class (e.g. "3", "5.1"); omit if none'}, 'maxStackWeightKg': {'type': 'number', 'minimum': 0}}}, 'description': 'Cargo lines to load'}, 'retailers': {'type': 'array', 'items': {'enum': ['AMAZON_FBA', 'WALMART_STORES', 'WALMART_WFS', 'GENERIC_GMA'], 'type': 'string'}, 'description': 'Retailer inbound-packaging profiles to check the load against.'}, 'equipmentCode': {'type': 'string', 'description': 'Equipment code, e.g. 40HC (see list_equipment). Omit to auto right-size.'}}}
import_packing_list
ERP/TMS on-ramp: take a versioned "loadingmcp.packing-list" document (a WMS/ERP export — cargo lines + equipmentCode) and return a load plan + a container manifest. Parsing is fail-explicit: an invalid document returns the exact per-line issues, never a silently-dropped row. Pairs with plan_load's output for a full round-trip.
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['packingList'], 'properties': {'packingList': {'type': 'object', 'description': 'A loadingmcp.packing-list document: { format: "loadingmcp.packing-list", formatVersion, equipmentCode, jurisdiction?, lines: [...] }. See docs/INTEGRATION.md.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}}
list_equipment
List the standard container, truck, ULD and pallet types LoadingMCP can plan loads into, with internal dimensions (mm) and max payload (kg).
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'category': {'enum': ['container', 'truck', 'uld', 'pallet'], 'type': 'string', 'description': 'Optional category filter'}}}
plan_load
Compute a 3D load plan for cargo into a container or truck: containers used, utilization (volume & payload %), centre of gravity, crush-protection violations, and a securing checklist (round cargo that rolls, soft cargo that slumps). Cargo `type` drives realism — drums/pipes hex-nest, big bags/sacks load on top and are never crushed. Omit `equipmentCode` to auto right-size to the cheapest container that fits. A real API key runs the production PackingSolver optimizer; the public demo key uses the offline preview packer.
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['items'], 'properties': {'vgm': {'type': 'object', 'properties': {'method': {'enum': ['M1', 'M2'], 'type': 'string', 'description': 'VGM method: M1 = weighbridge of the packed container, M2 = certified calculated sum'}, 'dunnageKg': {'type': 'number', 'minimum': 0, 'description': 'Dunnage/securing mass (kg) to fold into the calculated VGM estimate'}, 'declaredKg': {'type': 'array', 'items': {'type': 'number', 'minimum': 0}, 'description': 'Shipper-declared SOLAS VGM per container (kg), index-aligned to containers used'}}, 'description': 'SOLAS Verified Gross Mass declaration (else a tare+cargo estimate is reported)'}, 'mode': {'enum': ['sea', 'road', 'air'], 'type': 'string', 'default': 'sea', 'description': 'Transport mode â\x80\x94 scopes auto right-size to usable equipment (seaâ\x86\x92containers, roadâ\x86\x92trucks, airâ\x86\x92ULDs). Ignored when equipmentCode is given.'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'length', 'width', 'height', 'weight'], 'properties': {'id': {'type': 'string', 'description': 'Your reference for this cargo line'}, 'type': {'enum': ['box', 'pallet', 'drum', 'cylinder', 'bigbag', 'roll', 'sack'], 'type': 'string', 'default': 'box', 'description': 'Cargo shape: drum/cylinder/roll hex-nest; bigbag/sack load on top, never crushed'}, 'bulky': {'type': 'boolean', 'default': False, 'description': 'Bulky/awkward â\x80\x94 never takes a load on top and needs handling clearance'}, 'width': {'type': 'number', 'description': 'mm'}, 'height': {'type': 'number', 'description': 'mm'}, 'length': {'type': 'number', 'description': 'mm'}, 'weight': {'type': 'number', 'description': 'kg per unit'}, 'quantity': {'type': 'integer', 'default': 1, 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'unNumber': {'type': 'string', 'description': 'UN number, e.g. "UN1263" or "1263". When set, the engine DERIVES the IMDG class, packing group, subsidiary risks, marine-pollutant status, segregation groups, stowage category and EmS from the curated Dangerous Goods List â\x80\x94 no need to hand-enter each. Explicit DG fields override the derived ones.'}, 'stackable': {'type': 'boolean', 'default': True, 'description': 'Whether anything may be stacked on top'}, 'doubleWall': {'type': 'boolean', 'description': 'Double-wall corrugated (vs single)'}, 'thisSideUp': {'type': 'boolean', 'default': False, 'description': 'Must stay upright â\x80\x94 restricts the packer to upright orientations'}, 'hazmatClass': {'type': 'string', 'description': 'IMDG dangerous-goods class (e.g. "3", "5.1") â\x80\x94 drives 7.2.4 segregation. Omit for non-hazardous.'}, 'boardEctLbIn': {'type': 'number', 'description': 'Corrugated edge-crush test (lb/in) â\x86\x92 physical McKee crush limit for cartons', 'exclusiveMinimum': 0}, 'deliveryStop': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Multi-drop delivery-stop order (1 = first delivered, loaded last at the doors). â\x89¥2 distinct stops + sequenceStops zones the load noseâ\x86\x92doors.', 'exclusiveMinimum': 0}, 'packingGroup': {'enum': ['I', 'II', 'III'], 'type': 'string', 'description': 'IMDG packing group. Derived from the UN number when unNumber is set.'}, 'refrigerated': {'type': 'boolean', 'default': False, 'description': 'Needs the cold chain (reefer only)'}, 'boardCaliperMm': {'type': 'number', 'description': 'Corrugated board thickness (mm)', 'exclusiveMinimum': 0}, 'limitedQuantity': {'type': 'boolean', 'description': 'Shipped as a limited quantity (IMDG 3.4) â\x80\x94 exempt from most segregation except vs class 1/7.'}, 'marinePollutant': {'type': 'boolean', 'description': 'Marine pollutant (IMDG 2.10 / MARPOL Annex III). Derived from the DGL.'}, 'maxStackWeightKg': {'type': 'number', 'minimum': 0, 'description': 'Your crush limit: max kg allowed on top of one unit. Omit for a generous default; 0 = nothing may stack on it.'}, 'segregationGroups': {'type': 'array', 'items': {'type': 'string'}, 'description': 'IMDG 2.7.2.5 segregation groups this substance belongs to.'}, 'subsidiaryHazards': {'type': 'array', 'items': {'type': 'string'}, 'description': 'IMDG subsidiary hazard classes, e.g. ["6.1", "8"].'}, 'compatibilityGroup': {'type': 'string', 'description': 'Class-1 explosives compatibility group (Aâ\x80\x93S).'}, 'segregateFromGroups': {'type': 'array', 'items': {'type': 'string'}, 'description': 'IMDG segregation groups to keep this substance away from (its DGL column-16b provisions).'}}}, 'description': 'Cargo lines to load'}, 'jurisdiction': {'enum': ['EU', 'US', 'CN'], 'type': 'string', 'description': 'Road jurisdiction for the axle / gross-weight compliance check (default EU). Set CN for China GB 1589 drayage limits.'}, 'vesselMotion': {'type': 'object', 'required': ['lengthFraction', 'stowageZone'], 'properties': {'bOverGm': {'type': 'number', 'description': 'Beam / metacentric-height ratio B/GM; derives the Annex 13 transverse B/GM correction.', 'exclusiveMinimum': 0}, 'lengthM': {'type': 'number', 'description': 'Ship length between perpendiculars (m); with speedKn, derives the Annex 13 length/speed correction (50â\x80\x93300 m).', 'exclusiveMinimum': 0}, 'speedKn': {'type': 'number', 'description': 'Service speed (kn); pairs with lengthM.', 'exclusiveMinimum': 0}, 'bGmFactor': {'type': 'number', 'description': 'Explicit IMO CSS Annex 13 B/GM correction factor (fallback when bOverGm absent).', 'exclusiveMinimum': 0}, 'stowageZone': {'enum': ['onDeckHigh', 'onDeckLow', 'tweendeck', 'lowerHold'], 'type': 'string', 'description': 'Vertical stowage zone.'}, 'lengthFraction': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Longitudinal stowage position as a fraction of ship length from the aft perpendicular (0=aft, 1=fore).'}, 'lengthSpeedFactor': {'type': 'number', 'description': 'Explicit IMO CSS Annex 13 length/speed correction factor (fallback when lengthM/speedKn absent).', 'exclusiveMinimum': 0}}, 'description': 'IMO CSS Annex 13 vessel motion + stowage position. When set, the sea leg uses the position-dependent DYNAMIC acceleration field (a container on deck forward sees a far harsher case than one low amidships) instead of the flat sea-area coefficient.'}, 'equipmentCode': {'type': 'string', 'description': 'Equipment code, e.g. 40HC (see list_equipment). Omit to auto right-size.'}, 'sequenceStops': {'type': 'boolean', 'default': False, 'description': 'Delivery-stop sequencing: with â\x89¥2 distinct deliveryStop values, zone the load noseâ\x86\x92doors in reverse delivery order.'}}}
suggest_containers
Given total cargo volume (m³) and weight (kg), suggest how many of which container to use — a quick volume/weight estimate. For an exact, dimension-aware plan with utilization, CoG and securing, use plan_load (which can also auto right-size).
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['volumeM3', 'weightKg'], 'properties': {'volumeM3': {'type': 'number', 'description': 'Total cargo volume in cubic metres'}, 'weightKg': {'type': 'number', 'description': 'Total cargo weight in kilograms'}}}
Ajouté
export_dg_paperwork
17 September 2026 12:43
Ajouté
import_packing_list
17 September 2026 12:43
Ajouté
export_plan
17 September 2026 12:43
Ajouté
plan_load
17 September 2026 12:43
Ajouté
suggest_containers
17 September 2026 12:43
Ajouté
list_equipment
17 September 2026 12:43