r3plica 1.2.0 → 1.3.0
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 +17 -2
- package/dist/mcp/server.js +69 -1
- package/dist/mcp/server.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -34,9 +34,11 @@ r3 product list --limit 5 --json | jq '.[].name'
|
|
|
34
34
|
### Products
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
|
-
r3 product list [--brand X] [--category X] [--collection X] [--limit N] [--page N]
|
|
38
|
-
r3 product search <query> [--brand X] [--category X] [--limit N]
|
|
37
|
+
r3 product list [--brand X] [--category X] [--collection X] [--designer X] [--year X] [--limit N] [--page N]
|
|
38
|
+
r3 product search <query> [--brand X] [--category X] [--designer X] [--year X] [--limit N]
|
|
39
39
|
r3 product get <mongo_id>
|
|
40
|
+
r3 product stats [--by category|brand|designer|year] [--brand X]
|
|
41
|
+
r3 product compare <id1> <id2>
|
|
40
42
|
```
|
|
41
43
|
|
|
42
44
|
### Brands
|
|
@@ -111,7 +113,10 @@ asks about furniture, finishes, brands, or design products.
|
|
|
111
113
|
|
|
112
114
|
- `r3 product search "query"` — search products by text
|
|
113
115
|
- `r3 product list --brand X --category X` — filter products
|
|
116
|
+
- `r3 product list --designer "Name"` — filter by designer
|
|
114
117
|
- `r3 product get <id>` — product details with finish options
|
|
118
|
+
- `r3 product stats --by brand` — catalog breakdown
|
|
119
|
+
- `r3 product compare <id1> <id2>` — side-by-side comparison
|
|
115
120
|
- `r3 brand list` — all available brands
|
|
116
121
|
- `r3 finish-collection list --brand X` — available finish collections
|
|
117
122
|
- Always use `--json` when processing results programmatically
|
|
@@ -151,6 +156,16 @@ r3 product list --brand "Driade"
|
|
|
151
156
|
# Explore a product collection
|
|
152
157
|
r3 product-collection search "Tudor"
|
|
153
158
|
|
|
159
|
+
# Find products by designer
|
|
160
|
+
r3 product list --designer "Philippe Starck"
|
|
161
|
+
|
|
162
|
+
# Catalog stats
|
|
163
|
+
r3 product stats --by brand
|
|
164
|
+
r3 product stats --brand "Driade" --by designer
|
|
165
|
+
|
|
166
|
+
# Compare two products
|
|
167
|
+
r3 product compare <id1> <id2>
|
|
168
|
+
|
|
154
169
|
# Find wood finishes
|
|
155
170
|
r3 finish-collection list --category wood
|
|
156
171
|
|
package/dist/mcp/server.js
CHANGED
|
@@ -10,13 +10,15 @@ const server = new Server({ name: "r3plica-mcp", version: pkg.version }, { capab
|
|
|
10
10
|
const tools = [
|
|
11
11
|
{
|
|
12
12
|
name: "product_list",
|
|
13
|
-
description: "List R3PLICA products with optional filters (brand, category, collection)",
|
|
13
|
+
description: "List R3PLICA products with optional filters (brand, category, collection, designer, year)",
|
|
14
14
|
inputSchema: {
|
|
15
15
|
type: "object",
|
|
16
16
|
properties: {
|
|
17
17
|
brand: { type: "string", description: "Filter by brand name" },
|
|
18
18
|
category: { type: "string", description: "Filter by product category" },
|
|
19
19
|
collection: { type: "string", description: "Filter by collection name" },
|
|
20
|
+
designer: { type: "string", description: "Filter by designer name" },
|
|
21
|
+
year: { type: "string", description: "Filter by year (e.g. '2022')" },
|
|
20
22
|
limit: { type: "number", description: "Max results (default: 20)" },
|
|
21
23
|
page: { type: "number", description: "Page number (default: 1)" },
|
|
22
24
|
},
|
|
@@ -31,6 +33,8 @@ const tools = [
|
|
|
31
33
|
query: { type: "string", description: "Text search query" },
|
|
32
34
|
brand: { type: "string", description: "Filter by brand name" },
|
|
33
35
|
category: { type: "string", description: "Filter by product category" },
|
|
36
|
+
designer: { type: "string", description: "Filter by designer name" },
|
|
37
|
+
year: { type: "string", description: "Filter by year (e.g. '2022')" },
|
|
34
38
|
limit: { type: "number", description: "Max results (default: 20)" },
|
|
35
39
|
},
|
|
36
40
|
required: ["query"],
|
|
@@ -127,6 +131,29 @@ const tools = [
|
|
|
127
131
|
required: ["id"],
|
|
128
132
|
},
|
|
129
133
|
},
|
|
134
|
+
{
|
|
135
|
+
name: "product_stats",
|
|
136
|
+
description: "Get catalog statistics — product counts grouped by category, brand, designer, or year. Optionally scoped to a single brand.",
|
|
137
|
+
inputSchema: {
|
|
138
|
+
type: "object",
|
|
139
|
+
properties: {
|
|
140
|
+
group_by: { type: "string", description: "Field to group by: category, brand, designer, year (default: category)", enum: ["category", "brand", "designer", "year"] },
|
|
141
|
+
brand: { type: "string", description: "Scope stats to a specific brand" },
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
name: "product_compare",
|
|
147
|
+
description: "Compare two products side by side — dimensions, parts, finishes, designer, category",
|
|
148
|
+
inputSchema: {
|
|
149
|
+
type: "object",
|
|
150
|
+
properties: {
|
|
151
|
+
id1: { type: "string", description: "First product mongo_id" },
|
|
152
|
+
id2: { type: "string", description: "Second product mongo_id" },
|
|
153
|
+
},
|
|
154
|
+
required: ["id1", "id2"],
|
|
155
|
+
},
|
|
156
|
+
},
|
|
130
157
|
];
|
|
131
158
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools }));
|
|
132
159
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
@@ -164,6 +191,47 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
164
191
|
case "finish_collection_get":
|
|
165
192
|
result = await api.getFinishCollection(args.id);
|
|
166
193
|
break;
|
|
194
|
+
case "product_stats": {
|
|
195
|
+
const statsArgs = args;
|
|
196
|
+
const products = await api.listProducts({ brand: statsArgs.brand, limit: 9999 });
|
|
197
|
+
const groupBy = statsArgs.group_by || "category";
|
|
198
|
+
const counts = {};
|
|
199
|
+
for (const p of products) {
|
|
200
|
+
let key;
|
|
201
|
+
switch (groupBy) {
|
|
202
|
+
case "brand":
|
|
203
|
+
key = p.brand?.[0]?.name || "Unknown";
|
|
204
|
+
break;
|
|
205
|
+
case "designer":
|
|
206
|
+
key = p.designed_by?.[0]?.name || "Unknown";
|
|
207
|
+
break;
|
|
208
|
+
case "year":
|
|
209
|
+
key = p.year || "Unknown";
|
|
210
|
+
break;
|
|
211
|
+
default:
|
|
212
|
+
key = p.category || "Unknown";
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
counts[key] = (counts[key] || 0) + 1;
|
|
216
|
+
}
|
|
217
|
+
const sorted = Object.entries(counts).sort((a, b) => b[1] - a[1]);
|
|
218
|
+
result = {
|
|
219
|
+
total: products.length,
|
|
220
|
+
group_by: groupBy,
|
|
221
|
+
...(statsArgs.brand && { brand_filter: statsArgs.brand }),
|
|
222
|
+
groups: Object.fromEntries(sorted),
|
|
223
|
+
};
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
case "product_compare": {
|
|
227
|
+
const cmpArgs = args;
|
|
228
|
+
const [p1, p2] = await Promise.all([
|
|
229
|
+
api.getProduct(cmpArgs.id1),
|
|
230
|
+
api.getProduct(cmpArgs.id2),
|
|
231
|
+
]);
|
|
232
|
+
result = { product_1: p1, product_2: p2 };
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
167
235
|
default:
|
|
168
236
|
return {
|
|
169
237
|
content: [{ type: "text", text: `Unknown tool: ${name}` }],
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AAEtC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE1C,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAC7C,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;AAEF,MAAM,KAAK,GAAG;IACZ;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|