@mbc-cqrs-serverless/mcp-server 1.0.15

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.
Files changed (43) hide show
  1. package/LICENSE.txt +7 -0
  2. package/README.md +196 -0
  3. package/bin/mcp-server.js +13 -0
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.js +50 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/prompts/cqrs-guide.d.ts +8 -0
  8. package/dist/prompts/cqrs-guide.js +467 -0
  9. package/dist/prompts/cqrs-guide.js.map +1 -0
  10. package/dist/prompts/index.d.ts +11 -0
  11. package/dist/prompts/index.js +33 -0
  12. package/dist/prompts/index.js.map +1 -0
  13. package/dist/resources/documentation.d.ts +12 -0
  14. package/dist/resources/documentation.js +131 -0
  15. package/dist/resources/documentation.js.map +1 -0
  16. package/dist/resources/errors.d.ts +12 -0
  17. package/dist/resources/errors.js +75 -0
  18. package/dist/resources/errors.js.map +1 -0
  19. package/dist/resources/index.d.ts +15 -0
  20. package/dist/resources/index.js +33 -0
  21. package/dist/resources/index.js.map +1 -0
  22. package/dist/resources/project.d.ts +12 -0
  23. package/dist/resources/project.js +193 -0
  24. package/dist/resources/project.js.map +1 -0
  25. package/dist/server.d.ts +12 -0
  26. package/dist/server.js +113 -0
  27. package/dist/server.js.map +1 -0
  28. package/dist/tools/analyze.d.ts +15 -0
  29. package/dist/tools/analyze.js +304 -0
  30. package/dist/tools/analyze.js.map +1 -0
  31. package/dist/tools/generate.d.ts +15 -0
  32. package/dist/tools/generate.js +153 -0
  33. package/dist/tools/generate.js.map +1 -0
  34. package/dist/tools/generator.d.ts +41 -0
  35. package/dist/tools/generator.js +241 -0
  36. package/dist/tools/generator.js.map +1 -0
  37. package/dist/tools/index.d.ts +15 -0
  38. package/dist/tools/index.js +39 -0
  39. package/dist/tools/index.js.map +1 -0
  40. package/dist/tools/validate.d.ts +15 -0
  41. package/dist/tools/validate.js +204 -0
  42. package/dist/tools/validate.js.map +1 -0
  43. package/package.json +60 -0
@@ -0,0 +1,304 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getAnalyzeTools = getAnalyzeTools;
37
+ exports.handleAnalyzeTool = handleAnalyzeTool;
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const zod_1 = require("zod");
41
+ const AnalyzeProjectSchema = zod_1.z.object({
42
+ path: zod_1.z.string().optional().describe('Path to analyze (defaults to project root)'),
43
+ });
44
+ const LookupErrorSchema = zod_1.z.object({
45
+ error_message: zod_1.z.string().describe('The error message to look up'),
46
+ });
47
+ /**
48
+ * Get all analyze tools.
49
+ */
50
+ function getAnalyzeTools() {
51
+ return [
52
+ {
53
+ name: 'mbc_analyze_project',
54
+ description: 'Analyze an MBC CQRS Serverless project structure. Returns information about modules, entities, services, and CQRS pattern usage.',
55
+ inputSchema: {
56
+ type: 'object',
57
+ properties: {
58
+ path: {
59
+ type: 'string',
60
+ description: 'Path to analyze (defaults to project root)',
61
+ },
62
+ },
63
+ },
64
+ },
65
+ {
66
+ name: 'mbc_lookup_error',
67
+ description: 'Look up an error message in the error catalog to find its cause and solution.',
68
+ inputSchema: {
69
+ type: 'object',
70
+ properties: {
71
+ error_message: {
72
+ type: 'string',
73
+ description: 'The error message to look up',
74
+ },
75
+ },
76
+ required: ['error_message'],
77
+ },
78
+ },
79
+ ];
80
+ }
81
+ /**
82
+ * Handle analyze tool calls.
83
+ */
84
+ async function handleAnalyzeTool(name, args, projectPath) {
85
+ switch (name) {
86
+ case 'mbc_analyze_project': {
87
+ const parsed = AnalyzeProjectSchema.parse(args);
88
+ const targetPath = parsed.path ? path.resolve(projectPath, parsed.path) : projectPath;
89
+ const result = await analyzeProject(targetPath);
90
+ return formatAnalysisResult(result);
91
+ }
92
+ case 'mbc_lookup_error': {
93
+ const parsed = LookupErrorSchema.parse(args);
94
+ return await lookupError(parsed.error_message);
95
+ }
96
+ default:
97
+ return {
98
+ content: [{ type: 'text', text: `Unknown analyze tool: ${name}` }],
99
+ isError: true,
100
+ };
101
+ }
102
+ }
103
+ async function analyzeProject(projectPath) {
104
+ const result = {
105
+ projectName: path.basename(projectPath),
106
+ framework: {
107
+ detected: false,
108
+ packages: [],
109
+ },
110
+ structure: {
111
+ modules: [],
112
+ entities: [],
113
+ services: 0,
114
+ controllers: 0,
115
+ dtos: 0,
116
+ },
117
+ cqrsPatterns: {
118
+ commandHandlers: 0,
119
+ queryHandlers: 0,
120
+ eventHandlers: 0,
121
+ },
122
+ };
123
+ // Check package.json
124
+ const packageJsonPath = path.join(projectPath, 'package.json');
125
+ if (fs.existsSync(packageJsonPath)) {
126
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
127
+ result.projectName = packageJson.name || result.projectName;
128
+ const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };
129
+ const mbcPackages = Object.keys(deps).filter(k => k.startsWith('@mbc-cqrs-serverless/'));
130
+ result.framework.packages = mbcPackages;
131
+ result.framework.detected = mbcPackages.length > 0;
132
+ if (deps['@mbc-cqrs-serverless/core']) {
133
+ result.framework.version = deps['@mbc-cqrs-serverless/core'];
134
+ }
135
+ }
136
+ const srcPath = path.join(projectPath, 'src');
137
+ if (!fs.existsSync(srcPath)) {
138
+ return result;
139
+ }
140
+ // Analyze modules
141
+ const moduleFiles = await findFiles(srcPath, '.module.ts');
142
+ for (const file of moduleFiles) {
143
+ const content = fs.readFileSync(file, 'utf-8');
144
+ const classMatch = content.match(/export\s+class\s+(\w+Module)/);
145
+ if (classMatch) {
146
+ const imports = [];
147
+ const importMatches = content.matchAll(/imports:\s*\[([\s\S]*?)\]/g);
148
+ for (const match of importMatches) {
149
+ const importList = match[1].split(',').map(s => s.trim()).filter(s => s);
150
+ imports.push(...importList);
151
+ }
152
+ result.structure.modules.push({
153
+ name: classMatch[1],
154
+ path: path.relative(projectPath, file),
155
+ imports,
156
+ });
157
+ }
158
+ }
159
+ // Analyze entities
160
+ const entityFiles = await findFiles(srcPath, '.entity.ts');
161
+ for (const file of entityFiles) {
162
+ const content = fs.readFileSync(file, 'utf-8');
163
+ const classMatch = content.match(/export\s+class\s+(\w+)/);
164
+ if (classMatch) {
165
+ const type = content.includes('CommandEntity') ? 'command' :
166
+ content.includes('DataEntity') ? 'data' : 'unknown';
167
+ const fields = [];
168
+ const fieldMatches = content.matchAll(/^\s*(\w+)(?:\?)?:\s*(\w+)/gm);
169
+ for (const match of fieldMatches) {
170
+ if (!['constructor', 'export', 'import', 'class', 'extends', 'implements'].includes(match[1])) {
171
+ fields.push(`${match[1]}: ${match[2]}`);
172
+ }
173
+ }
174
+ result.structure.entities.push({
175
+ name: classMatch[1],
176
+ path: path.relative(projectPath, file),
177
+ type,
178
+ fields: fields.slice(0, 10),
179
+ });
180
+ }
181
+ }
182
+ // Count other files
183
+ result.structure.services = (await findFiles(srcPath, '.service.ts')).length;
184
+ result.structure.controllers = (await findFiles(srcPath, '.controller.ts')).length;
185
+ result.structure.dtos = (await findFiles(srcPath, '.dto.ts')).length;
186
+ // Analyze CQRS patterns
187
+ const allTsFiles = await findFiles(srcPath, '.ts');
188
+ for (const file of allTsFiles) {
189
+ const content = fs.readFileSync(file, 'utf-8');
190
+ if (content.includes('@CommandHandler'))
191
+ result.cqrsPatterns.commandHandlers++;
192
+ if (content.includes('@QueryHandler'))
193
+ result.cqrsPatterns.queryHandlers++;
194
+ if (content.includes('@EventHandler') || content.includes('IEventHandler'))
195
+ result.cqrsPatterns.eventHandlers++;
196
+ }
197
+ return result;
198
+ }
199
+ async function findFiles(dir, suffix) {
200
+ const files = [];
201
+ if (!fs.existsSync(dir)) {
202
+ return files;
203
+ }
204
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
205
+ for (const entry of entries) {
206
+ const fullPath = path.join(dir, entry.name);
207
+ if (entry.isDirectory() && entry.name !== 'node_modules' && entry.name !== 'dist') {
208
+ files.push(...await findFiles(fullPath, suffix));
209
+ }
210
+ else if (entry.isFile() && entry.name.endsWith(suffix)) {
211
+ files.push(fullPath);
212
+ }
213
+ }
214
+ return files;
215
+ }
216
+ async function lookupError(errorMessage) {
217
+ const frameworkRoot = path.resolve(__dirname, '../../../../..');
218
+ const errorCatalogPath = path.join(frameworkRoot, 'docs', 'ERROR_CATALOG.md');
219
+ if (!fs.existsSync(errorCatalogPath)) {
220
+ return {
221
+ content: [{ type: 'text', text: 'Error catalog not found.' }],
222
+ isError: true,
223
+ };
224
+ }
225
+ const catalog = fs.readFileSync(errorCatalogPath, 'utf-8');
226
+ const lowerError = errorMessage.toLowerCase();
227
+ // Find matching sections
228
+ const sections = catalog.split(/^### /gm).slice(1);
229
+ const matches = [];
230
+ for (const section of sections) {
231
+ const sectionLower = section.toLowerCase();
232
+ if (sectionLower.includes(lowerError) ||
233
+ lowerError.split(' ').some(word => word.length > 4 && sectionLower.includes(word))) {
234
+ matches.push('### ' + section.trim());
235
+ }
236
+ }
237
+ if (matches.length === 0) {
238
+ return {
239
+ content: [{
240
+ type: 'text',
241
+ text: `No matching error found for: "${errorMessage}"\n\nTry searching with different keywords or check the full error catalog using the mbc://docs/errors resource.`,
242
+ }],
243
+ };
244
+ }
245
+ return {
246
+ content: [{
247
+ type: 'text',
248
+ text: `## Error Lookup Results\n\nFound ${matches.length} matching error(s):\n\n${matches.join('\n\n---\n\n')}`,
249
+ }],
250
+ };
251
+ }
252
+ function formatAnalysisResult(result) {
253
+ let text = `## Project Analysis: ${result.projectName}\n\n`;
254
+ // Framework info
255
+ text += '### Framework\n\n';
256
+ if (result.framework.detected) {
257
+ text += `MBC CQRS Serverless detected\n`;
258
+ if (result.framework.version) {
259
+ text += `- Core version: ${result.framework.version}\n`;
260
+ }
261
+ text += `- Installed packages: ${result.framework.packages.join(', ')}\n`;
262
+ }
263
+ else {
264
+ text += 'MBC CQRS Serverless framework not detected\n';
265
+ }
266
+ text += '\n';
267
+ // Structure summary
268
+ text += '### Structure Summary\n\n';
269
+ text += `- Modules: ${result.structure.modules.length}\n`;
270
+ text += `- Entities: ${result.structure.entities.length}\n`;
271
+ text += `- Services: ${result.structure.services}\n`;
272
+ text += `- Controllers: ${result.structure.controllers}\n`;
273
+ text += `- DTOs: ${result.structure.dtos}\n\n`;
274
+ // CQRS patterns
275
+ text += '### CQRS Patterns\n\n';
276
+ text += `- Command Handlers: ${result.cqrsPatterns.commandHandlers}\n`;
277
+ text += `- Query Handlers: ${result.cqrsPatterns.queryHandlers}\n`;
278
+ text += `- Event Handlers: ${result.cqrsPatterns.eventHandlers}\n\n`;
279
+ // Modules detail
280
+ if (result.structure.modules.length > 0) {
281
+ text += '### Modules\n\n';
282
+ for (const mod of result.structure.modules) {
283
+ text += `**${mod.name}** (${mod.path})\n`;
284
+ if (mod.imports.length > 0) {
285
+ text += ` Imports: ${mod.imports.slice(0, 5).join(', ')}${mod.imports.length > 5 ? '...' : ''}\n`;
286
+ }
287
+ }
288
+ text += '\n';
289
+ }
290
+ // Entities detail
291
+ if (result.structure.entities.length > 0) {
292
+ text += '### Entities\n\n';
293
+ for (const entity of result.structure.entities) {
294
+ text += `**${entity.name}** [${entity.type}] (${entity.path})\n`;
295
+ if (entity.fields.length > 0) {
296
+ text += ` Fields: ${entity.fields.slice(0, 5).join(', ')}${entity.fields.length > 5 ? '...' : ''}\n`;
297
+ }
298
+ }
299
+ }
300
+ return {
301
+ content: [{ type: 'text', text }],
302
+ };
303
+ }
304
+ //# sourceMappingURL=analyze.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/tools/analyze.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ /**
3
+ * Get all generate tools.
4
+ */
5
+ export declare function getGenerateTools(): Tool[];
6
+ /**
7
+ * Handle generate tool calls.
8
+ */
9
+ export declare function handleGenerateTool(name: string, args: Record<string, unknown>, projectPath: string): Promise<{
10
+ content: {
11
+ type: 'text';
12
+ text: string;
13
+ }[];
14
+ isError?: boolean;
15
+ }>;
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getGenerateTools = getGenerateTools;
4
+ exports.handleGenerateTool = handleGenerateTool;
5
+ const zod_1 = require("zod");
6
+ const generator_js_1 = require("./generator.js");
7
+ /**
8
+ * Schema definitions for generate tools.
9
+ */
10
+ const GenerateModuleSchema = zod_1.z.object({
11
+ name: zod_1.z.string().describe('Name of the module to generate (e.g., "order", "product")'),
12
+ mode: zod_1.z.enum(['async', 'sync']).optional().describe('Command processing mode: async (default) or sync'),
13
+ });
14
+ const GenerateComponentSchema = zod_1.z.object({
15
+ name: zod_1.z.string().describe('Name of the component to generate'),
16
+ });
17
+ /**
18
+ * Get all generate tools.
19
+ */
20
+ function getGenerateTools() {
21
+ return [
22
+ {
23
+ name: 'mbc_generate_module',
24
+ description: 'Generate a new CQRS module with controller, service, entity, and DTOs. This creates a complete module structure following MBC CQRS patterns.',
25
+ inputSchema: {
26
+ type: 'object',
27
+ properties: {
28
+ name: {
29
+ type: 'string',
30
+ description: 'Name of the module to generate (e.g., "order", "product")',
31
+ },
32
+ mode: {
33
+ type: 'string',
34
+ enum: ['async', 'sync'],
35
+ description: 'Command processing mode: async (default) or sync',
36
+ },
37
+ },
38
+ required: ['name'],
39
+ },
40
+ },
41
+ {
42
+ name: 'mbc_generate_controller',
43
+ description: 'Generate a new controller for handling HTTP requests.',
44
+ inputSchema: {
45
+ type: 'object',
46
+ properties: {
47
+ name: {
48
+ type: 'string',
49
+ description: 'Name of the controller to generate',
50
+ },
51
+ },
52
+ required: ['name'],
53
+ },
54
+ },
55
+ {
56
+ name: 'mbc_generate_service',
57
+ description: 'Generate a new service for business logic.',
58
+ inputSchema: {
59
+ type: 'object',
60
+ properties: {
61
+ name: {
62
+ type: 'string',
63
+ description: 'Name of the service to generate',
64
+ },
65
+ },
66
+ required: ['name'],
67
+ },
68
+ },
69
+ {
70
+ name: 'mbc_generate_entity',
71
+ description: 'Generate a new entity for data modeling.',
72
+ inputSchema: {
73
+ type: 'object',
74
+ properties: {
75
+ name: {
76
+ type: 'string',
77
+ description: 'Name of the entity to generate',
78
+ },
79
+ },
80
+ required: ['name'],
81
+ },
82
+ },
83
+ {
84
+ name: 'mbc_generate_dto',
85
+ description: 'Generate a new DTO (Data Transfer Object) for request/response handling.',
86
+ inputSchema: {
87
+ type: 'object',
88
+ properties: {
89
+ name: {
90
+ type: 'string',
91
+ description: 'Name of the DTO to generate',
92
+ },
93
+ },
94
+ required: ['name'],
95
+ },
96
+ },
97
+ ];
98
+ }
99
+ /**
100
+ * Handle generate tool calls.
101
+ */
102
+ async function handleGenerateTool(name, args, projectPath) {
103
+ const generator = new generator_js_1.CliGenerator(projectPath);
104
+ let result;
105
+ switch (name) {
106
+ case 'mbc_generate_module': {
107
+ const parsed = GenerateModuleSchema.parse(args);
108
+ result = await generator.generateModule(parsed.name, { mode: parsed.mode });
109
+ break;
110
+ }
111
+ case 'mbc_generate_controller': {
112
+ const parsed = GenerateComponentSchema.parse(args);
113
+ result = await generator.generateController(parsed.name);
114
+ break;
115
+ }
116
+ case 'mbc_generate_service': {
117
+ const parsed = GenerateComponentSchema.parse(args);
118
+ result = await generator.generateService(parsed.name);
119
+ break;
120
+ }
121
+ case 'mbc_generate_entity': {
122
+ const parsed = GenerateComponentSchema.parse(args);
123
+ result = await generator.generateEntity(parsed.name);
124
+ break;
125
+ }
126
+ case 'mbc_generate_dto': {
127
+ const parsed = GenerateComponentSchema.parse(args);
128
+ result = await generator.generateDto(parsed.name);
129
+ break;
130
+ }
131
+ default:
132
+ return {
133
+ content: [{ type: 'text', text: `Unknown generate tool: ${name}` }],
134
+ isError: true,
135
+ };
136
+ }
137
+ if (result.success) {
138
+ let message = result.message;
139
+ if (result.files && result.files.length > 0) {
140
+ message += '\n\nCreated files:\n' + result.files.map(f => `- ${f}`).join('\n');
141
+ }
142
+ return {
143
+ content: [{ type: 'text', text: message }],
144
+ };
145
+ }
146
+ else {
147
+ return {
148
+ content: [{ type: 'text', text: `Error: ${result.message}\n${result.error || ''}` }],
149
+ isError: true,
150
+ };
151
+ }
152
+ }
153
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Generator result interface.
3
+ */
4
+ export interface GeneratorResult {
5
+ success: boolean;
6
+ message: string;
7
+ files?: string[];
8
+ error?: string;
9
+ }
10
+ /**
11
+ * Generator interface for code generation abstraction.
12
+ * Allows swapping CLI-based generation with direct schematics in the future.
13
+ */
14
+ export interface IGenerator {
15
+ generateModule(name: string, options?: {
16
+ mode?: 'async' | 'sync';
17
+ }): Promise<GeneratorResult>;
18
+ generateController(name: string): Promise<GeneratorResult>;
19
+ generateService(name: string): Promise<GeneratorResult>;
20
+ generateEntity(name: string): Promise<GeneratorResult>;
21
+ generateDto(name: string): Promise<GeneratorResult>;
22
+ }
23
+ /**
24
+ * CLI-based generator implementation.
25
+ * Spawns mbc CLI as a subprocess to generate code.
26
+ */
27
+ export declare class CliGenerator implements IGenerator {
28
+ private readonly projectPath;
29
+ constructor(projectPath: string);
30
+ generateModule(name: string, options?: {
31
+ mode?: 'async' | 'sync';
32
+ }): Promise<GeneratorResult>;
33
+ generateController(name: string): Promise<GeneratorResult>;
34
+ generateService(name: string): Promise<GeneratorResult>;
35
+ generateEntity(name: string): Promise<GeneratorResult>;
36
+ generateDto(name: string): Promise<GeneratorResult>;
37
+ private checkPrerequisites;
38
+ private isCliInstalled;
39
+ private runCli;
40
+ private extractCreatedFiles;
41
+ }