sychev-lab-mcp-server 1.0.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.

Potentially problematic release.


This version of sychev-lab-mcp-server might be problematic. Click here for more details.

package/dist/tools.js ADDED
@@ -0,0 +1,376 @@
1
+ /**
2
+ * MCP Tools for Sychev Lab
3
+ */
4
+ import { z } from 'zod';
5
+ import { apiClient } from './client.js';
6
+ // Tool schemas
7
+ export const GetProductSchema = z.object({
8
+ productId: z.string().uuid().describe('UUID del producto'),
9
+ lang: z.enum(['es', 'en']).optional().describe('Código de idioma (es o en)'),
10
+ });
11
+ export const SearchProductsSchema = z.object({
12
+ categoryId: z.string().optional().describe('Término de búsqueda (busca en nombre, descripción, categoría, tags). Opcional - si no se proporciona devuelve todos los productos'),
13
+ limit: z.number().int().min(1).max(100).optional().describe('Número máximo de resultados (default: 30)'),
14
+ });
15
+ export const GetArticleSchema = z.object({
16
+ articleId: z.string().uuid().describe('UUID del artículo'),
17
+ lang: z.enum(['es', 'en']).describe('Código de idioma (es o en)'),
18
+ });
19
+ export const GetTutorialSchema = z.object({
20
+ tutorialId: z.string().uuid().describe('UUID del tutorial'),
21
+ lang: z.enum(['es', 'en']).describe('Código de idioma (es o en)'),
22
+ });
23
+ export const GetCategoriesSchema = z.object({
24
+ includeProducts: z.boolean().optional().describe('Incluir conteo de productos por categoría'),
25
+ });
26
+ export const RegisterUserSchema = z.object({
27
+ email: z.string().email().describe('Email del usuario'),
28
+ password: z.string().min(6).describe('Contraseña (mínimo 6 caracteres)'),
29
+ displayName: z.string().optional().describe('Nombre visible del usuario (opcional)'),
30
+ });
31
+ export const CreateCheckoutSchema = z.object({
32
+ productId: z.string().uuid().describe('UUID del producto a comprar'),
33
+ quantity: z.number().int().min(1).max(10).optional().describe('Cantidad (default: 1, max: 10)'),
34
+ guestEmail: z.string().email().optional().describe('Email del invitado (opcional)'),
35
+ guestName: z.string().optional().describe('Nombre del invitado (opcional)'),
36
+ locale: z.enum(['es', 'en']).optional().describe('Locale para emails (default: es)'),
37
+ });
38
+ export const ListProductsSchema = z.object({
39
+ limit: z.number().int().min(1).max(100).optional().describe('Número máximo de resultados (default: 30)'),
40
+ featuredOnly: z.boolean().optional().describe('Solo productos destacados'),
41
+ });
42
+ export const ListArticlesSchema = z.object({
43
+ limit: z.number().int().min(1).max(100).optional().describe('Número máximo de resultados'),
44
+ featuredOnly: z.boolean().optional().describe('Solo artículos destacados'),
45
+ });
46
+ export const ListTutorialsSchema = z.object({
47
+ limit: z.number().int().min(1).max(100).optional().describe('Número máximo de resultados'),
48
+ featuredOnly: z.boolean().optional().describe('Solo tutoriales destacados'),
49
+ });
50
+ // Tool implementations
51
+ export async function getProductDetails(args) {
52
+ try {
53
+ const product = await apiClient.getProduct(args.productId, args.lang || 'es');
54
+ return {
55
+ content: [{
56
+ type: 'text',
57
+ text: JSON.stringify({ success: true, product }, null, 2),
58
+ }],
59
+ isError: false,
60
+ };
61
+ }
62
+ catch (error) {
63
+ return {
64
+ content: [{
65
+ type: 'text',
66
+ text: JSON.stringify({
67
+ success: false,
68
+ error: error instanceof Error ? error.message : 'Failed to fetch product'
69
+ }, null, 2),
70
+ }],
71
+ isError: true,
72
+ };
73
+ }
74
+ }
75
+ export async function searchProductsByCategory(args) {
76
+ try {
77
+ // If no category provided, return all products (limited)
78
+ let products = [];
79
+ if (args.categoryId) {
80
+ products = await apiClient.searchProductsByCategory(args.categoryId, args.limit || 30);
81
+ }
82
+ else {
83
+ const response = await apiClient.getProducts();
84
+ products = Array.isArray(response) ? response :
85
+ (response && typeof response === 'object' && 'products' in response) ?
86
+ response.products :
87
+ (response && typeof response === 'object' && 'data' in response) ?
88
+ response.data : [];
89
+ if (args.limit) {
90
+ products = products.slice(0, args.limit);
91
+ }
92
+ else {
93
+ products = products.slice(0, 30);
94
+ }
95
+ }
96
+ return {
97
+ content: [{
98
+ type: 'text',
99
+ text: JSON.stringify({
100
+ success: true,
101
+ products,
102
+ total: products.length,
103
+ searchTerm: args.categoryId || 'all',
104
+ }, null, 2),
105
+ }],
106
+ isError: false,
107
+ };
108
+ }
109
+ catch (error) {
110
+ return {
111
+ content: [{
112
+ type: 'text',
113
+ text: JSON.stringify({
114
+ success: false,
115
+ error: error instanceof Error ? error.message : 'Search failed'
116
+ }, null, 2),
117
+ }],
118
+ isError: true,
119
+ };
120
+ }
121
+ }
122
+ export async function getArticle(args) {
123
+ try {
124
+ const article = await apiClient.getArticle(args.articleId, args.lang);
125
+ return {
126
+ content: [{
127
+ type: 'text',
128
+ text: JSON.stringify({ success: true, article }, null, 2),
129
+ }],
130
+ isError: false,
131
+ };
132
+ }
133
+ catch (error) {
134
+ return {
135
+ content: [{
136
+ type: 'text',
137
+ text: JSON.stringify({
138
+ success: false,
139
+ error: error instanceof Error ? error.message : 'Failed to fetch article'
140
+ }, null, 2),
141
+ }],
142
+ isError: true,
143
+ };
144
+ }
145
+ }
146
+ export async function getTutorial(args) {
147
+ try {
148
+ const tutorial = await apiClient.getTutorial(args.tutorialId, args.lang);
149
+ return {
150
+ content: [{
151
+ type: 'text',
152
+ text: JSON.stringify({ success: true, tutorial }, null, 2),
153
+ }],
154
+ isError: false,
155
+ };
156
+ }
157
+ catch (error) {
158
+ return {
159
+ content: [{
160
+ type: 'text',
161
+ text: JSON.stringify({
162
+ success: false,
163
+ error: error instanceof Error ? error.message : 'Failed to fetch tutorial'
164
+ }, null, 2),
165
+ }],
166
+ isError: true,
167
+ };
168
+ }
169
+ }
170
+ export async function getCategories(args) {
171
+ try {
172
+ const response = await apiClient.getCategories();
173
+ const categories = response?.data?.categories || [];
174
+ return {
175
+ content: [{
176
+ type: 'text',
177
+ text: JSON.stringify({
178
+ success: true,
179
+ categories,
180
+ count: categories.length,
181
+ }, null, 2),
182
+ }],
183
+ isError: false,
184
+ };
185
+ }
186
+ catch (error) {
187
+ return {
188
+ content: [{
189
+ type: 'text',
190
+ text: JSON.stringify({
191
+ success: false,
192
+ error: error instanceof Error ? error.message : 'Failed to fetch categories'
193
+ }, null, 2),
194
+ }],
195
+ isError: true,
196
+ };
197
+ }
198
+ }
199
+ export async function listProducts(args) {
200
+ try {
201
+ const response = await apiClient.getProducts();
202
+ // Handle case where API returns an object with products or data property
203
+ let products = Array.isArray(response) ? response :
204
+ (response && typeof response === 'object' && 'products' in response) ?
205
+ response.products :
206
+ (response && typeof response === 'object' && 'data' in response) ?
207
+ response.data : [];
208
+ if (args.featuredOnly) {
209
+ products = products.filter((p) => p.featured);
210
+ }
211
+ // Apply limit (default 30)
212
+ const limit = args.limit || 30;
213
+ products = products.slice(0, limit);
214
+ return {
215
+ content: [{
216
+ type: 'text',
217
+ text: JSON.stringify({
218
+ success: true,
219
+ products,
220
+ total: products.length,
221
+ }, null, 2),
222
+ }],
223
+ isError: false,
224
+ };
225
+ }
226
+ catch (error) {
227
+ return {
228
+ content: [{
229
+ type: 'text',
230
+ text: JSON.stringify({
231
+ success: false,
232
+ error: error instanceof Error ? error.message : 'Failed to list products'
233
+ }, null, 2),
234
+ }],
235
+ isError: true,
236
+ };
237
+ }
238
+ }
239
+ export async function listArticles(args) {
240
+ try {
241
+ let articles = await apiClient.getArticles();
242
+ if (args.featuredOnly) {
243
+ articles = articles.filter(a => a.featured);
244
+ }
245
+ if (args.limit) {
246
+ articles = articles.slice(0, args.limit);
247
+ }
248
+ return {
249
+ content: [{
250
+ type: 'text',
251
+ text: JSON.stringify({
252
+ success: true,
253
+ articles,
254
+ total: articles.length,
255
+ }, null, 2),
256
+ }],
257
+ isError: false,
258
+ };
259
+ }
260
+ catch (error) {
261
+ return {
262
+ content: [{
263
+ type: 'text',
264
+ text: JSON.stringify({
265
+ success: false,
266
+ error: error instanceof Error ? error.message : 'Failed to list articles'
267
+ }, null, 2),
268
+ }],
269
+ isError: true,
270
+ };
271
+ }
272
+ }
273
+ export async function listTutorials(args) {
274
+ try {
275
+ let tutorials = await apiClient.getTutorials();
276
+ if (args.featuredOnly) {
277
+ tutorials = tutorials.filter(t => t.featured);
278
+ }
279
+ if (args.limit) {
280
+ tutorials = tutorials.slice(0, args.limit);
281
+ }
282
+ return {
283
+ content: [{
284
+ type: 'text',
285
+ text: JSON.stringify({
286
+ success: true,
287
+ tutorials,
288
+ total: tutorials.length,
289
+ }, null, 2),
290
+ }],
291
+ isError: false,
292
+ };
293
+ }
294
+ catch (error) {
295
+ return {
296
+ content: [{
297
+ type: 'text',
298
+ text: JSON.stringify({
299
+ success: false,
300
+ error: error instanceof Error ? error.message : 'Failed to list tutorials'
301
+ }, null, 2),
302
+ }],
303
+ isError: true,
304
+ };
305
+ }
306
+ }
307
+ export async function registerUser(args) {
308
+ try {
309
+ const result = await apiClient.registerUser(args.email, args.password, args.displayName);
310
+ return {
311
+ content: [{
312
+ type: 'text',
313
+ text: JSON.stringify({
314
+ success: true,
315
+ message: result.message,
316
+ user: result.user,
317
+ }, null, 2),
318
+ }],
319
+ isError: false,
320
+ };
321
+ }
322
+ catch (error) {
323
+ return {
324
+ content: [{
325
+ type: 'text',
326
+ text: JSON.stringify({
327
+ success: false,
328
+ error: error instanceof Error ? error.message : 'Registration failed'
329
+ }, null, 2),
330
+ }],
331
+ isError: true,
332
+ };
333
+ }
334
+ }
335
+ export async function createStripeCheckout(args) {
336
+ try {
337
+ // Usar el endpoint seguro que obtiene los datos del producto desde Firestore
338
+ const result = await apiClient.createCheckoutSecure(args.productId, args.quantity || 1, {
339
+ guestEmail: args.guestEmail,
340
+ guestName: args.guestName,
341
+ locale: args.locale,
342
+ });
343
+ return {
344
+ content: [{
345
+ type: 'text',
346
+ text: JSON.stringify({
347
+ success: true,
348
+ sessionId: result.sessionId,
349
+ url: result.url,
350
+ product: {
351
+ id: result.product.id,
352
+ name: result.product.name,
353
+ price: result.product.price,
354
+ currency: result.product.currency,
355
+ type: result.product.type,
356
+ },
357
+ message: 'Checkout session created successfully. Redirect user to the URL to complete payment.',
358
+ }, null, 2),
359
+ }],
360
+ isError: false,
361
+ };
362
+ }
363
+ catch (error) {
364
+ return {
365
+ content: [{
366
+ type: 'text',
367
+ text: JSON.stringify({
368
+ success: false,
369
+ error: error instanceof Error ? error.message : 'Checkout failed'
370
+ }, null, 2),
371
+ }],
372
+ isError: true,
373
+ };
374
+ }
375
+ }
376
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "sychev-lab-mcp-server",
3
+ "version": "1.0.0",
4
+ "description": "MCP Server for Sychev Lab - Products, Articles, Tutorials, and Commerce",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "sychev-lab-mcp": "dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist/**/*",
12
+ "README.md",
13
+ "LICENSE"
14
+ ],
15
+ "scripts": {
16
+ "build": "tsc",
17
+ "dev": "tsc --watch",
18
+ "start": "node dist/index.js",
19
+ "start:http": "node dist/index.js --http",
20
+ "inspector": "npx @modelcontextprotocol/inspector dist/index.js",
21
+ "lint": "eslint src/**/*.ts",
22
+ "typecheck": "tsc --noEmit",
23
+ "prepublishOnly": "npm run build"
24
+ },
25
+ "keywords": [
26
+ "mcp",
27
+ "model-context-protocol",
28
+ "sychev-lab",
29
+ "ecommerce",
30
+ "stl",
31
+ "3d-printing"
32
+ ],
33
+ "author": "Anton Sychev",
34
+ "license": "MIT",
35
+ "repository": {
36
+ "type": "git",
37
+ "url": "git@github.com:Sychev-Lab/sychev-lab-mcp-server.git"
38
+ },
39
+ "bugs": {
40
+ "url": "https://github.com/Sychev-Lab/sychev-lab-mcp-server/issues"
41
+ },
42
+ "homepage": "https://github.com/Sychev-Lab/sychev-lab-mcp-server#readme",
43
+ "dependencies": {
44
+ "@modelcontextprotocol/sdk": "^1.12.0",
45
+ "zod": "^3.23.8",
46
+ "zod-to-json-schema": "^3.23.5"
47
+ },
48
+ "devDependencies": {
49
+ "@types/node": "^20.14.0",
50
+ "typescript": "^5.4.5"
51
+ },
52
+ "engines": {
53
+ "node": ">=18.0.0"
54
+ }
55
+ }