Shopify商店管理服务器

通过GraphQL API与Shopify商店数据交互的服务,提供产品、客户和订单管理功能,支持STDIO和HTTP两种操作模式。

  • by jdanigo
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 jdanigo/shopify-mcp

使用说明

Shopify MCP服务器

(如果你愿意,请留下一颗星!)

Shopify API的MCP服务器,通过GraphQL API实现与商店数据的交互。此服务器提供用于管理产品、客户、订单等的工具。

📦 包名称: shopify-mcp
🚀 命令: shopify-mcp (不是 shopify-mcp-server)

🌟 新特点

  • 🔄 Modo双:支持STDIO(用于IDE)和HTTP(用于远程访问)
  • 🌐 HTTP 服务器:通过API密钥认证的远程访问
  • 🔒 安全:强大的认证和CORS支持
  • 🛠 兼容:与光标、VS代码、克劳德桌面等一起工作

特性

  • 产品管理:搜索和检索产品信息
  • 客户管理:加载客户数据并管理客户标签
  • 订单管理:高级订单查询和筛选
  • GraphQL集成:与Shopify的GraphQL Admin API直接集成
  • 全面的错误处理:清除API和身份验证问题的错误消息

先决条件

  1. Node.js(版本16或更高)
  2. Shopify自定义应用访问令牌(请参阅下面的设置说明)

🚀 操作方式

该MCP服务器现在支持两种模式:

📱 STDIO模式(默认)

  • 与IDE兼容,如光标、VS代码、Claude Desktop
  • 过程到过程的直接沟通
  • 传统MCP配置

🌐 HTTP模式(新)

  • 通过API密钥进行身份验证的远程HTTP服务器
  • 从任何支持HTTP的工具访问
  • 非常适合分布式设备和远程访问

设置

Shopify访问令牌

要使用此MCP服务器,您需要在Shopify商店中创建一个自定义应用程序:

  1. 从您的Shopify管理员,转到 设置 > 应用程序和销售渠道
  2. 点击 开发应用程序 (您可能需要先启用开发人员预览)
  3. 点击 创建应用程序
  4. 为您的应用程序设置一个名称(例如,“Shopify MCP服务器”)
  5. 点击 配置管理员API作用域
  6. 选择以下范围:
    • read_products, write_products
    • read_customers, write_customers
    • read_orders, write_orders
  7. 点击 保存
  8. 点击 安装应用程序
  9. 点击 安装 让应用程序访问您的商店数据
  10. 安装后,您将看到 管理员API访问令牌
  11. 复制此令牌-您需要它进行配置

📋 快速配置

STDIO模式(传统)

克劳德桌面

将此添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "shopify": {
      "command": "npx",
      "args": [
        "shopify-mcp",
        "--accessToken",
        "<YOUR_ACCESS_TOKEN>",
        "--domain",
        "<YOUR_SHOP>.myshopify.com"
      ]
    }
  }
}

光标/VS代码

{
  "mcpServers": {
    "shopify": {
      "command": "node",
      "args": ["/ruta/a/shopify-mcp/dist/index.js"],
      "env": {
        "SHOPIFY_ACCESS_TOKEN": "tu_token",
        "MYSHOPIFY_DOMAIN": "tu-tienda.myshopify.com"
      }
    }
  }
}

Modo HTTP(远程)

1.互联网服务HTTP

# Instalar dependencias
npm install

# Compilar
npm run build

# Ejecutar en modo HTTP
SHOPIFY_ACCESS_TOKEN=tu_token \
MYSHOPIFY_DOMAIN=tu-tienda.myshopify.com \
SERVER_MODE=http \
API_KEY=tu-clave-api-segura \
npm run start:http

2.配置远程访问的IDE

{
  "mcpServers": {
    "shopify-remote": {
      "transport": "http",
      "url": "http://localhost:3000/mcp",
      "headers": {
        "X-API-Key": "tu-clave-api-segura"
      }
    }
  }
}

Claude Desktop配置文件的位置:

  • MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%/Claude/claude_desktop_config.json

替代方案:使用环境变量在本地运行

如果您更喜欢使用环境变量而不是命令行参数:

  1. 创建一个 .env 使用您的Shopify凭据文件:

    SHOPIFY_ACCESS_TOKEN=your_access_token
    MYSHOPIFY_DOMAIN=your-store.myshopify.com
    
  2. 使用npx运行服务器:

    npx shopify-mcp
    

直接安装(可选)

如果要全局安装该软件包:

npm install -g shopify-mcp

然后运行它:

shopify-mcp --accessToken=<YOUR_ACCESS_TOKEN> --domain=<YOUR_SHOP>.myshopify.com

⚠️ 重要提示: 如果在使用命令行参数时看到有关“SHOPY_ACCESS_TOKEN环境变量是必需的”的错误,则可能安装了不同的包。确保您正在使用 shopify-mcp,不 shopify-mcp-server.

可用工具

产品管理

  1. get-products

    • 获取所有产品或按标题搜索
    • 输入:
      • searchTitle (可选字符串):按标题筛选产品
      • limit (数量):可退回的最大产品数量
  2. get-product-by-id

    • 按ID获取特定产品
    • 输入:
      • productId (string):要检索的产品的ID
  3. create-product

    • 在店内创建新产品
    • 输入:
      • title (string):产品名称
      • descriptionHtml (string):产品描述
      • vendor (string):产品供应商
      • productType (string):产品类型
      • tags (array):产品标签
      • status (string):产品的状态“ACTIVE”、“DRAFT”、“ARCHIVED”。默认“草稿”
  4. create-order

    • 使用客户数据、产品和账单信息创建新订单
    • 输入:
      • customer (对象,必填):客户信息
        • email (字符串,必填):客户电子邮件地址
        • firstName (string):客户名字
        • lastName (string):客户姓氏
        • phone (string):客户电话号码
      • lineItems (数组,必填):订单中要包含的产品
        • variantId (字符串,必填):产品变体ID
        • quantity (数字,必填):订购数量
        • price (数字):每单位定制价格(可选)
      • billingAddress (object):账单地址信息
      • shippingAddress (object):收货地址信息
      • note (string):订单备注
      • tags (数组):订单标签
      • financialStatus (string):财务状况(“待定”、“已支付”等)
      • fulfillmentStatus (string):完成状态
      • sendReceipt (boolean):向客户发送收据电子邮件
      • inventoryBehaviour (string):如何处理库存

客户管理

  1. get-customers

    • 获取客户或按姓名/电子邮件搜索
    • 输入:
      • searchQuery (可选字符串):按姓名或电子邮件筛选客户
      • limit (可选数量,默认值:10):可退回的最大客户数量
  2. create-customer

    • 使用个人信息、地址和偏好创建新客户
    • 输入:
      • email (字符串,必填):客户电子邮件地址(必须唯一)
      • firstName (string):客户名字
      • lastName (string):客户姓氏
      • phone (string):客户电话号码
      • acceptsMarketing (boolean):客户是否接受营销电子邮件
      • marketingOptInLevel (字符串):营销选择加入级别(“SINGLE_opt_in”、“CONFIRMED_opt_in”、“未知”)
      • state (string):客户帐户状态(“禁用”、“邀请”、“启用”、“已停用”)
      • taxExempt (boolean):客户是否免税
      • note (string):关于客户的内部说明
      • tags (数组):组织的客户标签
      • addresses (数组):客户地址,需要地址1、城市、国家、邮政编码
      • metafields (数组):为客户自定义图元字段
  3. update-customer

    • 更新客户信息
    • 输入:
      • id (字符串,必填):Shopify客户ID(仅限数字ID,如“6276879810626”)
      • firstName (字符串,可选):客户的名字
      • lastName (字符串,可选):客户的姓氏
      • email (字符串,可选):客户的电子邮件地址
      • phone (字符串,可选):客户的电话号码
      • tags (字符串数组,可选):应用于客户的标签
      • note (string,可选):关于客户的注释
      • taxExempt (boolean,可选):客户是否免税
      • metafields (对象数组,可选):用于存储其他数据的客户元字段
  4. get-customer-orders

    • 获取特定客户的订单
    • 输入:
      • customerId (字符串,必填):Shopify客户ID(仅限数字ID,如“6276879810626”)
      • limit (可选数字,默认值:10):要返回的最大订单数

订单管理

  1. get-orders

    • 使用可选过滤功能获取订单
    • 输入:
      • status (可选字符串):按订单状态筛选
      • limit (可选数字,默认值:10):要返回的最大订单数
  2. get-order-by-id

    • 按ID获取特定订单
    • 输入:
      • orderId (字符串,必填):完整的Shopify订单ID(例如,“gid://shopify/Order/6090960994370")
  3. update-order

    • 用新信息更新现有订单
    • 输入:
      • id (字符串,必填):Shopify订单ID
      • tags (字符串数组,可选):订单的新标签
      • email (字符串,可选):更新客户电子邮件
      • note (字符串,可选):订单备注
      • customAttributes (对象数组,可选):订单的自定义属性
      • metafields (对象数组,可选):对图元字段进行排序
      • shippingAddress (对象,可选):收货地址信息

📚 补充文件

🔧 可用脚本

# Desarrollo
npm run dev          # Modo STDIO (por defecto)
npm run dev:http     # Modo HTTP
npm run dev:stdio    # Modo STDIO explícito

# Producción
npm run build        # Compilar TypeScript
npm run start        # Modo STDIO (por defecto)
npm run start:http   # Modo HTTP
npm run start:stdio  # Modo STDIO explícito

🌐 端点HTTP(Modo HTTP)

  • 健康检查: GET /health
  • MCP端点: GET /mcp (服务器发送的事件)

调试

音频

如果遇到问题,请检查Claude Desktop的MCP日志:

tail -n 20 -f ~/Library/Logs/Claude/mcp*.log

Modo HTTP

检查服务器日志和测试终结点:

# Verificar salud del servidor
curl -H "X-API-Key: tu-clave-api" http://localhost:3000/health

# Ver logs del servidor
npm run start:http

许可证

麻省理工学院