1. Conduid
  2. Search
  3. Packrift MCP Server
MCP server · Search

Packrift MCP Server

Enables AI agents to search a Shopify packaging-supplies catalog, get live pricing and inventory, recommend boxes, estimate shipping, and generate checkout URLs.

Unclaimed search
34Low

Scored 5 months ago · breakdown

About Packrift MCP Server

Packrift MCP Server is an MCP server published by Packrift in the Search category: enables AI agents to search a Shopify packaging-supplies catalog, get live pricing and inventory, recommend boxes, estimate shipping, and generate checkout URLs.

The repository has 1 stars and 1 forks, with the last commit 26 days ago. Recent commit activity is the strongest signal that reported issues will get attention.

Install

From source
git clone https://github.com/Packrift/packrift-mcp

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Tools (15)

check_inventory(variant_ids[])Live inventory check before recommending or building a cart. `variant_ids` must be numeric Shopify variant IDs encoded as strings. Never cached.

Parameters not published.

compare_alternatives(requested_spec, family?, competitor_reference?, limit?)Ranks curated Packrift alternatives for open-ended buyer requests, including competitor-style packaging specs.

Parameters not published.

create_cart_url(items[], discount_code?, ref?)Final cart handoff. Builds a GA4-visible Packrift cart landing URL plus the final `packrift.com/cart/...` permalink with `ref=mcp` and AI-commerce attribution fields.

Parameters not published.

explain_no_exact_match(requested_spec, missing_or_mismatched_fields?)Explains why a nearby product should not be presented as exact, then routes to safe next actions and quote recovery.

Parameters not published.

find_packaging_for_item(item_length_in, item_width_in, item_depth_in, item_weight_lb, use_case)Hero. Item L/W/D + weight + use case -> ranked packaging SKUs that fit. Use for smallest-fit, box-vs-mailer, and Uline-by-size style questions.

Parameters not published.

get_bulk_quote_link(requested_spec, family?, sku?, quantity?)Tracked bulk quote URL for no-exact-match, large-volume, or procurement-review workflows.

Parameters not published.

get_cart_handoff_candidates(limit?, family?, sku?)Priority curated SKUs with ready `create_cart_url` arguments, SKU/product/reorder/quote/cart links, and required live-confirmation sequence.

Parameters not published.

get_pricing(variant_ids[], quantity?)Live unit price and line total before purchase handoff. `variant_ids` must be numeric Shopify variant IDs encoded as strings. Never cached.

Parameters not published.

get_product(handle)Full product detail including variants, dimensions/metafields, weight, stock, and product URL.

Parameters not published.

get_reorder_link(sku, handle?)Reorder URL, product URL, and copy-procurement-spec text for a catalog SKU or handle.

Parameters not published.

Show all 15 tools
get_shipping_estimate(zip, country, items[])Carrier rates for a chosen cart via Shopify `draftOrderCalculate`.

Parameters not published.

inventory_status(variant_ids?, sku?, handle?, quantity?)Live total and location-level Shopify inventory status for exact SKUs, handles, or variant IDs.

Parameters not published.

pack_calculator(item, padding?, use_case?, limit?)Calculates protected inside dimensions and returns fitted box or mailer candidates with void-fill guidance.

Parameters not published.

prepare_purchase_handoff(sku, quantity?, buyer_confirmed?)Fast exact-SKU path. Confirms the product, live price, and inventory, then returns a tracked cart URL only when `buyer_confirmed=true`.

Parameters not published.

search_products(query, limit?)Keyword fallback when dimensions are unknown, such as kraft tape, bubble mailer, starter kit, or weather-resistant labels. Cached 5 min in KV.

Parameters not published.

Ask AI

✦

Ask AI about Packrift MCP Server

Powered by Claude · Grounded in docs

I know everything about Packrift MCP Server. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

  • ✓README presentThe repository ships documentation.

5 checks have not been run yet.

README

Packrift MCP Server

Production MCP (Model Context Protocol) server for Packrift, a Shopify packaging-supplies store. Lets AI agents search the catalog, get live pricing and inventory, recommend a box for an item, estimate shipping, and produce checkout URLs.

  • Stack: Cloudflare Workers, TypeScript (strict), Hono, Zod, Streamable HTTP transport
  • Backing: Shopify Admin GraphQL API (2025-04), store packrift.myshopify.com
  • Endpoint: POST /mcp, GET /mcp (SSE), GET / (health), GET /.well-known/mcp/server-card.json

Tools

Tool Purpose
search_products(query, limit?) Keyword search across the catalog. Cached 5 min in KV.
get_product(handle) Full product detail incl. variants, dimensions metafield, weight.
get_pricing(variant_ids[], quantity?) Live unit price + line total. Never cached.
check_inventory(variant_ids[]) Live inventory count. Never cached.
recommend_packaging(dims, weight, use_case) Up to 5 ranked variant suggestions with 0.5–2 in padding.
get_shipping_estimate(zip, country, items[]) Carrier rates via Shopify draftOrderCalculate.
create_cart_url(items[], discount_code?, ref?) Builds packrift.com/cart/...?ref=mcp[&discount=...].

Local development

Install Node 24+ and the deps:

cd ~/Downloads/packrift-mcp-server
npm install

Local secrets — already created at .dev.vars (gitignored):

SHOPIFY_PACKRIFT_TOKEN=shpat_...

Run the server:

npx wrangler dev --port 8787 --local

Smoke-test the MCP endpoint with curl:

# initialize
curl -s -X POST http://127.0.0.1:8787/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'

# list tools
curl -s -X POST http://127.0.0.1:8787/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

# search
curl -s -X POST http://127.0.0.1:8787/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search_products","arguments":{"query":"poly mailer","limit":3}}}'

Type-check:

npx tsc --noEmit

Deployment

The Cloudflare account is being created in a separate process. Once it's ready and wrangler is logged in (wrangler login), run these in order:

cd ~/Downloads/packrift-mcp-server

# 1. Create the KV namespace and copy the printed id into wrangler.toml
#    (replace both `id` and `preview_id` with the same value).
npx wrangler kv namespace create CATALOG_CACHE

# 2. Set the Shopify Admin token as a secret (paste shpat_... when prompted).
npx wrangler secret put SHOPIFY_PACKRIFT_TOKEN

# 3. Deploy. Initial deploy puts the worker on
#    https://packrift-mcp.<account>.workers.dev
npx wrangler deploy

# 4. (Once mcp.packrift.com is CNAME'd to the worker) uncomment the [[routes]]
#    block in wrangler.toml and redeploy.
npx wrangler deploy

After deploy, the MCP endpoint is https://packrift-mcp.<account>.workers.dev/mcp (and later https://mcp.packrift.com/mcp). The server card lives at /.well-known/mcp/server-card.json.

Design notes / caveats

  • cartCreate is a Storefront API mutation, not Admin. The brief asked for cartCreate + cartBuyerIdentityUpdate for shipping rates, but those don't exist on the Admin GraphQL API this server uses. The supported Admin path is draftOrderCalculate, which is what get_shipping_estimate uses. It returns the same carrier-rate data without creating a real order.
  • Dimensions parsing. Packrift product dimensions live in custom.specN_value metafields where the matching custom.specN_name says "Dimensions" or "Size". Format is human-readable (12 1/8" L x 11 5/8" W x 2 5/8" H). src/dimensions.ts parses mixed fractions and falls back to scanning the title.
  • Recommend collections. The brief mentioned mailer-boxes collection — that handle does not exist on the live store. We use mailers-envelopes, boxes-mailers, corrugated-boxes, bubble-wrap-foam, cushioning, and ecommerce-fulfillment (verified via collections query 2026-04-29).
  • Use case mapping is in src/tools/recommend_packaging.ts (COLLECTIONS_BY_USE_CASE).
  • Shipping rate handle in the response is a long opaque JWT-style string — that's how Shopify returns rate handles; pass it through to subsequent calls if needed.
  • Errors: tool exceptions are returned as { content: [...], isError: true } per the MCP spec, not as JSON-RPC -3260x errors. Protocol-level errors (unknown tool, bad JSON) do return JSON-RPC errors.

File map

src/
  index.ts                       Hono app + MCP JSON-RPC dispatcher
  shopify.ts                     Admin GraphQL client + id helpers
  dimensions.ts                  Spec-string -> structured dimensions
  server-card.ts                 /.well-known card
  tools/
    search_products.ts
    get_product.ts
    get_pricing.ts
    check_inventory.ts
    recommend_packaging.ts
    get_shipping_estimate.ts
    create_cart_url.ts
wrangler.toml                    Worker config (KV binding, vars, route)
package.json
tsconfig.json
.dev.vars                        Local-only secrets (gitignored)

README copy captured when this server was indexed; it may lag the repository. The original is authoritative.

Questions

About Packrift MCP Server

How do I install Packrift MCP Server?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Packrift MCP Server safe to use with an AI agent?

Its trust score is 34 out of 100 (low). It passes 1 of the 1 static security checks run so far. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Packrift MCP Server still maintained?

Yes — the last commit was 26 days ago. The repository has 1 stars and 1 forks.