使用说明
Shopify MCP服务器
(如果你愿意,请留下一颗星!)
Shopify API的MCP服务器,通过GraphQL API实现与商店数据的交互。此服务器提供用于管理产品、客户、订单等的工具。
📦 包名称: shopify-mcp
🚀 命令: shopify-mcp (不是 shopify-mcp-server)
特性
- 产品管理:产品、变体和选项的完整CRUD(8个工具)
- 客户管理:完整的CRUD、合并和地址管理(8个工具)
- 订单管理:智能查找、取消、关闭/打开、标记为已支付、履行、退款(10个工具)
- 元场管理:获取、设置和删除任何资源上的图元字段(3个工具)
- 库存管理:设置各个位置的绝对库存数量(1个工具)
- 标签管理:添加/删除任何可标记资源上的标记(1个工具)
- 分页和排序:所有列表查询上的基于光标的分页和排序键
- 高级过滤:为所有列表端点传递Shopify查询语法
- GraphQL集成:与Shopify的GraphQL Admin API直接集成(2026-01)
- 全面的错误处理:清除API和身份验证问题的错误消息
先决条件
- Node.js(版本18或更高)
- 带有自定义应用程序的Shopify商店(请参阅下面的设置说明)
设置
认证
此服务器支持两种身份验证方法:
选项1:客户端凭据(开发者仪表板应用程序,2026年1月以上)
截至2026年1月1日,新的Shopify应用程序在 开发人员仪表板 并使用OAuth客户端凭据而不是静态访问令牌。
- 从您的Shopify管理员,转到 设置 > 应用程序和销售渠道
- 点击 开发应用程序 > 在开发仪表板中构建应用程序
- 创建新应用程序并配置 管理API范围:
read_products,write_productsread_customers,write_customersread_orders,write_orders
- 在您的商店中安装应用程序
- 复制您的 客户端ID 和 客户端密钥 从应用程序的API凭据
服务器将自动将这些交换为访问令牌,并在到期前刷新(令牌有效期约为24小时)。
选项2:静态访问令牌(传统应用程序)
如果你有一个现有的静态自定义应用程序 shpat_ 访问令牌,您仍然可以直接使用它。
使用Claude Desktop
客户端凭据(推荐):
{
"mcpServers": {
"shopify": {
"command": "npx",
"args": [
"shopify-mcp",
"--clientId",
"<YOUR_CLIENT_ID>",
"--clientSecret",
"<YOUR_CLIENT_SECRET>",
"--domain",
"<YOUR_SHOP>.myshopify.com"
]
}
}
}
静态访问令牌(传统):
{
"mcpServers": {
"shopify": {
"command": "npx",
"args": [
"shopify-mcp",
"--accessToken",
"<YOUR_ACCESS_TOKEN>",
"--domain",
"<YOUR_SHOP>.myshopify.com"
]
}
}
}
Claude Desktop配置文件的位置:
- MacOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%/Claude/claude_desktop_config.json
使用Claude代码
客户端凭据:
claude mcp add shopify -- npx shopify-mcp \
--clientId YOUR_CLIENT_ID \
--clientSecret YOUR_CLIENT_SECRET \
--domain your-store.myshopify.com
静态访问令牌(传统):
claude mcp add shopify -- npx shopify-mcp \
--accessToken YOUR_ACCESS_TOKEN \
--domain your-store.myshopify.com
替代方案:使用环境变量在本地运行
如果您更喜欢使用环境变量而不是命令行参数:
-
创建一个
.env使用您的Shopify凭据文件:客户端凭据:
SHOPIFY_CLIENT_ID=your_client_id SHOPIFY_CLIENT_SECRET=your_client_secret MYSHOPIFY_DOMAIN=your-store.myshopify.com静态访问令牌(传统):
SHOPIFY_ACCESS_TOKEN=your_access_token MYSHOPIFY_DOMAIN=your-store.myshopify.com -
使用npx运行服务器:
npx shopify-mcp
直接安装(可选)
如果要全局安装该软件包:
npm install -g shopify-mcp
然后运行它:
shopify-mcp --clientId=<ID> --clientSecret=<SECRET> --domain=<YOUR_SHOP>.myshopify.com
附加选项
--apiVersion:指定Shopify API版本(默认值:2026-01).也可以通过以下方式设置SHOPIFY_API_VERSION环境变量。
⚠️ 重要提示: 如果在使用命令行参数时看到有关“SHOPY_ACCESS_TOKEN环境变量是必需的”的错误,则可能安装了不同的包。确保您正在使用 shopify-mcp,不 shopify-mcp-server.
可用工具(31)
分页、排序和过滤
所有列表查询工具(get-products, get-customers, get-orders, get-customer-orders)支持:
- 基于光标的分页:
after/before(光标字符串),带pageInfo在回复中(hasNextPage,hasPreviousPage,startCursor,endCursor) - 排序:
sortKey(枚举特定于每个资源)和reverse(布尔值) - 高级过滤:
query或searchQuery参数接受 Shopify查询语法
产品管理(8个工具)
-
get-products- 获取所有产品或按标题搜索,并进行分页和排序
- 输入:
searchTitle(字符串,可选):按标题过滤产品(包装在title:*...*)limit(数字,默认值:10):要退回的最大产品数量query(string,可选):原始Shopify查询字符串(例如。"status:active vendor:Nike tag:sale")sortKey(字符串,可选):其中之一CREATED_AT,ID,INVENTORY_TOTAL,PRODUCT_TYPE,PUBLISHED_AT,RELEVANCE,TITLE,UPDATED_AT,VENDORreverse(boolean,可选):颠倒排序顺序after/before(字符串,可选):分页游标
-
get-product-by-id- 按ID获取特定产品,包括搜索引擎优化、选项、媒体、变体和收藏等全部详细信息
- 输入:
productId(字符串,必填):Shopify产品GID
- 退货:
productType,descriptionHtml,seo,options(与optionValues),media(图像),variants,collections,tags,vendor、价格范围、库存
-
create-product- 创建新产品。使用时
productOptions,Shopify注册了所有选项值,但只创建了一个默认变量(每个选项的第一个值,价格为0美元)。使用manage-product-variants随着strategy: REMOVE_STANDALONE_VARIANT然后创建所有带有价格的真实变体。 - 输入:
title(字符串,必填):产品的标题descriptionHtml(字符串,可选):HTML描述handle(字符串,可选):URL slug。如果省略,则从标题自动生成vendor(字符串,可选):产品供应商productType(字符串,可选):产品类型tags(字符串数组,可选):产品标签status(字符串,可选):"ACTIVE","DRAFT",或"ARCHIVED".默认值"DRAFT"seo(对象,可选):{ title, description }搜索引擎metafields(对象数组,可选):自定义图元字段(namespace,key,value,type)productOptions(对象数组,可选):创建内联的选项,例如。[{ name: "Size", values: [{ name: "S" }, { name: "M" }] }]最多3个选项。collectionsToJoin(字符串数组,可选):收集GID以将产品添加到
- 创建新产品。使用时
-
update-product- 更新现有产品的字段
- 输入:
id(字符串,必填):Shopify产品GIDtitle(字符串,可选):新标题descriptionHtml(字符串,可选):新描述handle(字符串,可选):新URL段符vendor(字符串,可选):新供应商productType(字符串,可选):新产品类型tags(字符串数组,可选):新标签(覆盖现有标签)status(字符串,可选):"ACTIVE","DRAFT",或"ARCHIVED"seo(对象,可选):{ title, description }搜索引擎metafields(对象数组,可选):要设置或更新的元字段collectionsToJoin(字符串数组,可选):收集GID以将产品添加到collectionsToLeave(字符串数组,可选):收集GID以从中删除产品redirectNewHandle(boolean,可选):如果为true,则旧句柄重定向到新句柄
-
delete-product- 删除产品
- 输入:
id(字符串,必填):Shopify产品GID
-
manage-product-options- 创建、更新或删除产品选项(例如尺寸、颜色)
- 输入:
productId(字符串,必填):Shopify产品GIDaction(字符串,必填):"create","update",或"delete"variantStrategy(字符串,可选):"LEAVE_AS_IS"(默认)或"CREATE"--控制添加选项时是否生成新的变体组合- 对于
action: "create":options(数组,必填):创建选项,例如。[{ name: "Size", values: ["S", "M", "L"] }]
- 对于
action: "update":optionId(字符串,必填):要更新的GID选项name(字符串,可选):选项的新名称position(数字,可选):新职位valuesToAdd(字符串数组,可选):要添加的值valuesToDelete(字符串数组,可选):要删除的GID值
- 对于
action: "delete":optionIds(字符串数组,必填):要删除的选项GID
-
manage-product-variants- 批量创建或更新产品变体
- 输入:
productId(字符串,必填):Shopify产品GIDstrategy(string,可选):创建时如何处理默认变量。"DEFAULT"(自动删除“默认标题”),"REMOVE_STANDALONE_VARIANT"(建议完全控制),或"PRESERVE_STANDALONE_VARIANT"variants(数组,必填):要创建或更新的变量。每种变体:id(字符串,可选):用于更新的变量GID。省略以创建新price(字符串,可选):价格,例如。"49.00"compareAtPrice(字符串,可选):按价格比较以显示折扣sku(字符串,可选):SKU(映射到inventoryItem.sku)tracked(布尔值,可选):是否跟踪库存。集false按需打印taxable(boolean,可选):变量是否应纳税barcode(字符串,可选):条形码weight(数字,可选):变体的重量weightUnit(字符串,可选):"GRAMS","KILOGRAMS","OUNCES",或"POUNDS"optionValues(数组,可选):选项值,例如。[{ optionName: "Size", name: "A4" }]
-
delete-product-variants- 从产品中删除一个或多个变体
- 输入:
productId(字符串,必填):Shopify产品GIDvariantIds(字符串数组,必填):要删除的变量GID
客户管理(8个工具)
-
get-customers- 通过搜索、分页和排序列出客户
- 输入:
searchQuery(字符串,可选):Freetext或Shopify查询语法(例如。"country:US tag:vip orders_count:>5")limit(数字,默认值:10):可退回的最大客户数sortKey(字符串,可选):其中之一CREATED_AT,ID,LAST_UPDATE,LOCATION,NAME,ORDERS_COUNT,RELEVANCE,TOTAL_SPENT,UPDATED_ATreverse(boolean,可选):颠倒排序顺序after/before(字符串,可选):分页游标
-
get-customer-by-id- 通过ID获取单个客户,并提供完整的详细信息
- 输入:
id(字符串,必填):Shopify客户ID(仅限数字,例如。"6276879810626")
- 返回:姓名、电子邮件、电话、地址、标签、备注、税务状态、支出金额、订单计数、图元字段
-
create-customer- 创建新客户
- 输入:
firstName(字符串,可选):客户的名字lastName(字符串,可选):客户的姓氏email(字符串,可选):客户的电子邮件地址phone(字符串,可选):客户的电话号码tags(字符串数组,可选):要应用的标签note(string,可选):关于客户的注释taxExempt(boolean,可选):客户是否免税metafields(对象数组,可选):自定义图元字段(namespace,key,value,type)addresses(对象数组,可选):客户地址(address1,address2,city,provinceCode,zip,country,phone)
-
update-customer- 更新客户信息
- 输入:
id(字符串,必填):Shopify客户ID(仅限数字,例如。"6276879810626")firstName(字符串,可选):客户的名字lastName(字符串,可选):客户的姓氏email(字符串,可选):客户的电子邮件地址phone(字符串,可选):客户的电话号码tags(字符串数组,可选):应用于客户的标签note(string,可选):关于客户的注释taxExempt(boolean,可选):客户是否免税emailMarketingConsent(对象,可选):电子邮件营销同意设置marketingState(字符串,必填):"NOT_SUBSCRIBED","SUBSCRIBED","UNSUBSCRIBED",或"PENDING"consentUpdatedAt(字符串,可选):ISO 8601时间戳marketingOptInLevel(字符串,可选):"SINGLE_OPT_IN","CONFIRMED_OPT_IN",或"UNKNOWN"
metafields(对象数组,可选):客户图元字段
-
delete-customer- 删除客户
- 输入:
id(字符串,必填):Shopify客户ID(仅限数字,例如。"6276879810626")
-
customer-merge- 将两条客户记录合并为一条
- 输入:
customerOneId(string,必填):第一个客户的GIDcustomerTwoId(string,必填):第二个客户的GIDoverrideFields(对象,可选):覆盖要向哪个客户保留哪些字段(名字、姓氏、电子邮件、电话、默认地址、注释、标签)
-
manage-customer-address- 创建、更新或删除客户的邮寄地址
- 输入:
customerId(字符串,必填):客户GIDaction(字符串,必填):"create","update",或"delete"addressId(字符串,可选):地址GID(更新/删除所需)address(对象,可选):地址字段(创建/更新所需):address1,address2,city,company,countryCode,firstName,lastName,phone,provinceCode,zipsetAsDefault(boolean,可选):设置为客户的默认地址
订单管理(10个工具)
-
get-orders- 通过过滤、分页和排序获取订单
- 输入:
status(字符串,可选):"any","open","closed",或"cancelled".默认值"any"limit(数字,默认值:10):要返回的最大订单数query(string,可选):原始Shopify查询字符串(例如。"financial_status:paid fulfillment_status:shipped tag:rush")sortKey(字符串,可选):其中之一CREATED_AT,ORDER_NUMBER,TOTAL_PRICE,FINANCIAL_STATUS,FULFILLMENT_STATUS,UPDATED_AT,CUSTOMER_NAME,PROCESSED_AT,ID,RELEVANCEreverse(boolean,可选):颠倒排序顺序after/before(字符串,可选):分页游标
-
get-order-by-id- 通过智能查找按ID获取特定订单——接受订单名称(
#77235或77235),数字ID(8054938337547),或完整GID(gid://shopify/Order/...) - 输入:
orderId(字符串,必填):订单名称、数字ID或完整GID
- 退货:定价、客户、送货/账单地址、行项目、标签、注释、元字段、取消原因、退货状态、折扣码、订单号、时间戳
- 通过智能查找按ID获取特定订单——接受订单名称(
-
update-order- 更新现有订单
- 输入:
id(字符串,必填):Shopify订单GIDtags(字符串数组,可选):订单的新标签email(字符串,可选):更新订单上的客户电子邮件note(字符串,可选):订单备注phone(字符串,可选):订单的电话号码poNumber(字符串,可选):采购订单号customAttributes(对象数组,可选):自定义键值属性metafields(对象数组,可选):对图元字段进行排序shippingAddress(对象,可选):收货地址字段
-
get-customer-orders- 通过分页和排序为特定客户获取订单
- 输入:
customerId(字符串,必填):Shopify客户ID(仅限数字,例如。"6276879810626")limit(数字,默认值:10):要返回的最大订单数sortKey(字符串,可选):与排序键相同get-ordersreverse(boolean,可选):颠倒排序顺序after/before(字符串,可选):分页游标
-
order-cancel- 取消订单,提供退款、补货和客户通知选项。 不可逆转。
- 输入:
orderId(字符串,必填):订购GIDreason(字符串,必填):"CUSTOMER","DECLINED","FRAUD","INVENTORY","OTHER",或"STAFF"restock(布尔值,必填):是否重新进货notifyCustomer(boolean,默认值:false):通知客户staffNote(字符串,可选):内部注释refund(布尔值,可选):退款至原始付款方式
-
order-close-open- 关闭或重新打开订单
- 输入:
orderId(字符串,必填):订购GIDaction(字符串,必填):"close"或"open"
-
order-mark-as-paid- 将订单标记为已付款(手动/离线付款)
- 输入:
orderId(字符串,必填):订购GID
-
create-fulfillment- 创建带有可选跟踪功能的订单履行(将商品标记为已发货)
- 输入:
lineItemsByFulfillmentOrder(数组,必填):履行订单和要履行的行项目trackingInfo(对象,可选):{ number, url, company }跟踪详情notifyCustomer(布尔值,默认值:false):发送发货通知
-
refund-create- 通过可选的重新进货创建全额或部分退款
- 输入:
orderId(字符串,必填):订购GIDrefundLineItems(数组,可选):要退款的行项目lineItemId,quantity,restockType(CANCEL/RETURN/NO_RESTOCK),locationIdshipping(对象,可选):{ amount, fullRefund }运费退款note(字符串,可选):退款通知notify(布尔值,可选):发送退款通知
-
create-draft-order- 为电话/聊天销售、发票或批发创建订单草案
- 输入:
lineItems(数组,必填):产品变体(variantId)或定制项目(title+价格)。最多499customerId(字符串,可选):客户GIDemail,phone,note,tags,poNumber(可选)shippingAddress,billingAddress(对象,可选)appliedDiscount(对象,可选):{ title, value, valueType }订单级别折扣
订单管理草稿(1个工具)
-
complete-draft-order- 完成订单草稿,将其转换为真实订单
- 输入:
draftOrderId(字符串,必填):草拟订单GIDpaymentGatewayId(字符串,可选):支付网关GID
元场管理(3个工具)
-
get-metafields- 获取任何Shopify资源(产品、订单、客户、变体、集合等)的图元字段
- 输入:
ownerId(string,必填):任何资源的GIDnamespace(字符串,可选):按命名空间筛选first(数字,默认值:25):要返回的图元字段数after(字符串,可选):分页光标
-
set-metafields- 在任何Shopify资源上设置图元字段。以原子方式创建或更新多达25个图元字段
- 输入:
metafields(数组,必填):要设置的元字段,每个都有ownerId,key,value,可选namespace,type
-
delete-metafields- 从任何Shopify资源中删除图元字段
- 输入:
metafields(数组,必填):要删除的元字段,每个都有ownerId,namespace,key
库存管理(1个工具)
-
inventory-set-quantities- 为特定位置的物品设置绝对库存数量
- 输入:
reason(字符串,必填):更改原因(例如。"correction","cycle_count_available")name(字符串,必填):"available"或"on_hand"quantities(数组,必填):带inventoryItemId,locationId,quantity
标签管理(1个工具)
-
manage-tags- 在任何可标记资源(订单、产品、客户、草稿订单、文章)上添加或删除标签
- 输入:
id(string,必填):资源的GIDtags(字符串数组,必填):要添加或删除的标签action(字符串,必填):"add"或"remove"
订单查询筛选器参考
这 get-orders 工具 query 参数支持 Shopify搜索语法:
| 筛选器 | 示例 |
|---|---|
name |
name:#77235 |
created_at |
created_at:>2024-01-01 或 created_at:2024-01-01..2024-03-31 |
updated_at |
updated_at:>2024-06-01 |
financial_status |
financial_status:paid |
fulfillment_status |
fulfillment_status:shipped |
status |
status:open |
email |
email:customer@example.com |
tag / tag_not |
tag:vip tag_not:wholesale |
discount_code |
discount_code:SUMMER20 |
sku |
sku:PROD-001 |
risk_level |
risk_level:high |
gateway |
gateway:shopify_payments |
test |
test:true |
调试
如果遇到问题,请检查Claude Desktop的MCP日志:
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
许可证
麻省理工学院