shopify-operations-mcp
A safe-write MCP server for Shopify Admin API operations that prevents unrecoverable accidents. It implements a two-phase pattern where every write previews changes before committing, requires out-of-band human approval for large or irreversible operations, and records actions to a tamper-evident hash-chained audit file.
Package and access
Local package with source-attributed installation metadata. Koskamo does not execute packages during review.
What you can do with it
- Bulk price and inventory updates with preview manifests
- Order cancellations and refunds with approval gating
- Discount management behind one-call rollback
- Audit logging of all store operations
Source and maintenance
- Maintenance checked
Packages and installation
Source-provided package data. Koskamo has not executed or live-probed this package.
shopify-operations-mcp 0.1.2
{
"version": "0.1.2",
"transport": "stdio",
"identifier": "shopify-operations-mcp",
"registryType": "npm",
"environmentVariables": [
{
"name": "SHOPIFY_STORE_DOMAIN",
"format": "string",
"isRequired": true,
"description": "The myshopify.com store domain, e.g. my-store.myshopify.com. Overrides shopify.storeDomain from the config file."
},
{
"name": "SHOPIFY_ADMIN_TOKEN",
"format": "string",
"isRequired": true,
"description": "Shopify Admin API access token. Required and only ever read from the environment — never from the config file."
},
{
"name": "SHOPIFY_CONFIG",
"format": "string",
"description": "Path to a config.json with shopify/plans/approvalServer/protectedTags settings. Defaults to ./config.json in the working directory."
},
{
"name": "SHOPIFY_PLAN_TTL_MS",
"format": "string",
"description": "How long a plan token stays valid before it must be executed or expires, in milliseconds. Default 60000."
},
{
"name": "SHOPIFY_APPROVAL_SERVER_PORT",
"format": "string",
"description": "Port the localhost human-approval HTTP server binds to (127.0.0.1 only). Default 4319."
},
{
"name": "SHOPIFY_PROTECTED_TAGS",
"format": "string",
"description": "Comma-separated tags that plans may never modify; any plan touching an item carrying one is refused. Default do-not-touch."
},
{
"name": "SHOPIFY_CALLER_ID",
"format": "string",
"description": "Identity recorded as the caller on every audit log row. Default unknown."
},
{
"name": "SHOPIFY_AUDIT_PATH",
"format": "string",
"description": "File path for the tamper-evident JSONL audit log. Default shopify-operations-audit.jsonl in the working directory."
}
]
}Tools
Reported by the attributed source; not independently observed by Koskamo.
Connect from your client
Each snippet configures the same source-provided package; replace placeholders before use.
Cursor
{
"mcpServers": {
"shopify-operations-mcp": {
"command": "npx",
"args": [
"-y",
"shopify-operations-mcp@0.1.2"
],
"env": {
"SHOPIFY_STORE_DOMAIN": "<YOUR_SHOPIFY_STORE_DOMAIN>",
"SHOPIFY_ADMIN_TOKEN": "<YOUR_SHOPIFY_ADMIN_TOKEN>",
"SHOPIFY_CONFIG": "<YOUR_SHOPIFY_CONFIG>",
"SHOPIFY_PLAN_TTL_MS": "<YOUR_SHOPIFY_PLAN_TTL_MS>",
"SHOPIFY_APPROVAL_SERVER_PORT": "<YOUR_SHOPIFY_APPROVAL_SERVER_PORT>",
"SHOPIFY_PROTECTED_TAGS": "<YOUR_SHOPIFY_PROTECTED_TAGS>",
"SHOPIFY_CALLER_ID": "<YOUR_SHOPIFY_CALLER_ID>",
"SHOPIFY_AUDIT_PATH": "<YOUR_SHOPIFY_AUDIT_PATH>"
}
}
}
}Cline
{
"mcpServers": {
"shopify-operations-mcp": {
"command": "npx",
"args": [
"-y",
"shopify-operations-mcp@0.1.2"
],
"env": {
"SHOPIFY_STORE_DOMAIN": "<YOUR_SHOPIFY_STORE_DOMAIN>",
"SHOPIFY_ADMIN_TOKEN": "<YOUR_SHOPIFY_ADMIN_TOKEN>",
"SHOPIFY_CONFIG": "<YOUR_SHOPIFY_CONFIG>",
"SHOPIFY_PLAN_TTL_MS": "<YOUR_SHOPIFY_PLAN_TTL_MS>",
"SHOPIFY_APPROVAL_SERVER_PORT": "<YOUR_SHOPIFY_APPROVAL_SERVER_PORT>",
"SHOPIFY_PROTECTED_TAGS": "<YOUR_SHOPIFY_PROTECTED_TAGS>",
"SHOPIFY_CALLER_ID": "<YOUR_SHOPIFY_CALLER_ID>",
"SHOPIFY_AUDIT_PATH": "<YOUR_SHOPIFY_AUDIT_PATH>"
}
}
}
}VS Code
{
"servers": {
"shopify-operations-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"shopify-operations-mcp@0.1.2"
],
"env": {
"SHOPIFY_STORE_DOMAIN": "<YOUR_SHOPIFY_STORE_DOMAIN>",
"SHOPIFY_ADMIN_TOKEN": "<YOUR_SHOPIFY_ADMIN_TOKEN>",
"SHOPIFY_CONFIG": "<YOUR_SHOPIFY_CONFIG>",
"SHOPIFY_PLAN_TTL_MS": "<YOUR_SHOPIFY_PLAN_TTL_MS>",
"SHOPIFY_APPROVAL_SERVER_PORT": "<YOUR_SHOPIFY_APPROVAL_SERVER_PORT>",
"SHOPIFY_PROTECTED_TAGS": "<YOUR_SHOPIFY_PROTECTED_TAGS>",
"SHOPIFY_CALLER_ID": "<YOUR_SHOPIFY_CALLER_ID>",
"SHOPIFY_AUDIT_PATH": "<YOUR_SHOPIFY_AUDIT_PATH>"
}
}
}
}Claude Desktop
{
"mcpServers": {
"shopify-operations-mcp": {
"command": "npx",
"args": [
"-y",
"shopify-operations-mcp@0.1.2"
],
"env": {
"SHOPIFY_STORE_DOMAIN": "<YOUR_SHOPIFY_STORE_DOMAIN>",
"SHOPIFY_ADMIN_TOKEN": "<YOUR_SHOPIFY_ADMIN_TOKEN>",
"SHOPIFY_CONFIG": "<YOUR_SHOPIFY_CONFIG>",
"SHOPIFY_PLAN_TTL_MS": "<YOUR_SHOPIFY_PLAN_TTL_MS>",
"SHOPIFY_APPROVAL_SERVER_PORT": "<YOUR_SHOPIFY_APPROVAL_SERVER_PORT>",
"SHOPIFY_PROTECTED_TAGS": "<YOUR_SHOPIFY_PROTECTED_TAGS>",
"SHOPIFY_CALLER_ID": "<YOUR_SHOPIFY_CALLER_ID>",
"SHOPIFY_AUDIT_PATH": "<YOUR_SHOPIFY_AUDIT_PATH>"
}
}
}
}Let your agent find its tools
Find servers like shopify-operations-mcp from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.