关于 Store Builder
Store Builder 是一个 stdio MCP 服务,让 AI Agent 在 Store Builder 站点中编辑页面、绑定真实店铺数据、预览并发布。它提供覆盖页面构建、媒体、主题和店铺流程的工具,并通过 API 操作索引访问平台功能。
主要功能
- 01创建和编辑页面结构
- 02将内容绑定到店铺数据
- 03渲染页面并查看截图与缺陷
- 04管理媒体、主题和多语言内容
- 05发布页面并检查线上结果
- 06通过 API 操作索引执行平台操作
适用场景
- 01根据店铺目录构建商品页面
- 02检查页面布局并修复可见问题
- 03更新主题后发布页面
- 04导入网站结构并创建草稿页面
MCP 相关
作为 stdio MCP 服务,向 AI Agent 暴露 38 个工具,用于操作 Store Builder 站点。工具涵盖页面设计、数据绑定、预览和发布。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y sbuilder-mcpSB_APIBase URL of the Store Builder API. Defaults to http://localhost:8080.SB_TOKEN密钥An API key from the store's Agent app (Apps → AI agent → Create key). Opens both the partner API and the private site API for that one store.SB_EMAILOptional. A platform account, only for account-level calls a key cannot make (listing sites, members, roles).SB_PASSWORD密钥Optional. That account's password.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
37收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| string | 否 | ||
| password | string | 否 |
详细介绍
sbuilder-mcp
一个 MCP stdio 服务,让 AI Agent 能端到端操作 Store Builder 网站——设计页面、填入真实数据、查看效果并发布——全程无需人工点击。
安装
只需一条命令,即可将此服务安装到计算机上的每个 Agent 客户端:
npx -y sbuilder-mcp install --token wbk_… --api https://your-host --site site_…
它支持 Claude Code、Claude Desktop、Cursor、Windsurf、VS Code 和 Codex,并会安装到它找到的客户端中。使用 --client cursor,codex 指定客户端,或使用 --dry-run 预演。遇到不认识的选项时,它会拒绝执行,而不是忽略——一个悄无声息、什么也不做的标志,比不存在的标志更糟。
--site 是可选参数,但值得传入:一个密钥只属于一个站点,因此它会被写入 SB_SITE,之后每个工具都会默认使用该站点。不传入时,模型就必须在整个会话中携带站点 ID,而它只能通过列出页面并读取其中一个页面来获取。
--site-name "Your Store" 会与它一同设置为 SB_SITE_NAME。它只是一个标签,并非地址——不会根据它解析任何内容——但它可以让 Agent 向你复述商店名称,而不是复述一个由你无法选择的 32 位字符 ID。只要商店有名称,Apps → AI agent 页面就会附加这个名称。
它会合并配置:这些文件中已有的服务会保留;任何被替换的内容都会复制到 <file>.sbuilder-backup;无法解析的配置会被拒绝,而不是覆盖——带有尾随逗号的文件远比值得丢弃的文件常见,而且这正是你需要修复的问题。
商店的 Apps → AI agent 页面会提供这条命令,并预先填入密钥。
或者手动配置客户端
{
"mcpServers": {
"sbuilder": {
"command": "npx",
"args": ["-y", "sbuilder-mcp"],
"env": { "SB_API": "https://api.your-host", "SB_TOKEN": "wbk_…", "SB_SITE": "site_…" }
}
}
}
获取密钥
打开商店,前往 Apps → AI agent,然后点击 Create key。该页面会提供适用于你客户端的配置块,并预先填入密钥——有了它,你就不必阅读本节了。
一个密钥就够了。它可以访问合作方接口(/api/v1)和私有站点 API,包括页面文档和实时编辑套接字;并且每次请求都会受到三方面限制:密钥自身的作用域、创建密钥的成员当前的角色,以及密钥所属的唯一商店。
SB_EMAIL + SB_PASSWORD 仍然是可选项;它们唯一提供的功能是执行账户级调用——列出你的站点、管理成员和角色。密钥有意不能执行这些操作,因为它们代表的是“此人的账户”。
SB_API 默认为 http://localhost:8080。密钥只从环境变量中读取。
sb_media_upload 的照片搜索无需在此处提供密钥:它会调用平台自己的 GET /api/sites/{siteId}/images/search,由平台在此服务已持有的凭据后方轮换使用一组服务商密钥。运营者只需在服务器上设置 PEXELS_API_KEYS 即可启用(用逗号分隔;可在 https://www.pexels.com/api/ 免费获取密钥)。如果未配置任何密钥,搜索会返回“不可用”,并告知调用方自行查找照片并传入 URL,之后平台会在服务器端获取该照片。本客户端有意不提供备用服务商:否则就会把平台存在的意义——替用户保管的密钥——放进每一份安装中。
工具
| 工具 | 功能 |
|---|---|
sb_connect | 登录,列出此账号可操作的站点,并报告当前凭据 |
sb_site_list | 列出此账号可操作的站点 |
sb_api_find | 按意图查找 API 操作——每个匹配项占一行——然后按 ID 查看某个操作的调用说明:真实参数架构、所需凭据,以及从解码这些字段的处理程序中读取的请求体字段,每项均附有其文档注释记录的注意事项 |
sb_api_call | 执行某个操作,或通过方法 + 路径调用任意路由;默认进行空运行。支持字段选择(点分路径,可用于列表和单对象写入响应)和本地结果分页;支持整条记录的 PUT 操作所需的 merge、If-Match 和多部分 file |
sb_page_open | 打开页面以供编辑并返回其大纲;或者使用 form_id 返回表单的字段文档(字段、默认值、依赖字段规则) |
sb_outline | 将打开的页面显示为压缩树;绝不倾倒原始文档。共享页眉 / 页脚和覆盖层各占一行,除非设置 chrome: true |
sb_node_read | 完整读取一个节点,并在其为共享全局节点时发出警告 |
sb_catalog_search | 根据元素应实现的功能查找元素,使用平台自带的 AI 提示 |
sb_traits_for | 查看元素的检查器——标签页、分组、控件及每个已声明控件会写入的内容——以及其 AI 提示、默认值和包含规则 |
sb_add | 一次调用即可添加元素或整个嵌套子树;筛选器会附带从目录中读取的选项行 |
sb_set | 写入样式 / 配置 / 特殊属性;默认按断点设置 |
sb_move | 将节点移至另一个父节点下 |
sb_remove | 移除节点及其子树 |
sb_duplicate | 使用新 ID 在原节点后复制节点及其子树;也可复制到其他页面或站点,行为与编辑器的复制 / 粘贴相同(会复制资源,并列出无法随之迁移的引用) |
sb_templates | 商店保存的区块模板,以及内置布局——主视觉区、三项特色、数据统计、常见问题、行动号召横幅、商品陈列架、分类条、品牌墙、信任横幅——均使用页面自身的设计令牌构建 |
sb_template_use | 将区块模板添加到页面 |
sb_page_list | 列出站点上的所有页面 |
sb_page_create | 创建页面;商店类型页面会使用编辑器自带的起始文档;type 指定结账、商品、分类、文章或课程路由 |
sb_page_update | 编辑页面名称、slug、首页标记、顺序、SEO(标题、描述、Open Graph、robots、meta 标签、JSON-LD)和仅限成员标记;这些内容会合并到 settings,因此未指定的键会保留。在模板页面上,可将其设为该类型的默认模板,或选择由其渲染的商品 / 分类 / 文章 |
sb_page_version | 查看页面的平台恢复点——列出命名版本和自动保存历史、创建草稿快照、恢复某个版本 |
sb_code | 管理站点自定义代码文件(跟踪像素、分析工具、聊天组件、站点 CSS;注入 html/css/js/scss/ts,json/text 则通过 /_wb/code/<name> 提供),可针对所有页面或单个页面执行列出、创建、合并更新、移除;写入时会编译 scss/ts,并报告 compile_error |
sb_function | 管理站点后端函数——使用站点密封密钥、集合和 fetch 的服务端 TypeScript/JavaScript,通过 /_wb/fn/<slug> 提供(以 _ 开头的 slug 是可导入模块)——可列出、读取、创建、合并更新、移除、测试运行(计入月度配额)、查看运行日志、本月用量以及仅写入的密钥;构建失败时会报告 compile_error |
sb_publish | 将草稿编译为线上页面(级联更新共享全局内容),报告上线的版本;使用 verify 检查源站是否正在提供该页面;列出其他含未发布草稿的页面和从未发布过的页面(publish_drafts 会同时发布这两类页面) |
sb_page_state | 查看页面三个副本各自的状态——编辑器画布显示的 DRAFT、店面提供的 PUBLISHED 行,以及此会话的副本;还会显示编辑器是否会将画布渲染为空白,以及恢复点所在位置 |
sb_page_repair | 重命名根节点不是 ROOT 的页面(旧版种子数据遗留的问题),让每次编辑器构建都能渲染该页面;可用于单个页面或整个站点 |
sb_review | 列出访客会看到的所有缺陷及各自的修复方法,并列出此商店与完成付费订单之间的五项差距 |
sb_media_list | 查看站点的媒体库 |
sb_media_upload | 添加图片并获取其 URL;可使用本地路径、由平台抓取的 URL,或搜索并挑选真实照片;每次可添加一张或多张;paths 可在一次调用中上传多个本地文件 |
sb_live_join | 作为可见协作者加入编辑器的实时编辑会话,之后的编辑会实时显示 |
sb_look | 保存并渲染页面,返回截图、测量出的节点框,以及从渲染结果中测出的布局缺陷 |
sb_event | 为节点设置点击操作——打开购物车、前往页面或打开弹窗 |
sb_bind | 将节点内容绑定到真实商店数据,或设置按钮以添加商品到购物车 |
sb_import | 读取任意公开 URL 上的页面,并将其结构和内容作为真实元素添加到打开的页面中,使用此页面自身的设计令牌进行样式设置——这是翻译,不是克隆 |
sb_import_site | 从一个 URL 读取整个站点——其站点地图或该页面上的链接——并为此处找到的每个页面创建独立草稿页面,使用本站的设计令牌构建;入口页面自身的颜色和字体比例也会应用到本站主题,使其不再只是一个只读副本 |
sb_theme | 读取或修改站点的调色板和字体比例——这是所有样式预设的解析层,因此一个令牌即可重绘每个页面;支持按断点设置文本样式覆盖和元素样式 presets;locale 用于设置站点语言 |
sb_translate | 按照编辑器的多语言面板翻译站点——启用语言,将页面字符串列为缺失 / 已完成 / 已过时,写入或机器填充字符串,并批准机器翻译条目 |
sb_store | 按固定顺序执行商店流程——checkout(构建可用结账流程所需的四次写入)、checkout_sync(将商店当前的付款和配送方式同步到每个现有订单表单,并重新发布结账页面)、form(平台的 17 种模板中的任意一种,附带其字段文档)、chrome(在真实站点菜单上创建一个共享页眉或页脚——站点名称链接至首页、桌面菜单、移动抽屉、搜索、购物车和账户图标)、menu(绑定到站点菜单并解析其链接的菜单节点)、overlay_attach(将弹窗或快速查看绑定到打开的页面)、cart(在站点没有购物车抽屉时创建一个;relocalize 将现有购物车抽屉切换为站点语言)和 app(内置应用及其所需页面)、global_attach / global_detach(将现有共享区块放到打开的页面上,或从页面移除)、global_promote(将页面上的区块设为新的共享区块)以及 template_save(将区块保存为可重复使用的模板) |
sb_undo | 撤销 / 重做此会话的写入操作——页面和表单编辑,以及 sb_api_call PUT 操作;每项操作均按工具和目标命名,默认处理打开的页面(设置 all: true 可处理所有页面);如果页面在此期间已由他人保存,则拒绝操作。平台的版本和历史记录(sb_page_version)不会随此进程结束而消失 |
三十八个工具、949 个 API 操作(441 个写操作中有 354 个携带的请求体结构是从处理程序中读取的)、124 个元素、96 个绑定源。sb_api_find | |
是一个索引,而不是每个端点对应一个工具,因此工具列表保持精简,同时平台能做的一切仍触手可及——平台新增的操作会随下一次 npm run codegen 一并到来。 |
每个结果都是精简的 JSON,每条指令在每个进程中只会说一次,每个工具都带有 MCP 注释——遵循这些注释的客户端不会再要求用户确认读取操作。
完整参考文档:docs/tools.md。构建器原生支持的功能及其边界:docs/capabilities.md。
如何保持同步
平台会发布两个生成后并提交的构件。构建步骤从检出目录中读取它们并生成目录:
WB_REPO=/path/to/web_builder npm run codegen
因此,本仓库不会包含任何平台代码——它依赖的是两个遵循维护中契约的数据文件。src/catalog/api.generated.ts 已提交,因此 npm install 完全不需要检出目录。
开发
npm run build # tsc -> dist/
npm test # vitest
npm run smoke # offline self-test; must print ALL GOOD
贡献者指南:CLAUDE.md。设计原理:
docs/superpowers/specs/。
发布
对 main 的推送只要涉及 src/**,就会自动发布
(.github/workflows/auto-release.yml):先运行门禁检查(构建、测试、冒烟测试),再根据提交主题确定版本号升级——feat 表示次版本,BREAKING CHANGE 或 ! 表示主版本,其他情况表示补丁版本——Claude 会用两种语言编写更新日志条目,
同步 server.json,将发布提交为 chore(release): vX.Y.Z 并打上标签,
然后发布到 npm、作为 GitHub Release 发布,并通过 GitHub OIDC 发布到 MCP Registry。
workflow_dispatch 会运行相同流程,并使用你选择的版本升级类型。提交主题中包含
chore(release): 或 release: v 的提交会被跳过,因此发布不会触发另一次发布。
此工作流需要在 prod 环境中配置两个仓库密钥:NPM_ACCESS_TOKEN
和 CLAUDE_CODE_OAUTH_TOKEN。Registry 步骤无需任何密钥。
npm run release(scripts/release.mjs)是离线路径——适用于没有 CI 的机器,或在轮换密钥期间进行发布。它运行相同的门禁检查,并写入相同的
## [x.y.z] - date 更新日志标题,因此两种方式的结果始终一致。
安全设计
如果客户端不了解五条平台规则,就会静默失败,因此我们将它们编写为经过测试的代码,而不是建议:
- Band 顺序——ROOT 的子项必须按
[header][middle][footer]排列,否则平台会拒绝每次保存。 - 站点叠加层(购物车抽屉、弹出窗口)在读取时会合成到 ROOT 上,在写入时会被剥离;它们不受任何 ROOT 层级规则约束,也无法通过页面工具编辑。
- 全局区块是共享主控项——编辑一个会更改所有包含它的页面,发布时也会级联。任何涉及全局区块的结果都会说明这一点。
- 默认响应式——
sb_set会按断点写入,因为设计应该能够响应变化。Base 是级联中的回退层,不是陷阱。 - 应用区块——市场应用的子树在读取时会合成到页面上,在保存时会还原为一个引用节点,因此对其内部的编辑会悄无声息地丢失。所有写入都会拒绝修改其内部;大纲会将区块根节点标记为
app: true。
状态
三个阶段均已交付:身份验证和完整 API 访问;页面文档、补丁协议、构建器及五个陷阱;实时编辑套接字、让出规则和视觉循环。此后新增了:精简所有结果的令牌用量,以及自动完成的发布流程。
需要 Node ≥22(提供全局 WebSocket),并且只有 sb_look 需要系统安装的 Google
Chrome——playwright-core 不捆绑浏览器,因此安装时不会下载任何内容。
MIT。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。