使用说明
Shopify MCP服务器
A. 模型上下文协议(MCP) 将Claude(或任何兼容MCP的AI)直接连接到您的Shopify商店的服务器。通过自然语言管理产品、订单、客户、收款、库存、履行和webhooks。
这有什么作用
连接后,您可以像这样与Shopify商店交谈:
- “显示今天所有未完成的订单”
- “创建一款名为夏季T恤的新产品,价格29.99欧元,状态草稿”
- “我们有多少活性产品?”
- “将产品X的库存更新到位置Y的50个单位”
需求
- Python 3.11+
- Shopify商店(任何计划)
- 具有管理员API访问权限的Shopify自定义应用程序(请参阅下面的设置)
- Claude.ai Pro/团队/企业 或 任何兼容MCP的客户端
步骤1--获取您的Shopify凭据
你需要两样东西: 店名 和a 访问令牌.
1a。查找您的店铺名称
您的店铺名称是前面的部分 .myshopify.com。如果您的URL是 acme-store.myshopify.com,您的店铺名称是 acme-store.
1b。创建自定义应用程序并获取访问令牌
⚠️ 重要提示: Shopify的常规API密钥在此不起作用。你需要一个 管理员API访问令牌 来自自定义应用程序。严格遵循这些步骤。
- 去你的 Shopify管理员 →
Settings→Apps and sales channels - 点击 开发应用程序 (右上角)
- 如果出现提示,请单击 允许自定义应用程序开发
- 点击 创建应用程序 并为其命名(例如。
MCP Server) - 首选 配置 → click 配置管理员API作用域
- 选择您需要的权限。要获得完全访问权限,请启用:
read_products,write_productsread_orders,write_ordersread_customers,write_customersread_inventory,write_inventoryread_fulfillments,write_fulfillmentsread_webhooks,write_webhooks
- 点击 保存
- 去 API证书 tab → click 安装应用程序
- 点击 显示令牌一次 --立即复制此令牌,它以开头
shpat_...
💡 您只能看到此令牌一次。如果你丢失了它,你需要卸载并重新安装该应用程序以生成一个新的应用程序。
步骤2——设置服务器
克隆仓库
git clone https://github.com/daanjonk/shopify-mcp.git
cd shopify-mcp
安装依赖项
pip install -r requirements.txt
配置环境变量
复制示例文件并填写您的值:
cp .env.example .env
打开 .env 并填写:
SHOPIFY_STORE=your-store-name # e.g. acme-store (NOT acme-store.myshopify.com)
SHOPIFY_ACCESS_TOKEN=shpat_xxxx... # The token you copied in Step 1
就是这样——其他值都有合理的默认值。
启动服务器
python server.py
您应该看到:
INFO Token mode: static SHOPIFY_ACCESS_TOKEN (no auto-refresh)
INFO Uvicorn running on http://0.0.0.0:8000
您的MCP服务器现在正在运行 http://localhost:8000/mcp.
步骤3——部署到云端(用于远程访问)
要将其与Claude.ai一起使用,服务器需要在互联网上公开访问。最简单的选择是 铁路 --免费版运行良好。
在铁路上部署
- 首选 railway应用程序 并使用GitHub登录
- 点击 新项目 → 从GitHub仓库部署
- 选择您的分叉
shopify-mcp仓库 - 铁路将检测到
Dockerfile并开始建造 - 部署后,转到 设置 → 网络 → 生成域
- 复制您的公共URL(例如。
https://shopify-mcp-production.up.railway.app)
在铁路上设置环境变量
在您的铁路项目中,请访问 变量 并添加:
| 变量 | 值 |
|---|---|
SHOPIFY_STORE |
your-store-name |
SHOPIFY_ACCESS_TOKEN |
shpat_xxxx... |
PORT |
8000 |
MCP_TRANSPORT |
streamable-http |
保存后,Railway将自动重启服务器。
第四步——联系克劳德
获取MCP服务器URL
您的MCP端点是您的铁路URL+ /mcp:
https://your-app.up.railway.app/mcp
在Claude.ai中添加MCP服务器
⚠️ 需要身份验证令牌。 Claude.ai要求您在连接到远程MCP服务器时设置身份验证令牌。这与您的Shopify令牌是分开的,它保护您的MCP服务器免受未经授权的访问。
在Claude中添加服务器:
-
首选 claude.ai → 单击您的个人资料(左下角)→ 设置
-
首选 集成 (或 MCP服务器 取决于你的计划)
-
点击 添加集成 / 添加MCP服务器
-
填写:
- 姓名:
Shopify - 网址:
https://your-app.up.railway.app/mcp
- 姓名:
-
如果提示 认证令牌,您有两个选择:
选项A——无身份验证(仅限开发): 如果您的服务器没有身份验证中间件,请留空。仅当您的Railway应用程序URL未公开共享时才执行此操作。
选项B——向服务器添加身份验证: 设定一个
BEARER_TOKENRailway中的环境变量,然后添加身份验证中间件server.py(见下文)。然后将相同的令牌粘贴到Claude的集成设置中。
添加承载令牌身份验证(建议用于生产)
将这些行添加到 server.py 在FastMCP初始化之后:
import secrets
from starlette.middleware.base import BaseHTTPMiddleware
from starlette.responses import Response
BEARER_TOKEN = os.environ.get("BEARER_TOKEN", "")
class BearerAuthMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request, call_next):
if BEARER_TOKEN:
auth = request.headers.get("Authorization", "")
if auth != f"Bearer {BEARER_TOKEN}":
return Response("Unauthorized", status_code=401)
return await call_next(request)
mcp.app.add_middleware(BearerAuthMiddleware)
然后添加 BEARER_TOKEN=your-secret-token-here 将该值粘贴到Railway环境变量中,并将其作为身份验证令牌粘贴到Claude的集成设置中。
可用工具
连接后,Claude可以访问这些工具:
| 工具 | 说明 |
|---|---|
shopify_list_products |
列出带过滤器的产品 |
shopify_get_product |
按ID获取单个产品 |
shopify_create_product |
创建新产品 |
shopify_update_product |
更新现有产品 |
shopify_delete_product |
删除产品 |
shopify_count_products |
清点产品 |
shopify_list_orders |
使用筛选器列出订单 |
shopify_get_order |
按ID获取单个订单 |
shopify_count_orders |
清点订单 |
shopify_close_order |
关闭订单 |
shopify_cancel_order |
取消订单 |
shopify_list_customers |
列出客户 |
shopify_search_customers |
搜索客户 |
shopify_get_customer |
获得一个客户 |
shopify_create_customer |
创建新客户 |
shopify_update_customer |
更新客户 |
shopify_get_customer_orders |
获取客户的所有订单 |
shopify_list_collections |
列出自定义或智能收藏 |
shopify_get_collection_products |
获取集合中的产品 |
shopify_list_locations |
列出库存位置 |
shopify_get_inventory_levels |
获取库存水平 |
shopify_set_inventory_level |
设置库存数量 |
shopify_list_fulfillments |
列出订单的履行情况 |
shopify_create_fulfillment |
完成订单 |
shopify_get_shop |
获取店铺信息 |
shopify_list_webhooks |
列出webhooks |
shopify_create_webhook |
创建webhook |
环境变量引用
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
SHOPIFY_STORE |
✅ 是 | -- | 您的店铺名称(例如。 my-store) |
SHOPIFY_ACCESS_TOKEN |
✅ 是* | - | 静态管理员API访问令牌(shpat_...) |
SHOPIFY_CLIENT_ID |
否 | -- | OAuth客户端ID(静态令牌的替代方案) |
SHOPIFY_CLIENT_SECRET |
否 | -- | OAuth客户端密钥(静态令牌的替代方案) |
SHOPIFY_API_VERSION |
没有 | 2024-10 |
Shopify API版本 |
PORT |
没有 | 8000 |
服务器端口 |
MCP_TRANSPORT |
没有 | streamable-http |
传输协议 |
BEARER_TOKEN |
无 | -- | 保护MCP端点的身份验证令牌 |
*要么 SHOPIFY_ACCESS_TOKEN 或 SHOPIFY_CLIENT_ID + SHOPIFY_CLIENT_SECRET 是必需的。
故障排除
“身份验证失败”错误
→ 仔细检查你的 SHOPIFY_ACCESS_TOKEN。确保它从以下内容开始 shpat_ 并且自定义应用程序已安装在您的商店中。
“权限被拒绝”/403错误 → 您的令牌没有所需的API作用域。返回Shopify Admin中的自定义应用程序,添加缺少的作用域,然后重新安装应用程序(这将生成一个新令牌)。
“缺少SHOPIY_STORE环境变量”
→ 确保 SHOPIFY_STORE 已设置,仅包含商店名称,而不包含完整的URL。✅ my-store ❌ my-store.myshopify.com
克劳德无法连接到服务器
→ 确保您的Railway部署处于活动状态,并且已生成域。通过访问来测试端点 https://your-app.up.railway.app/mcp 在浏览器中,您应该得到一个响应(而不是404)。
令牌显示一次,然后在Shopify中消失 → 这很正常。Shopify只显示一次令牌。如果丢失了,请在Shopify Admin中卸载该应用程序→ API证书→ 卸载,然后重新安装以生成新令牌。
许可证
麻省理工学院