Safe-write Shopify operations: plan-before-execute writes with out-of-band approval and audit.
Connect Runs on your machine
claude mcp add shopify-operations-mcp -e SHOPIFY_STORE_DOMAIN=<SHOPIFY_STORE_DOMAIN> -e SHOPIFY_ADMIN_TOKEN=<SHOPIFY_ADMIN_TOKEN> -e SHOPIFY_CONFIG=<SHOPIFY_CONFIG> -e SHOPIFY_PLAN_TTL_MS=<SHOPIFY_PLAN_TTL_MS> -e SHOPIFY_APPROVAL_SERVER_PORT=<SHOPIFY_APPROVAL_SERVER_PORT> -e SHOPIFY_PROTECTED_TAGS=<SHOPIFY_PROTECTED_TAGS> -e SHOPIFY_CALLER_ID=<SHOPIFY_CALLER_ID> -e SHOPIFY_AUDIT_PATH=<SHOPIFY_AUDIT_PATH> -- npx -y [email protected]
{
"mcpServers": {
"shopify-operations-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"SHOPIFY_STORE_DOMAIN": "<SHOPIFY_STORE_DOMAIN>",
"SHOPIFY_ADMIN_TOKEN": "<SHOPIFY_ADMIN_TOKEN>",
"SHOPIFY_CONFIG": "<SHOPIFY_CONFIG>",
"SHOPIFY_PLAN_TTL_MS": "<SHOPIFY_PLAN_TTL_MS>",
"SHOPIFY_APPROVAL_SERVER_PORT": "<SHOPIFY_APPROVAL_SERVER_PORT>",
"SHOPIFY_PROTECTED_TAGS": "<SHOPIFY_PROTECTED_TAGS>",
"SHOPIFY_CALLER_ID": "<SHOPIFY_CALLER_ID>",
"SHOPIFY_AUDIT_PATH": "<SHOPIFY_AUDIT_PATH>"
}
}
}
}
{
"mcpServers": {
"shopify-operations-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"SHOPIFY_STORE_DOMAIN": "<SHOPIFY_STORE_DOMAIN>",
"SHOPIFY_ADMIN_TOKEN": "<SHOPIFY_ADMIN_TOKEN>",
"SHOPIFY_CONFIG": "<SHOPIFY_CONFIG>",
"SHOPIFY_PLAN_TTL_MS": "<SHOPIFY_PLAN_TTL_MS>",
"SHOPIFY_APPROVAL_SERVER_PORT": "<SHOPIFY_APPROVAL_SERVER_PORT>",
"SHOPIFY_PROTECTED_TAGS": "<SHOPIFY_PROTECTED_TAGS>",
"SHOPIFY_CALLER_ID": "<SHOPIFY_CALLER_ID>",
"SHOPIFY_AUDIT_PATH": "<SHOPIFY_AUDIT_PATH>"
}
}
}
}
{
"servers": {
"shopify-operations-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"SHOPIFY_STORE_DOMAIN": "<SHOPIFY_STORE_DOMAIN>",
"SHOPIFY_ADMIN_TOKEN": "<SHOPIFY_ADMIN_TOKEN>",
"SHOPIFY_CONFIG": "<SHOPIFY_CONFIG>",
"SHOPIFY_PLAN_TTL_MS": "<SHOPIFY_PLAN_TTL_MS>",
"SHOPIFY_APPROVAL_SERVER_PORT": "<SHOPIFY_APPROVAL_SERVER_PORT>",
"SHOPIFY_PROTECTED_TAGS": "<SHOPIFY_PROTECTED_TAGS>",
"SHOPIFY_CALLER_ID": "<SHOPIFY_CALLER_ID>",
"SHOPIFY_AUDIT_PATH": "<SHOPIFY_AUDIT_PATH>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
SHOPIFY_STORE_DOMAINRequired | The myshopify.com store domain, e.g. my-store.myshopify.com. Overrides shopify.storeDomain from the config file. |
SHOPIFY_ADMIN_TOKENRequired, secret | Shopify Admin API access token. Required and only ever read from the environment — never from the config file. |
SHOPIFY_CONFIGOptional | Path to a config.json with shopify/plans/approvalServer/protectedTags settings. Defaults to ./config.json in the working directory. |
SHOPIFY_PLAN_TTL_MSOptional | How long a plan token stays valid before it must be executed or expires, in milliseconds. Default 60000. |
SHOPIFY_APPROVAL_SERVER_PORTOptional | Port the localhost human-approval HTTP server binds to (127.0.0.1 only). Default 4319. |
SHOPIFY_PROTECTED_TAGSOptional | Comma-separated tags that plans may never modify; any plan touching an item carrying one is refused. Default do-not-touch. |
SHOPIFY_CALLER_IDOptional | Identity recorded as the caller on every audit log row. Default unknown. |
SHOPIFY_AUDIT_PATHOptional | File path for the tamper-evident JSONL audit log. Default shopify-operations-audit.jsonl in the working directory. |
Details
| Package | [email protected] (NPM, stdio) |
| First published | 17 Aug 2026 |
| Last updated | 17 Aug 2026 |
| Registry name | io.github.jpka/shopify-operations-mcp |
More other servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
