MCP server for E2E checkout on any Shopify store — no API keys required
Shopify MCP
An MCP server that gives AI agents full access to any Shopify store — browse products, manage carts, and place orders with E2E checkout. No API keys or store owner access required.
Quick Start
1. Deploy
Or deploy to Vercel:
Or run locally:
bun install
bun run build
bun dist/server.js
2. Connect Your MCP Client
Add to your MCP client config (e.g. Cursor's ~/.cursor/mcp.json):
{
"mcpServers": {
"shopify": {
"url": "https://your-host.up.railway.app/mcp"
}
}
}
No auth required — the server works with any Shopify store out of the box. To override a store's Storefront API token:
https://your-host/mcp?accessToken=YOUR_STOREFRONT_TOKEN
Tools
Product Discovery (no auth, works on all stores)
| Tool | Description |
|------|-------------|
| discover_store | Validate a Shopify store URL, detect capabilities, list products. |
| search_products | Search a store's product catalog by keyword. |
| get_product | Get full product details with all variants, options, and pricing. |
Cart Management (requires Storefront API token with cart scopes)
| Tool | Description |
|------|-------------|
| manage_cart | Create, add, update, remove, or view cart via Storefront API. |
| generate_checkout_link | Generate a direct checkout URL — works on ALL stores without a token. |
E2E Checkout (no auth, works on all stores)
| Tool | Description |
|------|-------------|
| place_order | Full end-to-end checkout: creates session, tokenizes card, submits order, polls for confirmation. |
Storefront API Introspection (requires Storefront API token)
| Tool | Description |
|------|-------------|
| search_operations | Discover available Storefront API queries and mutations via live introspection. |
| get_operation_details | Get argument schema for any operation or input type. |
| execute_operation | Execute arbitrary Storefront API GraphQL queries/mutations. |
Example Agent Flow
1. discover_store("myhummusfit.com")
2. search_products("myhummusfit.com", "muffin")
3. get_product("myhummusfit.com", "buffin-muffin")
4. place_order("myhummusfit.com", items=[{variantId: "43861916090615", quantity: 2}],
email="...", shippingAddress={...}, card={...})
How It Works
Product browsing uses Shopify's public REST API (/products.json, /search/suggest.json) — no authentication needed, works on every Shopify store.
E2E checkout reverse-engineers Shopify's internal checkout GraphQL API (the same one the checkout page uses):
- Creates a checkout session via
/cart/{variantId}:{quantity} - Extracts the session token from
<meta name="serialized-sessionToken"> - Tokenizes the payment card via Shopify's card vault (
deposit.shopifycs.com) - Submits the full negotiation proposal via
submitForCompletionat/checkouts/unstable/graphql - Polls the
receiptquery until the order completes
Storefront API tools use the store's public Storefront API token (auto-discovered from the page source) for cart management and schema introspection.
Auth Parameters
All auth is optional and passed per-connection:
| Parameter | Required | How to pass |
|-----------|----------|-------------|
| accessToken | No | Query param or x-shopify-access-token header |