Packrift MCP Server
OfficialAllows searching the catalog, getting live pricing and inventory, recommending packaging for an item, estimating shipping costs, and generating checkout URLs for the Packrift Shopify store.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Packrift MCP Serverrecommend packaging for a 12x9x2 item weighing 1 lb"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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), storepackrift.myshopify.comEndpoint:
POST /mcp,GET /mcp(SSE),GET /(health),GET /.well-known/mcp/server-card.json
Tools
Tool | Purpose |
| Keyword search across the catalog. Cached 5 min in KV. |
| Full product detail incl. variants, dimensions metafield, weight. |
| Live unit price + line total. Never cached. |
| Live inventory count. Never cached. |
| Up to 5 ranked variant suggestions with 0.5–2 in padding. |
| Carrier rates via Shopify |
| Builds |
Local development
Install Node 24+ and the deps:
cd ~/Downloads/packrift-mcp-server
npm installLocal secrets — already created at .dev.vars (gitignored):
SHOPIFY_PACKRIFT_TOKEN=shpat_...Run the server:
npx wrangler dev --port 8787 --localSmoke-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 --noEmitDeployment
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 deployAfter 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
cartCreateis a Storefront API mutation, not Admin. The brief asked forcartCreate+cartBuyerIdentityUpdatefor shipping rates, but those don't exist on the Admin GraphQL API this server uses. The supported Admin path isdraftOrderCalculate, which is whatget_shipping_estimateuses. It returns the same carrier-rate data without creating a real order.Dimensions parsing. Packrift product dimensions live in
custom.specN_valuemetafields where the matchingcustom.specN_namesays "Dimensions" or "Size". Format is human-readable (12 1/8" L x 11 5/8" W x 2 5/8" H).src/dimensions.tsparses mixed fractions and falls back to scanning the title.Recommend collections. The brief mentioned
mailer-boxescollection — that handle does not exist on the live store. We usemailers-envelopes,boxes-mailers,corrugated-boxes,bubble-wrap-foam,cushioning, andecommerce-fulfillment(verified viacollectionsquery 2026-04-29).Use case mapping is in
src/tools/recommend_packaging.ts(COLLECTIONS_BY_USE_CASE).Shipping rate
handlein 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-3260xerrors. 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)Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Packrift/packrift-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server