
tomi-claycosmos/shopify-store-assistant-mcp
Browser automation이 페이지는 AI로 자동 번역되었습니다. 기술적인 세부 사항은 원문을 확인하세요. 원문 보기
Demo MCP server: Shopify store assistant for ChatGPT Apps & Grok Bot — OAuth 2.1 (DCR+PKCE), safety-bounded tools, MCP Apps widget. Sample data.
개요
Portfolio demo by Tomi (https://ziy.one/). from a fictional store ("Kopi & Co. Demo Store"). Not affiliated with Shopify. A TypeScript MCP server (official @modelcontextprotocol/sdk 1.32, Streamable HTTP) that lets a store owner query products, inventory and orders from ChatGPT, Grok Bot or Cursor, and draft discount codes. Every tool has explicit safety bounds. These were captured with headless Chromium (Playwright) against the local server. All tool output is real; all store data is sample data. Regenerate them with npx tsx scripts/screenshots.ts. covers product search with cards, order lookup with masked PII, a 15% discount draft that succeeds, an 80% discount blocked by the cap, and a rejected refund: Walkthrough video: screenshots/walkthrough.mp4 (webm) Safety bounds: - There are no refund, delete, cancel or customer-edit tools. - Discount drafts live in server memory and never change Shopify. - Every call is appended to an audit log (JSONL, no tokens, no raw PII).
README
원문 README의 일부입니다. 원문 보기.
Shopify Store Assistant — MCP server demo (ChatGPT App · Grok Bot connector · Muse-ready)
Portfolio demo by Tomi (https://ziy.one/). Default data is SAMPLE data from a fictional store (“Kopi & Co. Demo Store”). Not affiliated with Shopify.
A TypeScript MCP server (official @modelcontextprotocol/sdk 1.32, Streamable HTTP) that lets a store owner query products, inventory and orders from ChatGPT, Grok Bot or Cursor, and draft discount codes. Every tool has explicit safety bounds.
Architecture
flowchart LR
subgraph Clients
C1[ChatGPT Developer Mode]
C2[Grok Bot / Cursor]
C3[Muse connector / MCP Inspector]
end
C1 & C2 & C3 -- "OAuth 2.1 (DCR + PKCE S256)" --> AS[Built-in demo Authorization Server/register /authorize /token]
C1 & C2 & C3 -- "Bearer token · Streamable HTTP POST /mcp" --> MW[Bearer middleware401 + WWW-Authenticate resource_metadata]
MW --> MCP[McpServer per request6 tools + UI resource]
MCP --> SAFE[Safety layerscope checks · 20% discount cap · PII masking · no refund/delete]
SAFE --> AUD[(logs/audit.jsonl)]
SAFE --> DATA{Store adapter}
DATA -->|default| MOCK[Mock sample store]
DATA -->|SHOPIFY_STORE_DOMAIN + SHOPIFY_ADMIN_TOKEN| SHOP[Shopify Admin GraphQLread-only, untested live]
MCP --> UI[ui://shopify-assistant/product-list-v1.htmltext/html;profile=mcp-app]
Screenshots
These were captured with headless Chromium (Playwright) against the local server. All tool output is real; all store data is sample data. Regenerate them with npx tsx scripts/screenshots.ts.
| OAuth consent | Widget in a chat host |
|---|---|
Demo transcript covers product search with cards, order lookup with masked PII, a 15% discount draft that succeeds, an 80% discount blocked by the cap, and a rejected refund:
Walkthrough video: screenshots/walkthrough.mp4 (webm)
Tools
| Tool | Purpose | readOnly | destructive | openWorld | Scope |
|---|---|---|---|---|---|
search_products |
keyword/type/SKU search | ✅ | ❌ | ❌ | store.read |
check_inventory |
stock for one SKU | ✅ | ❌ | ❌ | store.read |
lookup_order |
order details, customer PII masked | ✅ | ❌ | ❌ | store.read |
get_order_status |
payment/fulfillment/tracking only | ✅ | ❌ | ❌ | store.read |
create_discount_draft |
inactive draft, capped at MAX_DISCOUNT_PERCENT (20) |
❌ | ❌ | ❌ | discounts.write |
render_product_list |
renders the widget (decoupled render tool) | ✅ | ❌ | ❌ | — |
Safety bounds:
- There are no refund, delete, cancel or customer-edit tools.
- Discount drafts live in server memory and never change Shopify.
- Every call is appended to an audit log (JSONL, no tokens, no raw PII).
- Input is validated with zod.
설치
This server does not publish a one-line install command.
Open the repository installation guide MCP 초보자라면? mcpskill.org 가이드부터 시작하세요 →