@shoppexio/mcp-theme-server 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -2
- package/package.json +2 -2
- package/src/server.mjs +29 -32
package/README.md
CHANGED
|
@@ -50,8 +50,6 @@ Restart Claude Desktop.
|
|
|
50
50
|
- `theme_apply` — apply explicit file changes (for precise edits)
|
|
51
51
|
- `theme_accept` — accept a pending draft from an agent run
|
|
52
52
|
- `theme_create` — scaffold from a base theme
|
|
53
|
-
- `theme_create_section` — add a section
|
|
54
|
-
- `theme_create_page` — add a page/route
|
|
55
53
|
- `theme_update_config` — extend theme.config.ts
|
|
56
54
|
|
|
57
55
|
### Preview & Publish
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shoppexio/mcp-theme-server",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "Shoppex MCP server for theme control plane operations",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -38,6 +38,6 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@modelcontextprotocol/sdk": "^1.28.0",
|
|
41
|
-
"@shoppexio/theme-control-client": "^0.4.
|
|
41
|
+
"@shoppexio/theme-control-client": "^0.4.3"
|
|
42
42
|
}
|
|
43
43
|
}
|
package/src/server.mjs
CHANGED
|
@@ -101,7 +101,7 @@ export function createThemeToolCatalog() {
|
|
|
101
101
|
name: 'theme_create',
|
|
102
102
|
description: 'Create a new theme scaffold from a Shoppex base theme.',
|
|
103
103
|
inputSchema: {
|
|
104
|
-
base: z.enum(['default', 'classic', 'nebula', 'pulse', 'phantom', 'starlight']),
|
|
104
|
+
base: z.enum(['default', 'classic', 'nebula', 'pulse', 'phantom', 'starlight', 'apex', 'vault', 'clean-minimal', 'shadow']),
|
|
105
105
|
name: z.string().min(1).optional(),
|
|
106
106
|
set_as_active: z.boolean().optional(),
|
|
107
107
|
},
|
|
@@ -131,36 +131,6 @@ export function createThemeToolCatalog() {
|
|
|
131
131
|
return client.aiApplyTheme(theme_id, body);
|
|
132
132
|
},
|
|
133
133
|
},
|
|
134
|
-
{
|
|
135
|
-
name: 'theme_create_section',
|
|
136
|
-
description: 'Scaffold a new theme section and wire it into theme.config.ts.',
|
|
137
|
-
inputSchema: {
|
|
138
|
-
theme_id: z.string().min(1),
|
|
139
|
-
name: z.string().min(1),
|
|
140
|
-
description: z.string().optional(),
|
|
141
|
-
section_key: z.string().optional(),
|
|
142
|
-
},
|
|
143
|
-
execute: ({ theme_id, name, description, section_key }, client) => client.createThemeSection(theme_id, {
|
|
144
|
-
name,
|
|
145
|
-
...(description ? { description } : {}),
|
|
146
|
-
...(section_key ? { sectionKey: section_key } : {}),
|
|
147
|
-
}),
|
|
148
|
-
},
|
|
149
|
-
{
|
|
150
|
-
name: 'theme_create_page',
|
|
151
|
-
description: 'Scaffold a new static page and wire its route into src/App.tsx.',
|
|
152
|
-
inputSchema: {
|
|
153
|
-
theme_id: z.string().min(1),
|
|
154
|
-
name: z.string().min(1),
|
|
155
|
-
description: z.string().optional(),
|
|
156
|
-
route_path: z.string().optional(),
|
|
157
|
-
},
|
|
158
|
-
execute: ({ theme_id, name, description, route_path }, client) => client.createThemePage(theme_id, {
|
|
159
|
-
name,
|
|
160
|
-
...(description ? { description } : {}),
|
|
161
|
-
...(route_path ? { routePath: route_path } : {}),
|
|
162
|
-
}),
|
|
163
|
-
},
|
|
164
134
|
{
|
|
165
135
|
name: 'theme_update_config',
|
|
166
136
|
description: 'Extend theme.config.ts with a new settings field.',
|
|
@@ -201,6 +171,33 @@ export function createThemeToolCatalog() {
|
|
|
201
171
|
},
|
|
202
172
|
execute: ({ theme_id }, client) => client.publishTheme(theme_id),
|
|
203
173
|
},
|
|
174
|
+
{
|
|
175
|
+
name: 'theme_deploy',
|
|
176
|
+
description: 'Queue a deploy for the current accepted theme draft through the official deployTheme control-plane path.',
|
|
177
|
+
inputSchema: {
|
|
178
|
+
theme_id: z.string().min(1),
|
|
179
|
+
set_as_active: z.boolean().optional(),
|
|
180
|
+
},
|
|
181
|
+
execute: ({ theme_id, set_as_active }, client) => client.deployTheme(theme_id, {
|
|
182
|
+
...(set_as_active !== undefined ? { setAsActive: set_as_active } : {}),
|
|
183
|
+
}),
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
name: 'theme_purge_storefront_cache',
|
|
187
|
+
description: 'Purge the live theme artifact cache after a deploy or asset refresh.',
|
|
188
|
+
inputSchema: {
|
|
189
|
+
theme_id: z.string().min(1),
|
|
190
|
+
},
|
|
191
|
+
execute: ({ theme_id }, client) => client.purgeStorefrontCache(theme_id),
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
name: 'theme_force_purge_storefront_cache',
|
|
195
|
+
description: 'Force-purge live theme artifacts and storefront domain cache when a merchant still sees stale storefront output.',
|
|
196
|
+
inputSchema: {
|
|
197
|
+
theme_id: z.string().min(1),
|
|
198
|
+
},
|
|
199
|
+
execute: ({ theme_id }, client) => client.forcePurgeStorefrontCache(theme_id),
|
|
200
|
+
},
|
|
204
201
|
{
|
|
205
202
|
name: 'theme_publish_status',
|
|
206
203
|
description: 'Read the current publish job status.',
|
|
@@ -285,7 +282,7 @@ export async function executeThemeTool(toolName, args, client) {
|
|
|
285
282
|
export function createThemeMcpServer(client = new ShoppexThemeControlClient(resolveEnvThemeControlConfig())) {
|
|
286
283
|
const server = new McpServer({
|
|
287
284
|
name: 'shoppex-themes',
|
|
288
|
-
version: '0.5.
|
|
285
|
+
version: '0.5.2',
|
|
289
286
|
});
|
|
290
287
|
|
|
291
288
|
for (const tool of createThemeToolCatalog()) {
|