shopify-mcp
Provides tools for managing Shopify products, orders, inventory, and discounts via the Admin GraphQL API, with support for preview before writing.
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., "@shopify-mcpsearch for products containing 'winter'"
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.
shopify-mcp-cloud-run
Production-ready Shopify Admin MCP server for Google Cloud Run. It exposes an authenticated MCP endpoint at /mcp and safe Shopify Admin GraphQL tools for products, orders, inventory, discounts, and service health.
Security model
Every
/mcprequest must includeAuthorization: Bearer <MCP_API_KEY>.Originis validated when present. SetMCP_ALLOWED_ORIGINSto a comma-separated list for browser clients.Shopify credentials are read only from environment variables and are never logged.
Write tools never write by default. They return a JSON preview unless
confirm=true.Confirmed writes still require
ALLOW_WRITE_TOOLS=true.Destructive actions such as deleting customers/products, refunding orders, or canceling orders are intentionally not implemented.
Related MCP server: Shopify MCP Server
Shopify custom app setup
In Shopify Admin, go to Settings > Apps and sales channels > Develop apps.
Create a custom app for this MCP server.
Configure Admin API scopes:
read_productswrite_productsread_ordersread_inventorywrite_inventoryread_discountswrite_discountsread_locations
Install the app and copy the Admin API access token.
Store the token in Google Secret Manager or your local
.envfile.
Environment variables
Copy .env.example to .env for local development:
cp .env.example .envRequired values:
SHOPIFY_SHOP_DOMAIN=your-store.myshopify.com
SHOPIFY_ADMIN_ACCESS_TOKEN=replace-with-shopify-admin-api-token
SHOPIFY_API_VERSION=2026-04
MCP_API_KEY=some-secret-key
ALLOW_WRITE_TOOLS=falseOptional values:
MCP_ALLOWED_ORIGINS=https://your-client.example.com
SHOPIFY_REQUEST_TIMEOUT_MS=20000
SHOPIFY_MAX_RETRIES=2Keep ALLOW_WRITE_TOOLS=false unless you intentionally want this MCP server to edit Shopify data.
Run locally
npm install
npm run devThe service listens on 0.0.0.0 using process.env.PORT, defaulting to 8080.
Test health:
curl http://localhost:8080/healthTest MCP initialization:
curl http://localhost:8080/mcp \
-H "Authorization: Bearer $MCP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1.0.0"}}}'List tools:
curl http://localhost:8080/mcp \
-H "Authorization: Bearer $MCP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'Preview vs confirm
All write tools support preview mode. For example, this returns the proposed change without writing to Shopify:
{
"productId": "gid://shopify/Product/123",
"seoTitle": "New SEO title",
"seoDescription": "New SEO description",
"confirm": false
}To write, both conditions are required:
Set
ALLOW_WRITE_TOOLS=truein the service environment.Pass
"confirm": trueto the tool call.
If either condition is missing, the server does not write.
For update_inventory_quantity, a confirmed write first reads the current available quantity at the given location and sends it as Shopify's compare value with an idempotency key. If inventory changed between preview and confirm, Shopify returns a user error instead of silently overwriting the new value.
Cloud Run deployment
Enable required Google APIs:
gcloud services enable run.googleapis.com secretmanager.googleapis.com cloudbuild.googleapis.comCreate Secret Manager secrets:
printf "replace-with-shopify-admin-api-token" | gcloud secrets create shopify-admin-token --data-file=-
printf "some-secret-key" | gcloud secrets create mcp-api-key --data-file=-Deploy to Cloud Run:
gcloud run deploy shopify-mcp-cloud-run \
--source . \
--region me-west1 \
--allow-unauthenticated \
--set-env-vars SHOPIFY_SHOP_DOMAIN=your-store.myshopify.com,SHOPIFY_API_VERSION=2026-04,ALLOW_WRITE_TOOLS=false \
--set-secrets SHOPIFY_ADMIN_ACCESS_TOKEN=shopify-admin-token:latest,MCP_API_KEY=mcp-api-key:latestCloud Run is marked --allow-unauthenticated so MCP clients can reach the service, but the /mcp endpoint still requires the bearer token.
MCP tools
health_checksearch_productsget_productupdate_product_seoupdate_product_descriptionupdate_product_tagsupdate_product_metafieldsget_ordersget_inventory_by_skuupdate_inventory_quantitycreate_discount_code
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/Jad-Assaf/shopify-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server