Spree Commerce: open-source B2B and marketplace ecommerce
Open-source B2B and marketplace ecommerce; new stores include an MCP server for AI agents.
作者提供的说明(英文原文)
Shopify Admin API tools: products, media, orders, customers, inventory, and sales channels
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
MYSHOPIFY_DOMAIN, SHOPIFY_CLIENT_ID, SHOPIFY_CLIENT_SECRET, SHOPIFY_ACCESS_TOKEN, SHOPIFY_API_VERSION标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"shopify": {
"command": "npx",
"args": [
"-y",
"@kisasa/shopify-mcp"
],
"env": {
"MYSHOPIFY_DOMAIN": "your-value",
"SHOPIFY_CLIENT_ID": "your-value",
"SHOPIFY_CLIENT_SECRET": "your-value",
"SHOPIFY_ACCESS_TOKEN": "your-value",
"SHOPIFY_API_VERSION": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add shopify --env MYSHOPIFY_DOMAIN=your-value --env SHOPIFY_CLIENT_ID=your-value --env SHOPIFY_CLIENT_SECRET=your-value --env SHOPIFY_ACCESS_TOKEN=your-value --env SHOPIFY_API_VERSION=your-value -- npx -y @kisasa/shopify-mcp运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"shopify": {
"command": "npx",
"args": [
"-y",
"@kisasa/shopify-mcp"
],
"env": {
"MYSHOPIFY_DOMAIN": "your-value",
"SHOPIFY_CLIENT_ID": "your-value",
"SHOPIFY_CLIENT_SECRET": "your-value",
"SHOPIFY_ACCESS_TOKEN": "your-value",
"SHOPIFY_API_VERSION": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"shopify": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@kisasa/shopify-mcp"
],
"env": {
"MYSHOPIFY_DOMAIN": "your-value",
"SHOPIFY_CLIENT_ID": "your-value",
"SHOPIFY_CLIENT_SECRET": "your-value",
"SHOPIFY_ACCESS_TOKEN": "your-value",
"SHOPIFY_API_VERSION": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
SHOPIFY_CLIENT_ID envSHOPIFY_API_VERSION env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月8日
注册名称已通过 GitHub 账户 kisasa 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:MYSHOPIFY_DOMAIN, SHOPIFY_CLIENT_SECRET, SHOPIFY_ACCESS_TOKEN
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(1.2.0)于8天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Spree Commerce: open-source B2B and marketplace ecommerce, Stripe MCP, MCP Cn Commerce
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Open-source B2B and marketplace ecommerce; new stores include an MCP server for AI agents.
MCP server integrating with Stripe - tools for customers, products, payments, and more.
8 read-only MCP platform entries; support is operation-specific; merchant live acceptance pending
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
MCP Server for Shopify API, enabling interaction with store data through GraphQL API. This server provides tools for managing products, customers, orders, and more.
📦 Package Name: `@kisasa/shopify-mcp` 🚀 Command: `shopify-mcp` (NOT `shopify-mcp-server`)
Built on lucasjahn/shopify-mcp, itself a fork of GeLi2001/shopify-mcp. See Credits.
fields parameter to fetch only the data you needcountOnly to get result counts without fetching dataThis server supports two authentication methods:
As of January 1, 2026, new Shopify apps are created in the Dev Dashboard and use OAuth client credentials instead of static access tokens.
read_products, write_productsread_customers, write_customersread_orders, write_ordersSome tools need additional scopes. Add only the ones for features you use:
| Scopes | Needed for |
|---|---|
read_all_orders | Orders older than 60 days (otherwise order tools only see recent orders) |
read_inventory, write_inventory | get-inventory-levels, inventory-set-quantities, update-inventory-item |
read_locations | get-locations, get-inventory-levels |
read_markets | get-markets |
read_draft_orders, write_draft_orders | create-draft-order, complete-draft-order |
read_merchant_managed_fulfillment_orders, write_merchant_managed_fulfillment_orders | get-fulfillment-orders, create-fulfillment |
read_publications, write_publications | get-publications, get-product-publications, publish-product, unpublish-product |
For every tool, the full list is:
read_products,write_products,read_customers,write_customers,read_orders,write_orders,read_all_orders,read_inventory,write_inventory,read_locations,read_markets,read_draft_orders,write_draft_orders,read_merchant_managed_fulfillment_orders,write_merchant_managed_fulfillment_orders,read_publications,write_publications
After changing scopes, release a new app version, approve it on the store, and restart the MCP server so it fetches a token with the new scopes.
The server will automatically exchange these for an access token and refresh it before it expires (tokens are valid for ~24 hours).
If you have an existing custom app with a static shpat_ access token, you can still use it directly.
Client Credentials (recommended):
{
"mcpServers": { "shopify": { "command": "npx", "args": [ "@kisasa/shopify-mcp", "--clientId", " ", "--clientSecret", " ", "--domain", " .myshopify.com" ] } } }
Client Credentials via environment variables (keeps secrets out of the command line):
{
"mcpServers": { "shopify": { "command": "npx", "args": ["-y", "@kisasa/shopify-mcp"], "env": { "MYSHOPIFY_DOMAIN": " .myshopify.com", "SHOPIFY_CLIENT_ID": " ", "SHOPIFY_CLIENT_SECRET": " " } } } }
To connect more than one store, add one entry per store with a different name (e.g. "shopify-store-a", "shopify-store-b").
Static Access Token (legacy):
{
"mcpServers": { "shopify": { "command": "npx", "args": [ "@kisasa/shopify-mcp", "--accessToken", " ", "--domain", " .myshopify.com" ] } } }
Locations for the Claude Desktop config file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%/Claude/claude_desktop_config.jsonClient Credentials:
claude mcp add shopify -- npx @kisasa/shopify-mcp \
--clientId YOUR_CLIENT_ID \ --clientSecret YOUR_CLIENT_SECRET \ --domain your-store.myshopify.com
Static Access Token (legacy):
claude mcp add shopify -- npx @kisasa/shopify-mcp \
--accessToken YOUR_ACCESS_TOKEN \ --domain your-store.myshopify.com
If you prefer to use environment variables instead of command-line arguments:
.env file with your Shopify credentials:Client Credentials:
SHOPIFY_CLIENT_ID=your_client_id
SHOPIFY_CLIENT_SECRET=your_client_secret MYSHOPIFY_DOMAIN=your-store.myshopify.com
Static Access Token (legacy):
SHOPIFY_ACCESS_TOKEN=your_access_token
MYSHOPIFY_DOMAIN=your-store.myshopify.com
npx @kisasa/shopify-mcp
If you want to install the package globally:
npm install -g @kisasa/shopify-mcp
Then run it:
shopify-mcp --clientId=<ID> --clientSecret=<SECRET> --domain=<YOUR_SHOP>.myshopify.com
--apiVersion: Specify the Shopify API version (default: 2026-10). Can also be set via SHOPIFY_API_VERSION environment variable.⚠️ Important: If you see errors about "SHOPIFY_ACCESS_TOKEN environment variable is required" when using command-line arguments, you might have a different package installed. Make sure you're using @kisasa/shopify-mcp, not shopify-mcp-server or the unscoped shopify-mcp.
All list query tools (get-products, get-customers, get-orders, get-customer-orders, get-collections) support:
after / before (cursor strings), with pageInfo in the response (hasNextPage, hasPreviousPage, startCursor, endCursor)sortKey (enum specific to each resource) and reverse (boolean)query or searchQuery parameter accepting Shopify query syntaxfields parameter to fetch only specific fields, reducing response sizecountOnly parameter returns { count: N } without fetching any resource data — useful for sizing queries before paginatingsearchTitle (string, optional): Filter products by title (wraps in title:*...*)limit (number, default: 10): Maximum number of products to returnquery (string, optional): Raw Shopify query string (e.g. "status:active vendor:Nike tag:sale")sortKey (string, optional): One of CREATED_AT, ID, INVENTORY_TOTAL, PRODUCT_TYPE, PUBLISHED_AT, RELEVANCE, TITLE, UPDATED_AT, VENDORreverse (boolean, optional): Reverse the sort orderafter / before (string, optional): Pagination cursorsfields (array, optional): Fields to fetch. Available: id, title, description, handle, status, createdAt, updatedAt, totalInventory, vendor, productType, tags, mediaCount, priceRange, media, variants (first 10, with id, title, price, inventoryQuantity, sku, barcode, inventoryPolicy)countOnly (boolean, optional): Return only { count: N }productId (string, required): Shopify product GIDproductType, descriptionHtml, seo, options (with optionValues), media (images), variants, collections, tags, vendor, price range, inventoryproductOptions, Shopify registers all option values but only creates one default variant (first value of each option, price $0). Use manage-product-variants with strategy: REMOVE_STANDALONE_VARIANT afterward to create all real variants with prices.title (string, required): Title of the productdescriptionHtml (string, optional): Description with HTMLhandle (string, optional): URL slug. Auto-generated from title if omittedvendor (string, optional): Vendor of the productproductType (string, optional): Type of the producttags (array of strings, optional): Product tagsstatus (string, optional): "ACTIVE", "DRAFT", or "ARCHIVED". Default "DRAFT"seo (object, optional): { title, description } for search enginesmetafields (array of objects, optional): Custom metafields (namespace, key, value, type)productOptions (array of objects, optional): Options to create inline, e.g. [{ name: "Size", values: [{ name: "S" }, { name: "M" }] }]. Max 3 options.collectionsToJoin (array of strings, optional): Collection GIDs to add the product toid (string, required): Shopify product GIDtitle (string, optional): New titledescriptionHtml (string, optional): New descriptionhandle (string, optional): New URL slugvendor (string, optional): New vendorproductType (string, optional): New product typetags (array of strings, optional): New tags (overwrites existing)status (string, optional): "ACTIVE", "DRAFT", or "ARCHIVED"seo (object, optional): { title, description } for search enginesmetafields (array of objects, optional): Metafields to set or updatecollectionsToJoin (array of strings, optional): Collection GIDs to add the product to只显示了开头部分;其余内容请在仓库中阅读