关于 shopify-mcp
shopify-mcp 是通过 Admin GraphQL API 管理 Shopify 商店的 MCP 服务。可选的 ComfyUI 桥接功能能够生成或精修商品图,并将图片用于创建和更新商品。
主要功能
- 01管理商品、订单和客户
- 02处理库存、变体和商品系列
- 03管理履约与草稿订单
- 04操作 metafield、metaobject 和 webhook
- 05运行 ShopifyQL 分析查询
- 06通过 ComfyUI 生成或精修商品图
适用场景
- 01创建带生成图片的商品
- 02更新商品详情、变体和库存
- 03管理草稿订单与履约
- 04查询商店销售及商品分析数据
MCP 相关
向 MCP 客户端提供 Shopify Admin API 操作,包括商品、订单、库存和商店管理工具。配置 ComfyUI 后,桥接工具可生成或精修图片并将其附加到 Shopify 商品。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @miller-joe/shopify-mcpSHOPIFY_STOREStore domain, e.g. 'my-store' or 'my-store.myshopify.com'SHOPIFY_ACCESS_TOKEN密钥Admin API access token (shpat_...). See README for how to create a custom app on a dev store.SHOPIFY_API_VERSIONShopify GraphQL Admin API version (default: 2026-04)COMFYUI_URLComfyUI HTTP URL for bridge tools. When unset, generate_* bridge tools are disabled.COMFYUI_PUBLIC_URLExternally-reachable ComfyUI URL (defaults to COMFYUI_URL)COMFYUI_DEFAULT_CKPTDefault ComfyUI checkpoint filename for bridge tools (default: sd_xl_base_1.0.safetensors)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
shopify-mcp
适用于 Shopify 的 MCP 服务。提供完整的 Admin GraphQL API 工具,并通过 ComfyUI 图像生成实现 AI 驱动的商品创建桥接。
核心卖点
其他 Shopify MCP 基本都是简单的 Admin API 封装。这个服务可与 @miller-joe/comfyui-mcp 配合使用,让你可以提出这样的要求:
“创建一个名为 ‘Nebula Dreamer’ 的商品。为它生成一张宇宙风格的抽象图片,撰写符合氛围的描述,添加 astrology 标签,状态设为草稿。”
随后,Claude 会运行 ComfyUI、获取生成的图片、创建 Shopify 商品并附上图片,一次调用即可完成。
安装
# npx, no install
npx @miller-joe/shopify-mcp \
--shopify-store your-store.myshopify.com \
--shopify-access-token shpat_xxx
# Docker
docker run -p 9110:9110 \
-e SHOPIFY_STORE=your-store.myshopify.com \
-e SHOPIFY_ACCESS_TOKEN=shpat_xxx \
-e COMFYUI_URL=http://comfyui:8188 \
ghcr.io/miller-joe/shopify-mcp:latest
连接 MCP 客户端
claude mcp add --transport http shopify http://localhost:9110/mcp
或者将 MCP 网关指向 Streamable HTTP 端点。
配置
| CLI 标志 | 环境变量 | 默认值 | 说明 |
|---|---|---|---|
--shopify-store | SHOPIFY_STORE | (必填) | my-store 或 my-store.myshopify.com |
--shopify-access-token | SHOPIFY_ACCESS_TOKEN | (必填) | Admin API 令牌(shpat_…) |
--shopify-api-version | SHOPIFY_API_VERSION | 2026-04 | GraphQL Admin API 版本 |
--host | MCP_HOST | 0.0.0.0 | 绑定主机(仅 HTTP 模式) |
--port | MCP_PORT | 9110 | 绑定端口(仅 HTTP 模式) |
--stdio | MCP_TRANSPORT=stdio | (未设置) | 通过 stdio 而非 HTTP 传输 MCP。由优先使用 stdio 的 MCP 客户端(Claude Desktop、mcp-inspector)作为子进程启动时使用。 |
--comfyui-url | COMFYUI_URL | (可选) | 设置后启用桥接工具 |
--comfyui-public-url | COMFYUI_PUBLIC_URL | 与 --comfyui-url 相同 | 用于传递给 Shopify 的图片引用的外部 URL |
| (无标志) | COMFYUI_DEFAULT_CKPT | sd_xl_base_1.0.safetensors | 桥接工具的默认检查点 |
传输方式
默认情况下,服务使用 Streamable HTTP(适用于 Claude Code、MetaMCP 和原生 fetch)。传入 --stdio(或设置 MCP_TRANSPORT=stdio)即可切换为 stdio 模式;Claude Desktop 和 MCP Inspector 等优先使用 stdio 的客户端需要此模式:
// claude_desktop_config.json
{
"mcpServers": {
"shopify": {
"command": "npx",
"args": ["-y", "@miller-joe/shopify-mcp", "--stdio"],
"env": {
"SHOPIFY_STORE": "my-store.myshopify.com",
"SHOPIFY_ACCESS_TOKEN": "shpat_…"
}
}
}
}
获取 Shopify 访问令牌
简单方式,适用于现有开发商店: Shopify Admin → Apps → Develop apps → Create custom app → 启用相关 Admin API 权限范围(write_products、read_orders、write_inventory、read_customers)→ 安装 → 复制 Admin API 访问令牌(以 shpat_ 开头)。
适用于新应用(2026 年 1 月之后): 对于新建应用,旧版自定义应用令牌已弃用。使用 Dev Dashboard 的令牌交换流程获取可用令牌,然后在此处提供。多租户 OAuth 已列入路线图。
工具
核心 Admin
| 工具 | 描述 |
|---|---|
list_products | 使用 Shopify 查询语法分页搜索商品 |
get_product | 获取单个商品及其变体、图片和媒体 |
create_product | 创建商品(默认状态为 DRAFT);可选择附加图片 |
update_product | 更新标题、描述、标签、状态等 |
upload_product_image | 将公开图片 URL 附加到现有商品 |
list_orders | 按时间从新到旧列出订单,并支持查询筛选 |
get_order | 获取单个订单及其行项目 |
set_inventory_quantity | 设置某个地点的绝对现有库存数量 |
list_locations | 列出商店地点(用于库存操作) |
list_customers | 列出客户,并支持查询筛选 |
元字段
| 工具 | 描述 |
|---|---|
set_metafield | 在任何 HasMetafields 资源(产品、变体、系列、客户、订单、商店等)上创建或更新元字段 |
list_metafields | 列出资源的元字段,可按命名空间筛选 |
delete_metafield | 根据(ownerId、namespace、key)删除元字段 |
草稿订单
| 工具 | 描述 |
|---|---|
list_draft_orders | 使用 Shopify 查询筛选条件列出草稿订单 |
get_draft_order | 获取单个草稿订单及其订单项 |
create_draft_order | 创建草稿订单。订单项可以是变体引用,也可以是自定义项(标题 + 价格)。 |
update_draft_order | 更新客户、订单项、标签、备注和电子邮件 |
complete_draft_order | 将草稿订单转换为正式订单。paymentPending 会跳过扣款。 |
delete_draft_order | 删除尚未完成的草稿订单 |
Webhook
| 工具 | 描述 |
|---|---|
list_webhooks | 列出 Webhook 订阅;可按主题筛选 |
get_webhook | 获取单个订阅 |
create_webhook | 将 HTTPS 回调 URL 订阅到某个主题(例如 ORDERS_CREATE) |
update_webhook | 更改回调 URL、格式或字段/元字段筛选条件 |
delete_webhook | 删除订阅 |
Metaobject
| 工具 | 描述 |
|---|---|
list_metaobject_definitions | 查找商店中的 Metaobject 类型(架构),包括字段定义 |
list_metaobjects | 列出指定类型的 Metaobject |
get_metaobject | 获取单个 Metaobject 及其所有字段 |
create_metaobject | 创建 Metaobject(类型必须已存在定义)。支持 ACTIVE/DRAFT 状态。 |
update_metaobject | 创建或更新字段、更改句柄、切换可发布状态 |
delete_metaobject | 删除 Metaobject |
履约
| 工具 | 描述 |
|---|---|
list_fulfillment_orders | 列出订单的履约订单(每个配送地点一个),并显示各订单项的剩余数量 |
get_fulfillment_order | 获取单个履约订单 |
get_fulfillment | 获取单个履约记录(发货记录)及其追踪信息 |
create_fulfillment | 将履约订单(或指定数量)标记为已履约。可选择附加追踪信息并通知客户。 |
update_fulfillment_tracking | 更新现有履约的承运商、追踪号码或 URL |
cancel_fulfillment | 按 ID 取消履约 |
支持部分履约。传入包含各订单项 quantity 的特定 fulfillmentOrderLineItems,也可以省略该数组以履约整个履约订单。
变体和产品选项
| 工具 | 描述 |
|---|---|
list_variants | 列出产品的所有变体及其已选选项、价格、SKU 和库存 |
create_variants | 批量创建变体(最多 100 个),并设置选项值、价格、SKU、compareAtPrice 和初始库存 |
update_variants | 批量更新变体的价格、compareAtPrice、SKU、条形码、taxable、inventoryPolicy 和选项值 |
delete_variants | 批量删除产品的变体 |
reorder_variants | 设置变体从 1 开始的排序位置 |
add_product_options | 添加选项(尺寸 / 颜色 / 等)及其可选值。每个产品最多 3 个选项。 |
对于全新产品,创建首个实际变体时,必须使用 strategy="REMOVE_STANDALONE_VARIANT" 来替换自动生成的 "Default Title" 变体。
集合与标签
| 工具 | 描述 |
|---|---|
list_collections | 使用查询筛选条件列出集合 |
get_collection | 获取单个集合及其产品 |
create_collection | 创建手动集合,可选择预先添加产品 |
update_collection | 更新标题、描述或句柄 |
delete_collection | 删除集合 |
add_products_to_collection | 将产品添加到手动集合(由 Shopify 端的异步任务处理) |
remove_products_from_collection | 从手动集合中移除产品 |
add_tags | 为任何可添加标签的资源(Product、Order、Customer、DraftOrder、Collection)添加标签 |
remove_tags | 从可添加标签的资源中移除标签 |
分析(ShopifyQL)
| 工具 | 描述 |
|---|---|
run_shopifyql_query | 运行 ShopifyQL 查询,并将结果呈现为 ASCII 表格。传入 raw=true 可获取原始 JSON 载荷。 |
示例:
FROM sales SHOW total_sales BY day SINCE -30d TIMESERIESFROM products SHOW product_title, quantity_sold BY product_id SINCE -7d ORDER BY quantity_sold DESC LIMIT 10
ComfyUI 桥接(配置了 COMFYUI_URL 时)
| 工具 | 描述 |
|---|---|
generate_and_create_product | 生成图片并用它创建产品,一次调用即可完成。如果未提供标题和描述,则根据提示词生成。 |
generate_product_image | 生成图片并将其附加到现有产品。 |
refine_product_image | 对产品的主图(或指定 URL)运行 img2img,并附加优化后的图片。调整 denoise(0–1)可控制结果与源图的差异程度。 |
bulk_regenerate_images | 对符合查询条件的所有产品,使用模板化提示词运行生成器并附加新图片。 |
bulk_regenerate_images 的模板占位符:{title}、{handle}。
示例:一次调用完成整个流程
Claude, use generate_and_create_product:
prompt: "minimalist sunset mountain silhouette, warm gradient, vector style"
title: "Mountain Sunset Poster"
status: DRAFT
tags: ["posters", "nature", "minimalist"]
ComfyUI 生成图片,Shopify 创建并附加图片的产品,然后返回产品 ID 和图片 URL。一个提示词,一次调用,即可创建真实商品 listing。
架构
┌────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ MCP client │────▶│ shopify-mcp │────▶│ Shopify Admin │
│ (Claude etc.) │◀────│ (this server) │◀────│ GraphQL API │
└────────────────┘ └────────┬─────────┘ └─────────────────┘
│
│ (bridge tools only)
▼
┌──────────────────┐
│ ComfyUI │
│ (txt2img) │
└──────────────────┘
桥接工具通过 HTTP 直接调用 ComfyUI,获取图片 URL,然后将其传递给 Shopify 的 productCreateMedia mutation。Shopify 会获取图片并将其托管在自己的 CDN 上。
开发
git clone https://github.com/miller-joe/shopify-mcp
cd shopify-mcp
npm install
npm run dev # hot reload via tsx watch
npm run build
npm run typecheck
npm test
需要 Node 20+。
路线图
已发布:
- 核心产品 CRUD 及图片附加
- 订单读取、库存设置及位置、客户读取
- ComfyUI 桥接:
generate_and_create_product、generate_product_image、bulk_regenerate_images - Metafields:
set_metafield、list_metafields、delete_metafield - 草稿订单:创建 / 更新 / 完成 / 删除 / 列出 / 获取
- 集合与标签:CRUD、添加 / 移除产品、
add_tags/remove_tags - 变体和产品选项:批量创建 / 更新 / 删除 / 重新排序,以及
add_product_options - 履行:列出 / 获取履行订单、创建履行(支持部分履行)、更新跟踪信息、取消
- Webhook:列出 / 获取 / 创建 / 更新 / 删除
- Metaobjects:定义列表及 metaobject CRUD
- ShopifyQL 分析:
run_shopifyql_query,支持呈现为 ASCII 表格 - 图片优化桥接:
refine_product_image(使用 ComfyUI img2img 处理产品图片)
计划中:
- 面向新应用身份验证的 OAuth 令牌交换流程。
许可证
MIT © Joe Miller
支持
如果这为你节省了时间,欢迎支持开发:
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。