购物- admin- mcp
用于 Shopify 的 Admin GraphQL API 的 MCP 服务器: 用于常见存储任务的打入工具, 用于其它所有工作的原始 GraphQL , 以及现场的 schema 搜索, 所以您的 AI 助手会针对您的存储服务的 API 进行工作 。 目标 API 版本 2026-10 (英语)。 。 。 .
特征
- 59个便利工具 产品、收藏、出版、元场、元对象、客户、订单、库存、折扣、文件、主题和市场
- Raw GraphQL 和 现场计划搜索 任何工具都无法覆盖
- 本地文件夹的主题文件: 与
--theme-dir,主题书写文件时用文件名发送文件,并使用一个拉动工具复制文件,因此文件内容不必通过对话 - 设置向导 写着
.mcp.json给你的 - 安全控制:只读模式、工具、现场主题守护、限制本地上传、每个工具只读或破坏性说明
- 两种认证方法: Dev Dashboard 客户端证书(自动更新)和遗产
shpat_符号 - 了解费率限制: 节奏请求等待成本桶重新填充, 然后重试
快速启动
在您的工程文件夹中运行设置向导 :
npx -y @acodera/shopify-admin-mcp@latest setup
它运行在macOS,Linux和Windows上. 它检查你的节点Js版本,然后问设置什么:
- 只连接到商店: 要求您的商店和证书, 检查它们, 选择添加 购买 Dev MCP 服务器,并创建或更新
.mcp.json。主题编辑关闭(--disable-theme-writes),因此助理可以读取主题,但不能改变;其他一切,如产品和元场,都可以被改变. 本地文件, 如产品图像, 上传自./uploads,它创造了,除非.mcp.json已经设置了上传文件夹. - 带有地平线的全部主题设计: 也下载了 Shopify 的 地平线 主题进入
./theme写作CLAUDE.md, (中文(简体) ),THEME.md财务报告和审定财务报表customizations.md从 acoderacom/claude-视距,将商店和现场主题填入CLAUDE.md切换到什么CLAUDE.md描述: 现场主题写入, 主题文件来自./theme上传./uploads和Shofify Dev MCP。 。 。 商店的活生生主题必须是模板支持的地平线版本(列于其versions.json),项目得到了准确的版本. 否则设置会显示要切换到哪个版本, 不写就停止.mcp.json。由于 Shopify 主题商店只安装最新的地平线,它提供保存上传准备horizon-<version>.zip页:1 在线存储 主题 添加主题 ~ 上传 zip 文件。 。 。 . - 完整主题编辑站点:因为在没有"地平线"支票的情况下,在现场商店的主题"地平线"(Horizon)的复制上工作. 第一次复制 Shopify 管理员中的活版主题(网上存储 = 主题 = 复制)并给抄本取名. 设置列出商店的主题,并取出副本克洛德编辑;直播主题列出但无法取出,如果商店没有副本则设置停止. 直播主题写出不动, 主题被锁定( L)
--lock-themes),因此服务器拒绝任何对活版主题的修改,也拒绝任何主题创建,复制,重命名,删除或发布:您自己发布副本. 设置写入CLAUDE.md(没有模拟规则)和customizations.md从模板live-site/包含存储和副本名称、版本和所填ID的文件夹,空白THEME.md空时./theme。然后用手:下载副本(• 下载主题文件打开它./theme,并且,当你想要的时候,请克洛德学习这个主题:它写着THEME.md从./theme,在那之前,它一直保持空白。 与现场共享产品和菜单等存储数据,因此其更改仍然同时显示;CLAUDE.md克劳德先问 继续运行设置./theme, (中文(简体) ),THEME.md和所选的副本,除非你修改它们.
当前值被预填并保留了其他服务器. 设置不问另一个 选项,例如只读模式、工具或原始 GraphQL;设置在 .mcp.json 手边。 运行“ 仅连接到商店” 保留它们; 两种主题设计模式都设置了 CLAUDE.md 取决于。 秘密以纯文本保存, 因此文件被添加到 .gitignore 在git repo中,在macOS和Linux上,只有你才能读取。 Windows没有这样的文件模式,因此文件获得其文件夹的权限: 将工程保留在用户文件夹内,其他用户无法读取. 重新启动 Claude 代码( 或运行) /mcp要连接.
手动设置
克劳德代码:
claude mcp add shopify \
-e SHOPIFY_STORE=mystore.myshopify.com \
-e SHOPIFY_CLIENT_ID=your_client_id \
-e SHOPIFY_CLIENT_SECRET=your_client_secret \
-- npx -y @acodera/shopify-admin-mcp
或进入 .mcp.json,或 Claude 桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上, %APPDATA%\Claude\claude_desktop_config.json 视窗上 :
{
"mcpServers": {
"shopify": {
"command": "npx",
"args": ["-y", "@acodera/shopify-admin-mcp"],
"env": {
"SHOPIFY_STORE": "mystore.myshopify.com",
"SHOPIFY_CLIENT_ID": "${SHOPIFY_CLIENT_ID}",
"SHOPIFY_CLIENT_SECRET": "${SHOPIFY_CLIENT_SECRET}"
}
}
}
}
对于一个遗产的标志,设置 SHOPIFY_ACCESS_TOKEN 而不是客户身份和秘密 Claude 代码扩展 ${VAR} 从你的外壳,所以 .mcp.json claude Desktop不这样做,所以直接将数值写在那里.
认证
- 客户证书(建议): 在其中创建应用程序 底盘,配置下面的瞄准镜,发布一个版本,安装在您的商店,并使用它的客户端ID和秘密. 应用程序和商店必须属于同一商店组织。 托肯持续了24小时,并自动刷新.
- 在浏览器中获得批准: 在应用程序组织外的商店安装的应用程序,例如客户端的商店或你作为合作者接触到的商店,在那里,Shopify拒绝客户端的证书
shop_not_permitted在设置中,选择 在浏览器中批准的客户端身份和秘密。它会打印一个重定向 URL,http://localhost:3457/auth/callback,在Dev Dashboard中添加应用软件的版本(当时发布版本),打开Shorpify的审批页面,并交换对一个离线访问令牌的批准,该令牌持续到应用程序未安装或其秘密被旋转为止. 客户秘密只用于批准;.mcp.json获取访问符. - 遗产访问符 : 页:1
shpat_现有自定义应用程序的标志.
只授予您使用的工具范围 :
| 范围 | 工具 |
|---|---|
read_products, (中文(简体) ), write_products | 产品、变种、收藏 |
read_publications, (中文(简体) ), write_publications | 出版 |
read_metaobjects, (中文(简体) ), write_metaobjects | 元对象条目 |
read_metaobject_definitions, (中文(简体) ), write_metaobject_definitions | 元对象定义 |
| 拥有资源的范围 | 梅塔菲尔德斯(例如. read_products 用于产品元场) |
read_customers, (中文(简体) ), write_customers | 客户 |
read_orders (+ 数) read_all_orders 超过60天的订单) | 命令 |
read_inventory, (中文(简体) ), write_inventory, (中文(简体) ), read_locations | 库存 |
read_discounts, (中文(简体) ), write_discounts | 贴现 |
read_files, (中文(简体) ), write_files | 文件 |
read_themes, (中文(简体) ), write_themes (+ 写作的主题码豁免) | 主题 |
read_markets, (中文(简体) ), write_markets | 市场 |
客户姓名、电子邮件、电话号码和地址 受保护的客户数据,您的应用程序也必须被批准.
工具
总是可用 : shopify_graphql (任何查询或突变;仅以只读模式查询), shopify_schema_search,以及 shopify_schema_details。其余部分归为工具,全部默认注册:
| 工具集 | 工具( 每个前缀) shopify_(中文(简体) ) |
|---|---|
products | products_list, (中文(简体) ), product_get, (中文(简体) ), product_create, (中文(简体) ), product_update, (中文(简体) ), product_delete, (中文(简体) ), product_variants_create, (中文(简体) ), product_variants_update |
collections | collections_list, (中文(简体) ), collection_get, (中文(简体) ), collection_create, (中文(简体) ), collection_update, (中文(简体) ), collection_delete |
publishing | publications_list, (中文(简体) ), publish, (中文(简体) ), unpublish |
metafields | metafields_list, (中文(简体) ), metafields_set, (中文(简体) ), metafield_delete, (中文(简体) ), metafield_definitions_list, (中文(简体) ), metafield_definition_create |
metaobjects | metaobject_definitions_list, (中文(简体) ), metaobject_definition_create, (中文(简体) ), metaobjects_list, (中文(简体) ), metaobject_get, (中文(简体) ), metaobject_create, (中文(简体) ), metaobject_update, (中文(简体) ), metaobject_upsert, (中文(简体) ), metaobject_delete |
customers | customers_list, (中文(简体) ), customer_get, (中文(简体) ), customer_update |
orders | orders_list, (中文(简体) ), order_get |
inventory | inventory_get_levels, (中文(简体) ), inventory_adjust |
discounts | discounts_list, (中文(简体) ), discount_get, (中文(简体) ), discount_amount_off_create, (中文(简体) ), discount_free_shipping_create, (中文(简体) ), discount_bxgy_create, (中文(简体) ), discount_activate, (中文(简体) ), discount_deactivate, (中文(简体) ), discount_delete, (中文(简体) ), discount_codes_add |
files | files_list, (中文(简体) ), file_upload, (中文(简体) ), file_delete |
themes | themes_list, (中文(简体) ), theme_files_list, (中文(简体) ), theme_files_get, (中文(简体) ), theme_files_upsert, (中文(简体) ), theme_files_delete, (中文(简体) ), theme_duplicate, (中文(简体) ), theme_delete· ; theme_files_pull 与 --theme-dir |
markets | markets_list, (中文(简体) ), market_get, (中文(简体) ), market_create, (中文(简体) ), market_update, (中文(简体) ), market_delete |
少数投入跟随API 2026-10:收藏用 sources (见 CollectionCreateSourceTargetInput 内 shopify_schema_details, (中文(简体) ), shopify_inventory_adjust 需要您在变化前所期望的数量(changeFromQuantity),而折扣需要一种资格(customerIds, (中文(简体) ), customerSegmentIds,或 marketIds按收集或产品分列的物品,而不是两者兼有.
本地文件夹中的主题文件
主题文件通常先被编辑为主题的本地副本. 发送文件内容通过 shopify_theme_files_upsert 让助理写出整个文件, 需要几分钟的时间一个大部分。 与 --theme-dir 指向本地副本:
shopify_theme_files_upsert仅发送其文件filename从文件夹中取出:文本为正文,其他内容为 Base64 。 当Shoppify的写作完成后,它会报告每个文件是否按照发送的方式存储. shopify regenerates JSON 文件,如模板(添加其头并重命名它们),因此它返回的文件被替换到文件夹中,取而代之的是shopify的副本.shopify_theme_files_pull复制文件或图案,例如sections/*从主题进入文件夹中,每个调用最多50个,只返回文件名和校验和。 已经匹配的文件被单独处理 .
通过的文件 content, (中文(简体) ), contentBase64 或者说 url 像以前一样工作.
安全问题
- 只读模式 (单位:千美元)
--read-only)只登记在原始图形QL中读取数据并拒绝突变的工具。 文档是解析的,因此注释或额外操作不能滑出一个. 每当助手不需要更改店面时使用:产品说明和客户通知书由他人撰写并可以携带说明. - 工具集 (单位:千美元)
--toolsets products,orders) 缩短工具列表,但原始 GraphQL 仍然可以到达任何您允许的范围 。 添加--disable-raw-graphql以保留选定工具的助手。 无论哪种方式,应用的瞄准镜都是真正的极限. - 现场主题 被保护:主题文件写作并删除已发布文件(
MAIN)主题被拒绝,包括通过原始 GraphQL,其中themePublish也被拒绝。 复制主题,编辑副本,并从 Shopify 管理员处发布,或从--allow-live-theme-writes。 。 。 . - 主题编辑 可以完全关闭
--disable-theme-writes:主题写作工具被忽略,而原始的GraphQL拒绝每个主题突变(文件写作,themeCreate, (中文(简体) ),themeUpdate, (中文(简体) ),themeDelete, (中文(简体) ),themeDuplicate, (中文(简体) ),themePublish任何它的目标主题。 它能覆盖--allow-live-theme-writes,并设置"连接到一个商店"模式打开. - 主题可以锁定 与
--lock-themes:主题文件仍然可以编辑,但shopify_theme_duplicate财务报告和审定财务报表shopify_theme_delete被忽略, 原始 GraphQL 拒绝themeCreate, (中文(简体) ),themeDuplicate, (中文(简体) ),themeUpdate, (中文(简体) ),themeDelete财务报告和审定财务报表themePublish,因此复制品不能被删除或更名,任何内容都不能出版. 设置"Full主题编辑现场"模式开启. - 主题文件夹 (单位:千美元)
--theme-dir)是唯一一个发送并被拉入的地方主题文件. 引出其外的路径, 包括同义链接, 以及主题本身文件夹外的文件 (assets, (中文(简体) ),blocks, (中文(简体) ),config, (中文(简体) ),layout, (中文(简体) ),locales, (中文(简体) ),sections, (中文(简体) ),snippets, (中文(简体) ),templates)被拒绝. - 本地上传 离开直到你开始
--upload-dir(设置设备)./uploads在两种模式中).shopify_file_upload然后接受该文件夹内的文件(symlinks solved),以及Shopify自取的公共URL. - 全权证书 只有寄给
*.myshopify.com,服务器会在秘密被作为旗帜传递时发出警告,因为其他进程可以看到它们.
配置
每个选项在软件包名称后( 在 args)或作为环境变量(在 env:
| 旗帜 | 环境变量 | 默认 | 说明 |
|---|---|---|---|
--store | SHOPIFY_STORE | 所需经费 | mystore 或者说 mystore.myshopify.com |
--access-token | SHOPIFY_ACCESS_TOKEN | 遗产 shpat_ 符号 | |
--client-id | SHOPIFY_CLIENT_ID | 客户证书 ID | |
--client-secret | SHOPIFY_CLIENT_SECRET | 客户证书秘密 | |
--api-version | SHOPIFY_API_VERSION | 2026-10 | YYYY-MM 或者说 unstable |
--toolsets | SHOPIFY_TOOLSETS | 全部 | 要注册的逗号分隔工具 |
--upload-dir | SHOPIFY_UPLOAD_DIR | 关 | 本地上传限制的绝对路径 |
--theme-dir | SHOPIFY_THEME_DIR | 关 | 本地主题副本的绝对路径, 主题文件来自并被拉入 |
--read-only | SHOPIFY_READ_ONLY | 关 | 只读工具, 没有突变 |
--allow-live-theme-writes | SHOPIFY_ALLOW_LIVE_THEME_WRITES | 关 | 允许写入并发布实况主题 |
--disable-theme-writes | SHOPIFY_DISABLE_THEME_WRITES | 关 | 拒绝每个主题更改; 覆盖 --allow-live-theme-writes |
--lock-themes | SHOPIFY_LOCK_THEMES | 关 | 保留主题文件编辑但拒绝创建、复制、重命名、删除和发布主题 |
--disable-raw-graphql | SHOPIFY_DISABLE_RAW_GRAPHQL | 关 | 别管了 shopify_graphql |
例如: "args": ["-y", "@acodera/shopify-admin-mcp", "--read-only", "--toolsets", "products,orders,customers"]。 。 。 .
- 启用/关闭变量接受
true或者说1。当一个选项被双向设定时,旗帜将获胜;对于上下选项,要么打开. - 空白值和未填入的引用( E)
${VAR}, (中文(简体) ),$VAR) 计为未设置,所以一个配置可以列出两种认证方法. 如果两者都填入,则使用访问符. - 使用绝对
--upload-dir财务报告和审定财务报表--theme-dir,因为MCP客户端从自己的工作目录启动服务器. - 和一个老人
--api-version,原始 GraphQL 有用,但有些工具可能不行。 如果 Shostify 服务与请求的版本不同, 服务器会登录警告 .
Schema 勘探公司
服务器在连接后对背景中的活生生的策略进行回顾. shopify_schema_search 按关键词查找类型、查询和变异,以及 shopify_schema_details 显示类型字段或操作的参数。 折旧的字段被排除在外,这可以引导助手向目前的API方向前进.
发展
git clone https://github.com/acoderacom/shopify-admin-mcp.git
cd shopify-admin-mcp && git checkout dev && npm install
npm run build # or `npm run dev` to rebuild on change
npm test # unit tests; live tests skip themselves without credentials
npm run lint # type-check src and tests
需要节点js 22.12 或以后。 设置 SHOPIFY_STORE 并进行现场测试 SHOPIFY_TEST_WRITES=1 运行创建然后删除的写入测试 [MCP test] 数据,所以只用一个开发商店.
为捐款,分行从 dev,添加一个更改器 npx changeset (文件、测试或CI不需要) dev。版本合并 dev 输入 main;然后工作流程打开一个 版本软件包 拉取请求,并将其合并到 npm 通过 值得信赖的出版 与出处.
许可证
麻省理工学院. 见 自由主义。 。 。 .
最初创建于 科尔比·麦克亨利 作为 商店名称- ql- admin- mcp,并由 编码通讯。 。 。 .