costco-saturday-run
costco-mcp-demo
Public copy of the Costco Saturday Run app and MCP from internalsphere/group-21-gtmko-2026. Phone UI, website catalog, staged warehouse data, tests, and streamable HTTP MCP all live here.
This repo is meant for a public Vercel deploy.
Surface | URL | What it is |
Phone | Chrome phone shell. Kirk in the dock. | |
Website | Warehouse catalog (departments, search, product pages, cart). | |
MCP | Streamable HTTP MCP. Catalog / cart / member tools. | |
Connect | Static MCP credentials page (also optional on GitHub Pages). |
Labeled demo. Catalog, membership, warehouse hours, and product photos are staged — not live Costco APIs.
Demo MCP credentials
Always bound to Jordan Lee / Executive Member.
Username |
|
Password |
|
Bearer |
|
Basic |
|
Connect URL |
|
Run locally
git clone https://github.com/cursor-demo-lab/costco-mcp-demo.git
cd costco-mcp-demo
npm install
npm run devOpen http://localhost:3000 for the phone, or http://localhost:3000/web for the website.
Optional live Grok (text / Imagine / Voice):
cp .env.example .env.local
# set XAI_API_KEY=...The app boots without a key. Voice says it is not connected; Imagine falls back to baked plates or the labeled demo plate.
npm test
npm run build
npm startDeploy on Vercel
In Vercel, Add New Project → import
cursor-demo-lab/costco-mcp-demo.Framework preset: Next.js. Root directory: repo root.
vercel.jsonalready names the Next.js framework and leaves git deploys enabled.Leave Deployment Protection off (public). Do not attach Internalsphere Passport / Okta.
Environment variables (Production + Preview):
XAI_API_KEY— optional, for live GrokMCP_DEMO_PASSWORD— optional; defaults tospacexai123MCP_DEMO_USERNAME— optional; defaults tojordanMCP_TOKEN_SECRET— optional HMAC mint only
Deploy. Production is
https://costco-mcp-demo.vercel.app. MCP ishttps://costco-mcp-demo.vercel.app/api/mcp.
Encrypted secrets/**/*.sops.json files may remain from the private source. They are not used on this public project. Set the Vercel env vars above instead of running scripts/secrets.py.
Cursor / Grok Bot:
{
"mcpServers": {
"costco-saturday-run": {
"url": "https://costco-mcp-demo.vercel.app/api/mcp",
"headers": {
"Authorization": "Bearer spacexai123"
}
}
}
}Local: http://127.0.0.1:3000/api/mcp with the same Bearer (or Basic jordan:spacexai123).
Full steps: docs/mcp.md. Presenter debug on the phone/website (?debug=1) also copies the pair.
Optional GitHub Pages connect page
docs/connect.html is a static credentials card. Enable GitHub Pages on the docs/ folder if you want that page without the Next.js app. The same file is served from the Vercel app at /connect.html.
Kirk (member-app assistant)
Kirk is the consumer persona (Talk to Kirk / Try Kirk / Ask Kirk). Conversational choices stay in lib/prompts.ts. Grok is the engine only — never consumer chrome.
Costco DNA: membership above the fold, warehouse walk order, close with Buy online or Save list for the store. No live checkout, no 15-minute delivery hero.
Layout
app/— Next.js App Router;/phone,/webwebsite; API routes for status / chat / Imagine / Voice / product photos / MCPcomponents/— Chrome phone shell and websitelib/— staged catalog, Grok client, Costco DNA prompts, MCP transport (lib/mcp/)data/— catalog zones (including furniture), recipes, preferences, baked plate idsdocs/mcp.md— Grok Bot / Cursor connectpublic/web-products/— staged catalog photospublic/plates/— baked dinner-plate photos for Imaginegtmko-costco-pitch/— presenter pitch decke2e/+lib/**/*.test.ts— contract and unit tests
Internalsphere leftovers
This tree was mirrored from a private Internalsphere app. Platform files (QUICKSTART.md notes, app-manifest.yml, encrypted sops, .cursor/skills/* for ranger) are inactive here. GitHub Actions in this repo run npm test + npm run build only — they do not call Internalsphere deploy workflows.