Packing List

io.github.theluckystrikePublished by GitHub account theluckystrikev0.22.8Updated Oct 25, 2026

Packing slips: cartons, contents, weights, chargeable weight and what is still to pack.

VerifiedStreamable HTTPWeb executableProductivity & WorkflowBusiness & Commerce

Overview

AI-generated overview

Creates and tracks shipment packing lists: cartons, packed items, weights, chargeable weight and shortfalls, plus a printable packing slip.

What you can do
Create and manage packing lists against an order reference, consignee, destination and date, and list or filter them by status, order or consignee, or delete drafts and unshipped lists. Declare ordered lines, add cartons with tare weight and optional dimensions, pack or unpack items with per-unit weights. Review a whole list with cartons, contents, derived weights, shortfall and readiness to ship. Report per-carton and shipment tare, net, gross, volume, volumetric and chargeable weight. Compare ordered against packed to find short, over-packed and unordered items. Move a list from draft to packed to shipped (recording carrier and tracking) or cancel it, and produce a plain-text packing slip.
When to use it
Useful when you pack physical shipments and want an assistant to keep the box contents, weights and shortfall straight, and to produce a packing slip without prices. Suits small fulfilment, warehouse or e-commerce workflows where chargeable weight and what is still to pack matter.
Requirements
Runs as a remote endpoint or as a local process (a .mcpb bundle for Claude Desktop; the npm package is not yet published, so building from source is needed). A bearer token is required in the Authorization header; a Pro license key can be supplied via MCP_LICENSE_KEY or license_activate. Data is stored locally on the local install.
Before you install
The free tier allows only 3 open packing lists at once. Shipping freezes a list permanently and shipped lists cannot be edited, reopened or deleted; deleting a list removes its cartons and packed lines for good. Pro features and the file-writing slip need a paid license key. The README states the server makes no network calls and needs no account.

Installation

In SourceWeft

  1. Open Packing List in the dashboard and add it to a workspace.
  2. Connect Authorization token credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.theluckystrike%2Fpacking-list/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "packing-list": {
      "type": "http",
      "url": "https://mcp.zovo.one/mcp/packing-slip",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

mcp-packing-list

[theluckystrike/mcp-packing-list MCP server]

In the official MCP Registry (io.github.theluckystrike/packing-list). The packing slip for a shipment, and the answer to the only two questions anybody asks while packing one: what is in which box, and what is still to pack. A packing list is raised against an order you name, the lines that order says should ship are declared on it, cartons are added with a tare weight and their outside dimensions, and goods go into cartons one call at a time. packing_shortfall then reports every line as short, complete, over-packed, or packed and not on the order at all. carton_report gives the tare, net, gross, volume, volumetric and chargeable weight per carton and for the shipment.

That is not a simplification, it is what the document is for: it travels inside the box, and the consignee's warehouse is not the party that sees what the goods cost. The invoice against the same order is a different document and lives in @theluckystrike/mcp-invoice. There is no money arithmetic in this server at all, and a test asserts there is not.

Mass is in whole grams everywhere and dimensions in whole centimetres, for the same reason money is in minor units: a kilogram carried as a float accumulates error over a hundred lines and then disagrees with the carrier's scale.

Nothing derived is stored. A record holds its cartons, its declared order lines and its packed lines; every weight and the whole shortfall are computed on the call. A stored gross weight is a second copy of what the lines already say, and it is the copy that gets believed after somebody unpacks a line.

The chargeable weight, which is the number that costs money

Couriers bill the greater of what a box weighs and what its volume is worth. The volumetric weight is length x width x height / divisor, in centimetres, and the divisor is a tariff term: 5000 cm3/kg is the courier air default, 6000 the older IATA air figure, 4000 appears on some road tariffs. It is a parameter on every tool that reports it and never a constant inside a formula, because a chargeable weight computed against the wrong divisor is a carrier invoice nobody catches until the account is reconciled.

Two refusals matter here and both are deliberate:

  • A carton with only two of its three dimensions is refused outright. Two of three cannot make a volume, and a partially measured box would drop silently out of the shipment total.
  • If any carton has no dimensions at all, the shipment's volumetric and chargeable totals come back as null, never as a total that quietly skipped three boxes.

Install

One-click (.mcpb): download packing-list.mcpb from the latest release and double-click it in Claude Desktop: https://github.com/theluckystrike/mcp-servers/releases/latest

npm publish for @theluckystrike/mcp-packing-list is pending, so the npx line below returns 404 today. Build from source in the meantime; see llms-install.md.

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

json
{  "mcpServers": {    "packing-list": {      "command": "npx",      "args": ["-y", "@theluckystrike/mcp-packing-list"]    }  }}

Claude Code

sh
claude mcp add packing-list -- npx -y @theluckystrike/mcp-packing-list

Cursor

~/.cursor/mcp.json (global) or .cursor/mcp.json (project), same entry as Claude Desktop.

Tools

ToolWhat it does
packing_list_createOpen a packing list against an order: the reference, the consignee, where it ships to, the date
packing_expectDeclare an ordered line, so the shortfall is real. Nothing is read from the quotes, work-order or invoice store
carton_addAdd a carton: a label, the empty weight in whole grams, and all three outside dimensions or none
pack_itemPut a quantity of one item into a named carton, with the per-unit weight in whole grams
unpack_itemTake a packed line back out by its L01-style id. Deleted, not zeroed
packing_list_showThe whole list: cartons with contents and weights, the ordered lines, the shortfall, and whether it is ready to ship
packing_list_listPacking lists newest first, filtered by status, order reference or consignee
carton_reportTare, net, gross, volume, volumetric and chargeable weight, per carton and for the shipment
packing_shortfallOrdered against packed: what is short, what is over-packed, what is not on the order
packing_list_statusdraft to packed to shipped, or cancelled. Shipping records the carrier and tracking, and freezes the list
packing_slipThe slip as text on every tier. Pro also writes it to out_path as a .txt file
packing_list_deleteDelete a list for good. A shipped list is refused: it is the record of what left the building
license_statusWhich tier this install is on and where the key came from
license_activateStore a Pro key for this server

There is also a resource, packinglist://contract, carrying the status machine, the weight basis, what each shortfall state means, the free-tier limits and the one directory this server writes; and a prompt, pack_the_shipment, that walks the whole job in order.

Free vs Pro

FreePro
Open packing lists at once3unlimited
Cartons, packed lines, ordered linesunlimitedunlimited
carton_report, packing_shortfall, packing_list_showyesyes
The packing slip as textyesyes
Writing the slip to a file with out_pathnoyes

The cap is on shipments in flight, not on knowing what is in a box. Marking a list shipped or cancelling it frees its slot, and so does deleting a draft, so a free user can always get back under the limit without a key.

Get Pro: https://mcp.zovo.one/buy/packing-list (one-time), or all servers for one price at https://mcp.zovo.one/buy/bundle

Privacy

All data stays local, in ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/packing-list/. There is no network call anywhere in this server, no API key, and no account. The only file it reads that it does not own is the shared business profile, for the name and address at the top of the slip, and it never writes to it.

Built by theluckystrike. Support: [email protected]

Use these docs as an MCP server

Any MCP client (Claude, Cursor, Windsurf, VS Code) can read this repository's documentation directly via GitMCP - no install:

Source: servers/packing-list/README.md at commit 6535b33

Tools

14

packing_list_create

Open a packing list

Open a packing list against an order and return its PL-YYYY-NNNN number: the order reference, the consignee, where it ships to and the date. Free tier: 3 open at once; shipping or cancelling frees a slot.

Parametersdatenoteship_toconsigneerequiredreferencerequiredduplicate_okreference_kind

packing_expect

Declare what the order says should ship

Add an ordered line to a packing list so the shortfall is real: a SKU, a description and a quantity. Nothing is read from the quotes, work order or invoice store; what the order says is stated here.

Parametersskuquantityrequireddescriptionrequiredpacking_listrequired

carton_add

Add a carton

Add a carton to a packing list and return its C01-style id: a label, the empty weight in WHOLE GRAMS, and optionally length, width and height in WHOLE CENTIMETRES. Dimensions are what make a chargeable weight possible.

Parametersnotelabelrequiredwidth_cmheight_cmlength_cmtare_gramsrequiredpacking_listrequired

pack_item

Pack goods into a carton

Put a quantity of one item into a named carton: a description, how many, and the per-unit weight in WHOLE GRAMS. Leave unit_grams out when it was not weighed and the carton gross comes back as a lower bound.

Parametersskunotecartonrequiredquantityrequiredunit_gramsdescriptionrequiredpacking_listrequired

unpack_item

Take a packed line back out

Remove one packed line from a packing list by its L01-style id and return the carton it came out of. The line is deleted, not zeroed, so the slip does not print an item nobody packed.

Parameterslinerequiredpacking_listrequired

packing_list_show

Show one packing list

The whole packing list: its cartons with contents and derived weights, the ordered lines, the shortfall, whether it is ready to ship and why not, and its status history. Nothing here is stored; it is computed.

Parametersdivisorpacking_listrequired

packing_list_list

List packing lists

Packing lists newest first, with cartons, units, gross weight and how many ordered lines are still short. Filter by status, by order reference or by consignee. Returns at most 500 rows.

Parametersstatusdivisorconsigneeopen_onlyreference

carton_report

Weigh the cartons

Per carton and for the shipment: tare, net, gross, volume, volumetric weight and the chargeable weight, the greater of gross and volumetric. A carton with no dimensions makes the chargeable total null, never a guess.

Parametersdivisorpacking_listrequired

packing_shortfall

What is still to pack

Ordered against packed, line by line: what is still short, what was over-packed, and what was packed that is not on the order at all. A packed line with no ordered line is reported, never dropped.

Parameterspacking_listrequired

packing_list_status

Move a packing list on

Move a packing list draft to packed to shipped, or cancel it. Shipping records the carrier, the tracking number and the date, and freezes the list. A shipped list cannot be reopened or edited.

Parametersdatenoteforcestatusrequiredcarriertrackingpacking_listrequired

packing_slip

Produce the packing slip

The packing slip as plain text on every tier: cartons, contents, weights and a signature line, and no prices anywhere. Pro also gets it back as a .txt download link valid for one hour, named by out_path; an existing name is refused unless told to overwrite.

Parametersdivisorout_pathoverwritepacking_listrequired

packing_list_delete

Delete a packing list

Delete a packing list for good, with its cartons and packed lines. A shipped list is refused: it is the record of what left the building. Cancel a list you no longer want instead of deleting a real shipment.

Parametersconfirmrequiredpacking_listrequired

license_status

License status

Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.

Takes no parameters.

license_activate

Activate license

Turn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.

Parameterskeyrequired

Version history

4
  1. v0.22.8LatestOct 14, 2026
  2. v0.22.4Sep 26, 2026
  3. v0.22.2Sep 26, 2026
  4. v0.21.0Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts