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/index.js ADDED
@@ -0,0 +1,312 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Sychev Lab MCP Server
4
+ *
5
+ * Supports both stdio (for Claude Desktop) and HTTP (for remote clients) transports
6
+ *
7
+ * Usage:
8
+ * node dist/index.js # Run with stdio transport (default)
9
+ * node dist/index.js --http # Run with HTTP transport
10
+ * node dist/index.js --http 3000 # Run HTTP on port 3000
11
+ */
12
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
13
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
14
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
15
+ import { zodToJsonSchema } from 'zod-to-json-schema';
16
+ import { validateConfig, config } from './config.js';
17
+ import { GetProductSchema, SearchProductsSchema, GetArticleSchema, GetTutorialSchema, GetCategoriesSchema, RegisterUserSchema, CreateCheckoutSchema, ListProductsSchema, ListArticlesSchema, ListTutorialsSchema, getProductDetails, searchProductsByCategory, getArticle, getTutorial, getCategories, registerUser, createStripeCheckout, listProducts, listArticles, listTutorials, } from './tools.js';
18
+ // Tool definitions with schemas
19
+ const TOOLS = [
20
+ {
21
+ name: 'list_products',
22
+ description: 'List all available products from the catalog. Optionally filter by featured products only.',
23
+ inputSchema: zodToJsonSchema(ListProductsSchema),
24
+ },
25
+ {
26
+ name: 'get_product_details',
27
+ description: 'Get detailed information about a specific product including price, description, images, and specifications.',
28
+ inputSchema: zodToJsonSchema(GetProductSchema),
29
+ },
30
+ {
31
+ name: 'search_products_by_category',
32
+ description: 'Search products within a specific category. Returns matching products with their details.',
33
+ inputSchema: zodToJsonSchema(SearchProductsSchema),
34
+ },
35
+ {
36
+ name: 'get_categories',
37
+ description: 'Get all product categories available in the store.',
38
+ inputSchema: zodToJsonSchema(GetCategoriesSchema),
39
+ },
40
+ {
41
+ name: 'list_articles',
42
+ description: 'List all available articles. Optionally filter by featured articles only.',
43
+ inputSchema: zodToJsonSchema(ListArticlesSchema),
44
+ },
45
+ {
46
+ name: 'get_article',
47
+ description: 'Get full content of a specific article by ID and language.',
48
+ inputSchema: zodToJsonSchema(GetArticleSchema),
49
+ },
50
+ {
51
+ name: 'list_tutorials',
52
+ description: 'List all available tutorials. Optionally filter by featured tutorials only.',
53
+ inputSchema: zodToJsonSchema(ListTutorialsSchema),
54
+ },
55
+ {
56
+ name: 'get_tutorial',
57
+ description: 'Get full content of a specific tutorial by ID and language including difficulty and duration.',
58
+ inputSchema: zodToJsonSchema(GetTutorialSchema),
59
+ },
60
+ {
61
+ name: 'register_user',
62
+ description: 'Register a new user account with email and password. Returns user UID on success.',
63
+ inputSchema: zodToJsonSchema(RegisterUserSchema),
64
+ },
65
+ {
66
+ name: 'create_stripe_checkout',
67
+ description: 'Create a Stripe checkout session for purchasing products. Provide product UUIDs and quantities; product details (name, price) are fetched automatically. Returns a URL to redirect the user to complete payment.',
68
+ inputSchema: zodToJsonSchema(CreateCheckoutSchema),
69
+ },
70
+ ];
71
+ // Create MCP server
72
+ const server = new Server({
73
+ name: config.name,
74
+ version: config.version,
75
+ }, {
76
+ capabilities: {
77
+ tools: {},
78
+ },
79
+ });
80
+ // Handle list tools request
81
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
82
+ return { tools: TOOLS };
83
+ });
84
+ // Handle tool calls
85
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
86
+ const { name, arguments: args } = request.params;
87
+ try {
88
+ switch (name) {
89
+ case 'list_products':
90
+ return await listProducts(ListProductsSchema.parse(args));
91
+ case 'get_product_details':
92
+ return await getProductDetails(GetProductSchema.parse(args));
93
+ case 'search_products_by_category':
94
+ return await searchProductsByCategory(SearchProductsSchema.parse(args));
95
+ case 'get_categories':
96
+ return await getCategories(GetCategoriesSchema.parse(args));
97
+ case 'list_articles':
98
+ return await listArticles(ListArticlesSchema.parse(args));
99
+ case 'get_article':
100
+ return await getArticle(GetArticleSchema.parse(args));
101
+ case 'list_tutorials':
102
+ return await listTutorials(ListTutorialsSchema.parse(args));
103
+ case 'get_tutorial':
104
+ return await getTutorial(GetTutorialSchema.parse(args));
105
+ case 'register_user':
106
+ return await registerUser(RegisterUserSchema.parse(args));
107
+ case 'create_stripe_checkout':
108
+ return await createStripeCheckout(CreateCheckoutSchema.parse(args));
109
+ default:
110
+ return {
111
+ content: [{
112
+ type: 'text',
113
+ text: JSON.stringify({ error: `Unknown tool: ${name}` }),
114
+ }],
115
+ isError: true,
116
+ };
117
+ }
118
+ }
119
+ catch (error) {
120
+ if (error instanceof Error && error.name === 'ZodError') {
121
+ return {
122
+ content: [{
123
+ type: 'text',
124
+ text: JSON.stringify({
125
+ error: 'Invalid arguments',
126
+ details: error.message,
127
+ }, null, 2),
128
+ }],
129
+ isError: true,
130
+ };
131
+ }
132
+ throw error;
133
+ }
134
+ });
135
+ // Run server with stdio transport
136
+ async function runStdioServer() {
137
+ validateConfig();
138
+ const transport = new StdioServerTransport();
139
+ // Log to stderr so it doesn't interfere with stdio communication
140
+ console.error(`Sychev Lab MCP Server v${config.version}`);
141
+ console.error(`Connected to: ${config.baseUrl}`);
142
+ console.error('Running with stdio transport...');
143
+ await server.connect(transport);
144
+ }
145
+ // Run server with HTTP transport
146
+ async function runHttpServer(port) {
147
+ validateConfig();
148
+ const http = await import('http');
149
+ const url = await import('url');
150
+ // API key is optional - only used if MCP_API_KEY is set
151
+ const API_KEY = process.env.MCP_API_KEY;
152
+ const httpServer = http.createServer(async (req, res) => {
153
+ // CORS headers
154
+ res.setHeader('Access-Control-Allow-Origin', '*');
155
+ res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS');
156
+ res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
157
+ res.setHeader('Content-Type', 'application/json');
158
+ if (req.method === 'OPTIONS') {
159
+ res.writeHead(200);
160
+ res.end();
161
+ return;
162
+ }
163
+ // Only accept POST requests
164
+ if (req.method !== 'POST') {
165
+ res.writeHead(405);
166
+ res.end(JSON.stringify({ error: 'Method not allowed' }));
167
+ return;
168
+ }
169
+ // Check API key only if configured
170
+ if (API_KEY) {
171
+ const authHeader = req.headers['authorization'] || '';
172
+ const apiKey = authHeader.replace('Bearer ', '');
173
+ if (apiKey !== API_KEY) {
174
+ res.writeHead(401);
175
+ res.end(JSON.stringify({ error: 'Unauthorized' }));
176
+ return;
177
+ }
178
+ }
179
+ // Parse URL
180
+ const parsedUrl = url.parse(req.url || '', true);
181
+ const pathname = parsedUrl.pathname;
182
+ // Read body
183
+ let body = '';
184
+ req.on('data', (chunk) => {
185
+ body += chunk.toString();
186
+ });
187
+ req.on('end', async () => {
188
+ try {
189
+ // Parse body for tool calls, empty body is ok for list
190
+ let requestData = {};
191
+ if (body.trim()) {
192
+ requestData = JSON.parse(body);
193
+ }
194
+ if (pathname === '/mcp/v1/tools/list') {
195
+ // List tools
196
+ res.writeHead(200);
197
+ res.end(JSON.stringify({ tools: TOOLS }));
198
+ }
199
+ else if (pathname === '/mcp/v1/tools/call') {
200
+ // Call tool
201
+ const { name, arguments: args } = requestData;
202
+ let result;
203
+ try {
204
+ switch (name) {
205
+ case 'list_products':
206
+ result = await listProducts(ListProductsSchema.parse(args));
207
+ break;
208
+ case 'get_product_details':
209
+ result = await getProductDetails(GetProductSchema.parse(args));
210
+ break;
211
+ case 'search_products_by_category':
212
+ result = await searchProductsByCategory(SearchProductsSchema.parse(args));
213
+ break;
214
+ case 'get_categories':
215
+ result = await getCategories(GetCategoriesSchema.parse(args));
216
+ break;
217
+ case 'list_articles':
218
+ result = await listArticles(ListArticlesSchema.parse(args));
219
+ break;
220
+ case 'get_article':
221
+ result = await getArticle(GetArticleSchema.parse(args));
222
+ break;
223
+ case 'list_tutorials':
224
+ result = await listTutorials(ListTutorialsSchema.parse(args));
225
+ break;
226
+ case 'get_tutorial':
227
+ result = await getTutorial(GetTutorialSchema.parse(args));
228
+ break;
229
+ case 'register_user':
230
+ result = await registerUser(RegisterUserSchema.parse(args));
231
+ break;
232
+ case 'create_stripe_checkout':
233
+ result = await createStripeCheckout(CreateCheckoutSchema.parse(args));
234
+ break;
235
+ default:
236
+ result = {
237
+ content: [{
238
+ type: 'text',
239
+ text: JSON.stringify({ error: `Unknown tool: ${name}` }),
240
+ }],
241
+ isError: true,
242
+ };
243
+ }
244
+ }
245
+ catch (error) {
246
+ if (error instanceof Error && error.name === 'ZodError') {
247
+ result = {
248
+ content: [{
249
+ type: 'text',
250
+ text: JSON.stringify({
251
+ error: 'Invalid arguments',
252
+ details: error.message,
253
+ }, null, 2),
254
+ }],
255
+ isError: true,
256
+ };
257
+ }
258
+ else {
259
+ throw error;
260
+ }
261
+ }
262
+ res.writeHead(200);
263
+ res.end(JSON.stringify(result));
264
+ }
265
+ else {
266
+ res.writeHead(404);
267
+ res.end(JSON.stringify({ error: 'Not found' }));
268
+ }
269
+ }
270
+ catch (error) {
271
+ res.writeHead(500);
272
+ res.end(JSON.stringify({
273
+ error: 'Internal server error',
274
+ message: error instanceof Error ? error.message : 'Unknown error',
275
+ }));
276
+ }
277
+ });
278
+ });
279
+ httpServer.listen(port, () => {
280
+ console.log(`Sychev Lab MCP Server v${config.version}`);
281
+ console.log(`Connected to: ${config.baseUrl}`);
282
+ console.log(`HTTP transport running on port ${port}`);
283
+ console.log(`\nEndpoints:`);
284
+ console.log(` POST http://localhost:${port}/mcp/v1/tools/list`);
285
+ console.log(` POST http://localhost:${port}/mcp/v1/tools/call`);
286
+ console.log(` Content-Type: application/json`);
287
+ if (API_KEY) {
288
+ console.log(`\nAuthentication required:`);
289
+ console.log(` Authorization: Bearer <MCP_API_KEY>`);
290
+ }
291
+ });
292
+ }
293
+ // Parse command line arguments
294
+ const args = process.argv.slice(2);
295
+ const useHttp = args.includes('--http');
296
+ const httpPortIndex = args.indexOf('--http');
297
+ const httpPort = httpPortIndex !== -1 && args[httpPortIndex + 1]
298
+ ? parseInt(args[httpPortIndex + 1], 10)
299
+ : 3000;
300
+ if (useHttp) {
301
+ runHttpServer(httpPort).catch((error) => {
302
+ console.error('Fatal error:', error);
303
+ process.exit(1);
304
+ });
305
+ }
306
+ else {
307
+ runStdioServer().catch((error) => {
308
+ console.error('Fatal error:', error);
309
+ process.exit(1);
310
+ });
311
+ }
312
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * MCP Tools for Sychev Lab
3
+ */
4
+ import { z } from 'zod';
5
+ export declare const GetProductSchema: z.ZodObject<{
6
+ productId: z.ZodString;
7
+ lang: z.ZodOptional<z.ZodEnum<["es", "en"]>>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ productId: string;
10
+ lang?: "es" | "en" | undefined;
11
+ }, {
12
+ productId: string;
13
+ lang?: "es" | "en" | undefined;
14
+ }>;
15
+ export declare const SearchProductsSchema: z.ZodObject<{
16
+ categoryId: z.ZodOptional<z.ZodString>;
17
+ limit: z.ZodOptional<z.ZodNumber>;
18
+ }, "strip", z.ZodTypeAny, {
19
+ categoryId?: string | undefined;
20
+ limit?: number | undefined;
21
+ }, {
22
+ categoryId?: string | undefined;
23
+ limit?: number | undefined;
24
+ }>;
25
+ export declare const GetArticleSchema: z.ZodObject<{
26
+ articleId: z.ZodString;
27
+ lang: z.ZodEnum<["es", "en"]>;
28
+ }, "strip", z.ZodTypeAny, {
29
+ lang: "es" | "en";
30
+ articleId: string;
31
+ }, {
32
+ lang: "es" | "en";
33
+ articleId: string;
34
+ }>;
35
+ export declare const GetTutorialSchema: z.ZodObject<{
36
+ tutorialId: z.ZodString;
37
+ lang: z.ZodEnum<["es", "en"]>;
38
+ }, "strip", z.ZodTypeAny, {
39
+ lang: "es" | "en";
40
+ tutorialId: string;
41
+ }, {
42
+ lang: "es" | "en";
43
+ tutorialId: string;
44
+ }>;
45
+ export declare const GetCategoriesSchema: z.ZodObject<{
46
+ includeProducts: z.ZodOptional<z.ZodBoolean>;
47
+ }, "strip", z.ZodTypeAny, {
48
+ includeProducts?: boolean | undefined;
49
+ }, {
50
+ includeProducts?: boolean | undefined;
51
+ }>;
52
+ export declare const RegisterUserSchema: z.ZodObject<{
53
+ email: z.ZodString;
54
+ password: z.ZodString;
55
+ displayName: z.ZodOptional<z.ZodString>;
56
+ }, "strip", z.ZodTypeAny, {
57
+ email: string;
58
+ password: string;
59
+ displayName?: string | undefined;
60
+ }, {
61
+ email: string;
62
+ password: string;
63
+ displayName?: string | undefined;
64
+ }>;
65
+ export declare const CreateCheckoutSchema: z.ZodObject<{
66
+ productId: z.ZodString;
67
+ quantity: z.ZodOptional<z.ZodNumber>;
68
+ guestEmail: z.ZodOptional<z.ZodString>;
69
+ guestName: z.ZodOptional<z.ZodString>;
70
+ locale: z.ZodOptional<z.ZodEnum<["es", "en"]>>;
71
+ }, "strip", z.ZodTypeAny, {
72
+ productId: string;
73
+ guestEmail?: string | undefined;
74
+ guestName?: string | undefined;
75
+ quantity?: number | undefined;
76
+ locale?: "es" | "en" | undefined;
77
+ }, {
78
+ productId: string;
79
+ guestEmail?: string | undefined;
80
+ guestName?: string | undefined;
81
+ quantity?: number | undefined;
82
+ locale?: "es" | "en" | undefined;
83
+ }>;
84
+ export declare const ListProductsSchema: z.ZodObject<{
85
+ limit: z.ZodOptional<z.ZodNumber>;
86
+ featuredOnly: z.ZodOptional<z.ZodBoolean>;
87
+ }, "strip", z.ZodTypeAny, {
88
+ limit?: number | undefined;
89
+ featuredOnly?: boolean | undefined;
90
+ }, {
91
+ limit?: number | undefined;
92
+ featuredOnly?: boolean | undefined;
93
+ }>;
94
+ export declare const ListArticlesSchema: z.ZodObject<{
95
+ limit: z.ZodOptional<z.ZodNumber>;
96
+ featuredOnly: z.ZodOptional<z.ZodBoolean>;
97
+ }, "strip", z.ZodTypeAny, {
98
+ limit?: number | undefined;
99
+ featuredOnly?: boolean | undefined;
100
+ }, {
101
+ limit?: number | undefined;
102
+ featuredOnly?: boolean | undefined;
103
+ }>;
104
+ export declare const ListTutorialsSchema: z.ZodObject<{
105
+ limit: z.ZodOptional<z.ZodNumber>;
106
+ featuredOnly: z.ZodOptional<z.ZodBoolean>;
107
+ }, "strip", z.ZodTypeAny, {
108
+ limit?: number | undefined;
109
+ featuredOnly?: boolean | undefined;
110
+ }, {
111
+ limit?: number | undefined;
112
+ featuredOnly?: boolean | undefined;
113
+ }>;
114
+ export declare function getProductDetails(args: z.infer<typeof GetProductSchema>): Promise<{
115
+ content: {
116
+ type: string;
117
+ text: string;
118
+ }[];
119
+ isError: boolean;
120
+ }>;
121
+ export declare function searchProductsByCategory(args: z.infer<typeof SearchProductsSchema>): Promise<{
122
+ content: {
123
+ type: string;
124
+ text: string;
125
+ }[];
126
+ isError: boolean;
127
+ }>;
128
+ export declare function getArticle(args: z.infer<typeof GetArticleSchema>): Promise<{
129
+ content: {
130
+ type: string;
131
+ text: string;
132
+ }[];
133
+ isError: boolean;
134
+ }>;
135
+ export declare function getTutorial(args: z.infer<typeof GetTutorialSchema>): Promise<{
136
+ content: {
137
+ type: string;
138
+ text: string;
139
+ }[];
140
+ isError: boolean;
141
+ }>;
142
+ export declare function getCategories(args: z.infer<typeof GetCategoriesSchema>): Promise<{
143
+ content: {
144
+ type: string;
145
+ text: string;
146
+ }[];
147
+ isError: boolean;
148
+ }>;
149
+ export declare function listProducts(args: z.infer<typeof ListProductsSchema>): Promise<{
150
+ content: {
151
+ type: string;
152
+ text: string;
153
+ }[];
154
+ isError: boolean;
155
+ }>;
156
+ export declare function listArticles(args: z.infer<typeof ListArticlesSchema>): Promise<{
157
+ content: {
158
+ type: string;
159
+ text: string;
160
+ }[];
161
+ isError: boolean;
162
+ }>;
163
+ export declare function listTutorials(args: z.infer<typeof ListTutorialsSchema>): Promise<{
164
+ content: {
165
+ type: string;
166
+ text: string;
167
+ }[];
168
+ isError: boolean;
169
+ }>;
170
+ export declare function registerUser(args: z.infer<typeof RegisterUserSchema>): Promise<{
171
+ content: {
172
+ type: string;
173
+ text: string;
174
+ }[];
175
+ isError: boolean;
176
+ }>;
177
+ export declare function createStripeCheckout(args: z.infer<typeof CreateCheckoutSchema>): Promise<{
178
+ content: {
179
+ type: string;
180
+ text: string;
181
+ }[];
182
+ isError: boolean;
183
+ }>;
184
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,gBAAgB;;;;;;;;;EAG3B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;EAG/B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;EAG3B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;EAG5B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;EAM/B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;EAG7B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;EAG7B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;EAG9B,CAAC;AAGH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC;;;;;;GAsB7E;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC;;;;;;GA2CxF;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC;;;;;;GAsBtE;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC;;;;;;GAsBxE;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC;;;;;;GA2B5E;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC;;;;;;GA0C1E;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC;;;;;;GAmC1E;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC;;;;;;GAmC5E;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC;;;;;;GA8B1E;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC;;;;;;GA4CpF"}