container-loading

Plan optimal container & truck loads: 3D layouts, utilization, centre of gravity, crush checks.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
98%
Naming quality
93%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,808Tokens (tool definitions)
~4.4 KBTypical response size
Significant attention impact (2.19% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "container-loading": {
      "url": "https://mcp.loadingmcp.com/mcp"
    }
  }
}

Remote endpoints

https://mcp.loadingmcp.com/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_equipment(category)

List the standard container, truck, ULD and pallet types LoadingMCP can plan loads into, with internal dimensions (mm) and max payload (kg).

Input Schema

{
  "type": "object",
  "properties": {
    "category": {
      "description": "Optional category filter",
      "type": "string",
      "enum": [
        "container",
        "truck",
        "uld",
        "pallet"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪suggest_containers(volumeM3, weightKg)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "volumeM3": {
      "type": "number",
      "description": "Total cargo volume in cubic metres"
    },
    "weightKg": {
      "type": "number",
      "description": "Total cargo weight in kilograms"
    }
  },
  "required": [
    "volumeM3",
    "weightKg"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢plan_load(equipmentCode, mode, items, vgm, jurisdiction, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "equipmentCode": {
      "description": "Equipment code, e.g. 40HC (see list_equipment). Omit to auto right-size.",
      "type": "string"
    },
    "mode": {
      "default": "sea",
      "description": "Transport mode — scopes auto right-size to usable equipment (sea→containers, road→trucks, air→ULDs). Ignored when equipmentCode is given.",
      "type": "string",
      "enum": [
        "sea",
        "road",
        "air"
      ]
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Your reference for this cargo line"
          },
          "type": {
            "default": "box",
            "description": "Cargo shape: drum/cylinder/roll hex-nest; bigbag/sack load on top, never crushed",
            "type": "string",
            "enum": [
              "box",
              "pallet",
              "drum",
              "cylinder",
              "bigbag",
              "roll",
              "sack"
            ]
          },
          "length": {
            "type": "number",
            "description": "mm"
          },
          "width": {
            "type": "number",
            "description": "mm"
          },
          "height": {
            "type": "number",
            "description": "mm"
          },
          "weight": {
            "type": "number",
            "description": "kg per unit"
          },
          "quantity": {
            "default": 1,
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          "stackable": {
            "default": true,
            "description": "Whether anything may be stacked on top",
            "type": "boolean"
          },
          "thisSideUp": {
            "default": false,
            "description": "Must stay upright — restricts the packer to upright orientations",
            "type": "boolean"
          },
          "bulky": {
            "default": false,
            "description": "Bulky/awkward — never takes a load on top and needs handling clearance",
            "type": "boolean"
          },
          "deliveryStop": {
            "description": "Multi-drop delivery-stop order (1 = first delivered, loaded last at the doors). ≥2 distinct stops + sequenceStops zones the load nose→doors.",
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          "refrigerated": {
            "default": false,
            "description": "Needs the cold chain (reefer only)",
            "type": "boolean"
          },
          "hazmatClass": {
            "description": "IMDG dangerous-goods class (e.g. \"3\", \"5.1\") — drives 7.2.4 segregation. Omit for non-hazardous.",
            "type": "string"
          },
          "unNumber": {
            "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 — no need to hand-enter each. Explicit DG fields override the derived ones.",
            "type": "string"
          },
          "packingGroup": {
            "description": "IMDG packing group. Derived from the UN number when unNumber is set.",
            "type": "string",
            "enum": [
              "I",
              "II",
              "III"
            ]
          },
          "marinePollutant": {
            "description": "Marine pollutant (IMDG 2.10 / MARPOL Annex III). Derived from the DGL.",
            "type": "boolean"
          },
          "limitedQuantity": {
            "description": "Shipped as a limited quantity (IMDG 3.4) — exempt from most segregation except vs class 1/7.",
            "type": "boolean"
          },
          "subsidiaryHazards": {
            "description": "IMDG subsidiary hazard classes, e.g. [\"6.1\", \"8\"].",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "segregationGroups": {
            "description": "IMDG 2.7.2.5 segregation groups this substance belongs to.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "segregateFromGroups": {
            "description": "IMDG segregation groups to keep this substance away from (its DGL column-16b provisions).",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "compatibilityGroup": {
            "description": "Class-1 explosives compatibility group (A–S).",
            "type": "string"
          },
          "maxStackWeightKg": {
            "description": "Your crush limit: max kg allowed on top of one unit. Omit for a generous default; 0 = nothing may stack on it.",
            "type": "number",
            "minimum": 0
          },
          "boardEctLbIn": {
            "description": "Corrugated edge-crush test (lb/in) → physical McKee crush limit for cartons",
            "type": "number",
            "exclusiveMinimum": 0
          },
          "boardCaliperMm": {
            "description": "Corrugated board thickness (mm)",
            "type": "number",
            "exclusiveMinimum": 0
          },
          "doubleWall": {
            "description": "Double-wall corrugated (vs single)",
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "length",
          "width",
          "height",
          "weight"
        ]
      },
      "description": "Cargo lines to load"
    },
    "vgm": {
      "description": "SOLAS Verified Gross Mass declaration (else a tare+cargo estimate is reported)",
      "type": "object",
      "properties": {
        "declaredKg": {
          "description": "Shipper-declared SOLAS VGM per container (kg), index-aligned to containers used",
          "type": "array",
          "items": {
            "type": "number",
            "minimum": 0
          }
        },
        "method": {
          "description": "VGM method: M1 = weighbridge of the packed container, M2 = certified calculated sum",
          "type": "string",
          "enum": [
            "M1",
            "M2"
          ]
        },
        "dunnageKg": {
          "description": "Dunnage/securing mass (kg) to fold into the calculated VGM estimate",
          "type": "number",
          "minimum": 0
        }
      }
    },
    "jurisdiction": {
      "description": "Road jurisdiction for the axle / gross-weight compliance check (default EU). Set CN for China GB 1589 drayage limits.",
      "type": "string",
      "enum": [
        "EU",
        "US",
        "CN"
      ]
    },
    "sequenceStops": {
      "default": false,
      "description": "Delivery-stop sequencing: with ≥2 distinct deliveryStop values, zone the load nose→doors in reverse delivery order.",
      "type": "boolean"
    },
    "vesselMotion": {
      "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.",
      "type": "object",
      "properties": {
        "lengthFraction": {
          "type": "number",
          "minimum": 0,
          "maximum": 1,
          "description": "Longitudinal stowage position as a fraction of ship length from the aft perpendicular (0=aft, 1=fore)."
        },
        "stowageZone": {
          "type": "string",
          "enum": [
            "onDeckHigh",
            "onDeckLow",
            "tweendeck",
            "lowerHold"
          ],
          "description": "Vertical stowage zone."
        },
        "lengthM": {
          "description": "Ship length between perpendiculars (m); with speedKn, derives the Annex 13 length/speed correction (50–300 m).",
          "type": "number",
          "exclusiveMinimum": 0
        },
        "speedKn": {
          "description": "Service speed (kn); pairs with lengthM.",
          "type": "number",
          "exclusiveMinimum": 0
        },
        "bOverGm": {
          "description": "Beam / metacentric-height ratio B/GM; derives the Annex 13 transverse B/GM correction.",
          "type": "number",
          "exclusiveMinimum": 0
        },
        "lengthSpeedFactor": {
          "description": "Explicit IMO CSS Annex 13 length/speed correction factor (fallback when lengthM/speedKn absent).",
          "type": "number",
          "exclusiveMinimum": 0
        },
        "bGmFactor": {
          "description": "Explicit IMO CSS Annex 13 B/GM correction factor (fallback when bOverGm absent).",
          "type": "number",
          "exclusiveMinimum": 0
        }
      },
      "required": [
        "lengthFraction",
        "stowageZone"
      ]
    }
  },
  "required": [
    "items"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢export_plan(equipmentCode, mode, retailers, items)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "equipmentCode": {
      "description": "Equipment code, e.g. 40HC (see list_equipment). Omit to auto right-size.",
      "type": "string"
    },
    "mode": {
      "default": "sea",
      "description": "Transport mode for auto right-size (ignored when equipmentCode is given).",
      "type": "string",
      "enum": [
        "sea",
        "road",
        "air"
      ]
    },
    "retailers": {
      "description": "Retailer inbound-packaging profiles to check the load against.",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "AMAZON_FBA",
          "WALMART_STORES",
          "WALMART_WFS",
          "GENERIC_GMA"
        ]
      }
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Your reference for this cargo line"
          },
          "type": {
            "default": "box",
            "type": "string",
            "enum": [
              "box",
              "pallet",
              "drum",
              "cylinder",
              "bigbag",
              "roll",
              "sack"
            ]
          },
          "length": {
            "type": "number",
            "description": "mm"
          },
          "width": {
            "type": "number",
            "description": "mm"
          },
          "height": {
            "type": "number",
            "description": "mm"
          },
          "weight": {
            "type": "number",
            "description": "kg per unit"
          },
          "quantity": {
            "default": 1,
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991
          },
          "stackable": {
            "default": true,
            "type": "boolean"
          },
          "hazmatClass": {
            "description": "IMDG class (e.g. \"3\", \"5.1\"); omit if none",
            "type": "string"
          },
          "unNumber": {
            "description": "UN number (e.g. \"UN1263\") — derives the IMDG class/PG/segregation/stowage/EmS from the DGL.",
            "type": "string"
          },
          "maxStackWeightKg": {
            "type": "number",
            "minimum": 0
          }
        },
        "required": [
          "id",
          "length",
          "width",
          "height",
          "weight"
        ]
      },
      "description": "Cargo lines to load"
    }
  },
  "required": [
    "items"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢import_packing_list(packingList)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "packingList": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "A loadingmcp.packing-list document: { format: \"loadingmcp.packing-list\", formatVersion, equipmentCode, jurisdiction?, lines: [...] }. See docs/INTEGRATION.md."
    }
  },
  "required": [
    "packingList"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪export_dg_paperwork(packingList)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "packingList": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "A loadingmcp.packing-list document with DG-bearing lines (unNumber/hazmatClass/packingGroup/marinePollutant). See docs/INTEGRATION.md."
    }
  },
  "required": [
    "packingList"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
verifiedversion not recorded6 tools