{"id":"mcp-io-github-jpka-shopify-operations-mcp","title":"shopify-operations-mcp","type":"mcp","industry":"customer-service","roles":["support-agent"],"summary":"Safe-write Shopify operations: plan-before-execute writes with out-of-band approval and audit.","summary_lang":"en","source_url":"https://github.com/jpka/shopify-operations-mcp","raw_url":"https://raw.githubusercontent.com/SiinXu/agent-academy/main/data/originals/mcp-io-github-jpka-shopify-operations-mcp.md","upstream_raw_url":null,"repo":"jpka/shopify-operations-mcp","author":"io.github.jpka","license":"MIT","redistributable":false,"content_policy":"link-and-summary-only","original":{"kind":"full","license":"MIT","url":"https://github.com/jpka/shopify-operations-mcp/blob/HEAD/README.md","record":{"description":"Safe-write Shopify operations: plan-before-execute writes with out-of-band approval and audit.","name":"io.github.jpka/shopify-operations-mcp","packages":[{"env":[{"description":"The myshopify.com store domain, e.g. my-store.myshopify.com. Overrides shopify.storeDomain from the config file.","name":"SHOPIFY_STORE_DOMAIN","required":true,"secret":null},{"description":"Shopify Admin API access token. Required and only ever read from the environment — never from the config file.","name":"SHOPIFY_ADMIN_TOKEN","required":true,"secret":true},{"description":"Path to a config.json with shopify/plans/approvalServer/protectedTags settings. Defaults to ./config.json in the working directory.","name":"SHOPIFY_CONFIG","required":null,"secret":null},{"description":"How long a plan token stays valid before it must be executed or expires, in milliseconds. Default 60000.","name":"SHOPIFY_PLAN_TTL_MS","required":null,"secret":null},{"description":"Port the localhost human-approval HTTP server binds to (127.0.0.1 only). Default 4319.","name":"SHOPIFY_APPROVAL_SERVER_PORT","required":null,"secret":null},{"description":"Comma-separated tags that plans may never modify; any plan touching an item carrying one is refused. Default do-not-touch.","name":"SHOPIFY_PROTECTED_TAGS","required":null,"secret":null},{"description":"Identity recorded as the caller on every audit log row. Default unknown.","name":"SHOPIFY_CALLER_ID","required":null,"secret":null},{"description":"File path for the tamper-evident JSONL audit log. Default shopify-operations-audit.jsonl in the working directory.","name":"SHOPIFY_AUDIT_PATH","required":null,"secret":null}],"id":"shopify-operations-mcp","transport":"stdio","type":"npm","version":"0.1.2"}],"remotes":[],"repository":"https://github.com/jpka/shopify-operations-mcp","title":"shopify-operations-mcp","version":"0.1.2","website":null}},"install":"npx -y shopify-operations-mcp","security":{"audited":false,"executes_code":true,"needs_credentials":true,"writes_external":true,"credential_names":["SHOPIFY_STORE_DOMAIN","SHOPIFY_ADMIN_TOKEN","SHOPIFY_CONFIG","SHOPIFY_PLAN_TTL_MS","SHOPIFY_APPROVAL_SERVER_PORT","SHOPIFY_PROTECTED_TAGS","SHOPIFY_CALLER_ID","SHOPIFY_AUDIT_PATH"]},"metrics":{"repo_stars":0,"repo_pushed_at":"2026-09-04","registry_updated_at":"2026-08-17"},"course_step":"4-do-it","status":"active","first_seen":"2026-10-15T10:15:30Z","updated_at":"2026-10-15T10:15:30Z","checked_at":"2026-10-15T10:15:30Z","http_status":{"source":200},"page":"https://academy.incidental.site/r/mcp-io-github-jpka-shopify-operations-mcp/","source":"mcp-registry"}