@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.
- package/LICENSE.txt +7 -0
- package/README.md +196 -0
- package/bin/mcp-server.js +13 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/cqrs-guide.d.ts +8 -0
- package/dist/prompts/cqrs-guide.js +467 -0
- package/dist/prompts/cqrs-guide.js.map +1 -0
- package/dist/prompts/index.d.ts +11 -0
- package/dist/prompts/index.js +33 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/documentation.d.ts +12 -0
- package/dist/resources/documentation.js +131 -0
- package/dist/resources/documentation.js.map +1 -0
- package/dist/resources/errors.d.ts +12 -0
- package/dist/resources/errors.js +75 -0
- package/dist/resources/errors.js.map +1 -0
- package/dist/resources/index.d.ts +15 -0
- package/dist/resources/index.js +33 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/project.d.ts +12 -0
- package/dist/resources/project.js +193 -0
- package/dist/resources/project.js.map +1 -0
- package/dist/server.d.ts +12 -0
- package/dist/server.js +113 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/analyze.d.ts +15 -0
- package/dist/tools/analyze.js +304 -0
- package/dist/tools/analyze.js.map +1 -0
- package/dist/tools/generate.d.ts +15 -0
- package/dist/tools/generate.js +153 -0
- package/dist/tools/generate.js.map +1 -0
- package/dist/tools/generator.d.ts +41 -0
- package/dist/tools/generator.js +241 -0
- package/dist/tools/generator.js.map +1 -0
- package/dist/tools/index.d.ts +15 -0
- package/dist/tools/index.js +39 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/validate.d.ts +15 -0
- package/dist/tools/validate.js +204 -0
- package/dist/tools/validate.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,241 @@
|
|
|
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.CliGenerator = void 0;
|
|
37
|
+
const child_process_1 = require("child_process");
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
/**
|
|
41
|
+
* CLI-based generator implementation.
|
|
42
|
+
* Spawns mbc CLI as a subprocess to generate code.
|
|
43
|
+
*/
|
|
44
|
+
class CliGenerator {
|
|
45
|
+
constructor(projectPath) {
|
|
46
|
+
this.projectPath = projectPath;
|
|
47
|
+
}
|
|
48
|
+
async generateModule(name, options) {
|
|
49
|
+
try {
|
|
50
|
+
const preCheck = this.checkPrerequisites();
|
|
51
|
+
if (!preCheck.success)
|
|
52
|
+
return preCheck;
|
|
53
|
+
const args = ['generate', 'module', name];
|
|
54
|
+
if (options?.mode) {
|
|
55
|
+
args.push('--mode', options.mode);
|
|
56
|
+
}
|
|
57
|
+
return await this.runCli(args);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
return {
|
|
61
|
+
success: false,
|
|
62
|
+
message: 'Failed to generate module',
|
|
63
|
+
error: String(error),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async generateController(name) {
|
|
68
|
+
try {
|
|
69
|
+
const preCheck = this.checkPrerequisites();
|
|
70
|
+
if (!preCheck.success)
|
|
71
|
+
return preCheck;
|
|
72
|
+
return await this.runCli(['generate', 'controller', name]);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
return {
|
|
76
|
+
success: false,
|
|
77
|
+
message: 'Failed to generate controller',
|
|
78
|
+
error: String(error),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async generateService(name) {
|
|
83
|
+
try {
|
|
84
|
+
const preCheck = this.checkPrerequisites();
|
|
85
|
+
if (!preCheck.success)
|
|
86
|
+
return preCheck;
|
|
87
|
+
return await this.runCli(['generate', 'service', name]);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
return {
|
|
91
|
+
success: false,
|
|
92
|
+
message: 'Failed to generate service',
|
|
93
|
+
error: String(error),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
async generateEntity(name) {
|
|
98
|
+
try {
|
|
99
|
+
const preCheck = this.checkPrerequisites();
|
|
100
|
+
if (!preCheck.success)
|
|
101
|
+
return preCheck;
|
|
102
|
+
return await this.runCli(['generate', 'entity', name]);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
return {
|
|
106
|
+
success: false,
|
|
107
|
+
message: 'Failed to generate entity',
|
|
108
|
+
error: String(error),
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
async generateDto(name) {
|
|
113
|
+
try {
|
|
114
|
+
const preCheck = this.checkPrerequisites();
|
|
115
|
+
if (!preCheck.success)
|
|
116
|
+
return preCheck;
|
|
117
|
+
return await this.runCli(['generate', 'dto', name]);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
return {
|
|
121
|
+
success: false,
|
|
122
|
+
message: 'Failed to generate dto',
|
|
123
|
+
error: String(error),
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
checkPrerequisites() {
|
|
128
|
+
// Check if CLI is installed
|
|
129
|
+
const cliInstalled = this.isCliInstalled();
|
|
130
|
+
if (!cliInstalled) {
|
|
131
|
+
return {
|
|
132
|
+
success: false,
|
|
133
|
+
message: 'MBC CLI is not installed',
|
|
134
|
+
error: `The @mbc-cqrs-serverless/cli package is required for code generation.
|
|
135
|
+
|
|
136
|
+
To install:
|
|
137
|
+
npm install -g @mbc-cqrs-serverless/cli
|
|
138
|
+
|
|
139
|
+
Or install locally in your project:
|
|
140
|
+
npm install --save-dev @mbc-cqrs-serverless/cli
|
|
141
|
+
|
|
142
|
+
After installation, the generate tools will work correctly.`,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
// Check if target is a valid project
|
|
146
|
+
const packageJsonPath = path.join(this.projectPath, 'package.json');
|
|
147
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
148
|
+
return {
|
|
149
|
+
success: false,
|
|
150
|
+
message: 'Not a valid project directory',
|
|
151
|
+
error: `No package.json found at ${this.projectPath}.
|
|
152
|
+
|
|
153
|
+
Please ensure MBC_PROJECT_PATH environment variable points to a valid MBC CQRS Serverless project, or run the MCP server from within your project directory.
|
|
154
|
+
|
|
155
|
+
To create a new project:
|
|
156
|
+
mbc new my-project`,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
return { success: true, message: 'Prerequisites check passed' };
|
|
160
|
+
}
|
|
161
|
+
isCliInstalled() {
|
|
162
|
+
try {
|
|
163
|
+
// Try to find mbc in PATH or local node_modules
|
|
164
|
+
(0, child_process_1.execSync)('npx --no-install mbc --version', {
|
|
165
|
+
cwd: this.projectPath,
|
|
166
|
+
stdio: 'pipe',
|
|
167
|
+
timeout: 5000,
|
|
168
|
+
});
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
// Check if globally installed
|
|
173
|
+
try {
|
|
174
|
+
(0, child_process_1.execSync)('mbc --version', { stdio: 'pipe', timeout: 5000 });
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
catch (innerError) {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
async runCli(args) {
|
|
183
|
+
return new Promise((resolve) => {
|
|
184
|
+
const child = (0, child_process_1.spawn)('npx', ['mbc', ...args], {
|
|
185
|
+
cwd: this.projectPath,
|
|
186
|
+
shell: true,
|
|
187
|
+
});
|
|
188
|
+
let stdout = '';
|
|
189
|
+
let stderr = '';
|
|
190
|
+
child.stdout.on('data', (data) => {
|
|
191
|
+
stdout += data.toString();
|
|
192
|
+
});
|
|
193
|
+
child.stderr.on('data', (data) => {
|
|
194
|
+
stderr += data.toString();
|
|
195
|
+
});
|
|
196
|
+
child.on('close', (code) => {
|
|
197
|
+
if (code === 0) {
|
|
198
|
+
const files = this.extractCreatedFiles(stdout);
|
|
199
|
+
resolve({
|
|
200
|
+
success: true,
|
|
201
|
+
message: `Successfully generated with mbc CLI`,
|
|
202
|
+
files,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
// Provide helpful error messages
|
|
207
|
+
let errorMessage = stderr || stdout;
|
|
208
|
+
if (errorMessage.includes('could not determine executable')) {
|
|
209
|
+
errorMessage = `CLI not found. Please install @mbc-cqrs-serverless/cli:
|
|
210
|
+
npm install -g @mbc-cqrs-serverless/cli`;
|
|
211
|
+
}
|
|
212
|
+
resolve({
|
|
213
|
+
success: false,
|
|
214
|
+
message: `CLI command failed with exit code ${code}`,
|
|
215
|
+
error: errorMessage,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
child.on('error', (err) => {
|
|
220
|
+
resolve({
|
|
221
|
+
success: false,
|
|
222
|
+
message: 'Failed to spawn CLI process',
|
|
223
|
+
error: err.message,
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
extractCreatedFiles(output) {
|
|
229
|
+
const files = [];
|
|
230
|
+
const lines = output.split('\n');
|
|
231
|
+
for (const line of lines) {
|
|
232
|
+
const match = line.match(/CREATE\s+(.+)/);
|
|
233
|
+
if (match) {
|
|
234
|
+
files.push(match[1].trim());
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return files;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
exports.CliGenerator = CliGenerator;
|
|
241
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/tools/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Register all available tools.
|
|
4
|
+
*/
|
|
5
|
+
export declare function registerTools(): Tool[];
|
|
6
|
+
/**
|
|
7
|
+
* Handle tool calls.
|
|
8
|
+
*/
|
|
9
|
+
export declare function handleToolCall(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,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerTools = registerTools;
|
|
4
|
+
exports.handleToolCall = handleToolCall;
|
|
5
|
+
const generate_js_1 = require("./generate.js");
|
|
6
|
+
const validate_js_1 = require("./validate.js");
|
|
7
|
+
const analyze_js_1 = require("./analyze.js");
|
|
8
|
+
/**
|
|
9
|
+
* Register all available tools.
|
|
10
|
+
*/
|
|
11
|
+
function registerTools() {
|
|
12
|
+
return [
|
|
13
|
+
...(0, generate_js_1.getGenerateTools)(),
|
|
14
|
+
...(0, validate_js_1.getValidateTools)(),
|
|
15
|
+
...(0, analyze_js_1.getAnalyzeTools)(),
|
|
16
|
+
];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Handle tool calls.
|
|
20
|
+
*/
|
|
21
|
+
async function handleToolCall(name, args, projectPath) {
|
|
22
|
+
// Generate tools
|
|
23
|
+
if (name.startsWith('mbc_generate_')) {
|
|
24
|
+
return (0, generate_js_1.handleGenerateTool)(name, args, projectPath);
|
|
25
|
+
}
|
|
26
|
+
// Validate tools
|
|
27
|
+
if (name.startsWith('mbc_validate_')) {
|
|
28
|
+
return (0, validate_js_1.handleValidateTool)(name, args, projectPath);
|
|
29
|
+
}
|
|
30
|
+
// Analyze tools
|
|
31
|
+
if (name.startsWith('mbc_analyze_') || name === 'mbc_lookup_error') {
|
|
32
|
+
return (0, analyze_js_1.handleAnalyzeTool)(name, args, projectPath);
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
content: [{ type: 'text', text: `Unknown tool: ${name}` }],
|
|
36
|
+
isError: true,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;AAQA,sCAMC;AAKD,wCAwBC;AA1CD,+CAAoE;AACpE,+CAAoE;AACpE,6CAAiE;AAEjE;;GAEG;AACH,SAAgB,aAAa;IAC3B,OAAO;QACL,GAAG,IAAA,8BAAgB,GAAE;QACrB,GAAG,IAAA,8BAAgB,GAAE;QACrB,GAAG,IAAA,4BAAe,GAAE;KACrB,CAAA;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,IAA6B,EAC7B,WAAmB;IAEnB,iBAAiB;IACjB,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACrC,OAAO,IAAA,gCAAkB,EAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;IACpD,CAAC;IAED,iBAAiB;IACjB,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACrC,OAAO,IAAA,gCAAkB,EAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;IACpD,CAAC;IAED,gBAAgB;IAChB,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACnE,OAAO,IAAA,8BAAiB,EAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAA;IACnD,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC;QAC1D,OAAO,EAAE,IAAI;KACd,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Get all validate tools.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getValidateTools(): Tool[];
|
|
6
|
+
/**
|
|
7
|
+
* Handle validate tool calls.
|
|
8
|
+
*/
|
|
9
|
+
export declare function handleValidateTool(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,204 @@
|
|
|
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.getValidateTools = getValidateTools;
|
|
37
|
+
exports.handleValidateTool = handleValidateTool;
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const zod_1 = require("zod");
|
|
41
|
+
const ValidateCqrsSchema = zod_1.z.object({
|
|
42
|
+
path: zod_1.z.string().optional().describe('Path to validate (defaults to project root)'),
|
|
43
|
+
});
|
|
44
|
+
/**
|
|
45
|
+
* Get all validate tools.
|
|
46
|
+
*/
|
|
47
|
+
function getValidateTools() {
|
|
48
|
+
return [
|
|
49
|
+
{
|
|
50
|
+
name: 'mbc_validate_cqrs',
|
|
51
|
+
description: 'Validate CQRS pattern implementation in the project. Checks for proper command/query separation, event handling, and entity structure.',
|
|
52
|
+
inputSchema: {
|
|
53
|
+
type: 'object',
|
|
54
|
+
properties: {
|
|
55
|
+
path: {
|
|
56
|
+
type: 'string',
|
|
57
|
+
description: 'Path to validate (defaults to project root)',
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Handle validate tool calls.
|
|
66
|
+
*/
|
|
67
|
+
async function handleValidateTool(name, args, projectPath) {
|
|
68
|
+
switch (name) {
|
|
69
|
+
case 'mbc_validate_cqrs': {
|
|
70
|
+
const parsed = ValidateCqrsSchema.parse(args);
|
|
71
|
+
const targetPath = parsed.path ? path.resolve(projectPath, parsed.path) : projectPath;
|
|
72
|
+
const result = await validateCqrsPatterns(targetPath);
|
|
73
|
+
return formatValidationResult(result);
|
|
74
|
+
}
|
|
75
|
+
default:
|
|
76
|
+
return {
|
|
77
|
+
content: [{ type: 'text', text: `Unknown validate tool: ${name}` }],
|
|
78
|
+
isError: true,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async function validateCqrsPatterns(projectPath) {
|
|
83
|
+
const issues = [];
|
|
84
|
+
const suggestions = [];
|
|
85
|
+
const srcPath = path.join(projectPath, 'src');
|
|
86
|
+
if (!fs.existsSync(srcPath)) {
|
|
87
|
+
return {
|
|
88
|
+
valid: false,
|
|
89
|
+
issues: [{ severity: 'error', message: 'No src directory found. Is this an MBC CQRS project?' }],
|
|
90
|
+
suggestions: ['Run "mbc new <project-name>" to create a new project'],
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
// Check for package.json with @mbc-cqrs-serverless/core dependency
|
|
94
|
+
const packageJsonPath = path.join(projectPath, 'package.json');
|
|
95
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
96
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
97
|
+
const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };
|
|
98
|
+
if (!deps['@mbc-cqrs-serverless/core']) {
|
|
99
|
+
issues.push({
|
|
100
|
+
severity: 'warning',
|
|
101
|
+
message: '@mbc-cqrs-serverless/core is not in dependencies',
|
|
102
|
+
file: 'package.json',
|
|
103
|
+
});
|
|
104
|
+
suggestions.push('Run "npm install @mbc-cqrs-serverless/core" to add the framework');
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Check for entities extending proper base classes
|
|
108
|
+
const entityFiles = await findFiles(srcPath, '.entity.ts');
|
|
109
|
+
for (const file of entityFiles) {
|
|
110
|
+
const content = fs.readFileSync(file, 'utf-8');
|
|
111
|
+
if (!content.includes('CommandEntity') && !content.includes('DataEntity')) {
|
|
112
|
+
issues.push({
|
|
113
|
+
severity: 'warning',
|
|
114
|
+
message: 'Entity does not extend CommandEntity or DataEntity',
|
|
115
|
+
file: path.relative(projectPath, file),
|
|
116
|
+
});
|
|
117
|
+
suggestions.push(`Consider extending CommandEntity or DataEntity in ${path.basename(file)}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Check for modules with proper command module registration
|
|
121
|
+
const moduleFiles = await findFiles(srcPath, '.module.ts');
|
|
122
|
+
for (const file of moduleFiles) {
|
|
123
|
+
const content = fs.readFileSync(file, 'utf-8');
|
|
124
|
+
if (content.includes('@Module') && !content.includes('CommandModule') && !content.includes('AppModule')) {
|
|
125
|
+
if (content.includes('Controller') || content.includes('Service')) {
|
|
126
|
+
issues.push({
|
|
127
|
+
severity: 'info',
|
|
128
|
+
message: 'Module does not import CommandModule',
|
|
129
|
+
file: path.relative(projectPath, file),
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Check for services using proper patterns
|
|
135
|
+
const serviceFiles = await findFiles(srcPath, '.service.ts');
|
|
136
|
+
for (const file of serviceFiles) {
|
|
137
|
+
const content = fs.readFileSync(file, 'utf-8');
|
|
138
|
+
if (content.includes('CommandService') || content.includes('DataService')) {
|
|
139
|
+
// Good - using CQRS services
|
|
140
|
+
}
|
|
141
|
+
else if (content.includes('Repository') || content.includes('getRepository')) {
|
|
142
|
+
issues.push({
|
|
143
|
+
severity: 'info',
|
|
144
|
+
message: 'Service uses Repository directly instead of CommandService/DataService',
|
|
145
|
+
file: path.relative(projectPath, file),
|
|
146
|
+
});
|
|
147
|
+
suggestions.push('Consider using CommandService for write operations and DataService for read operations');
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Check for proper DTO usage
|
|
151
|
+
const dtoFiles = await findFiles(srcPath, '.dto.ts');
|
|
152
|
+
if (dtoFiles.length === 0) {
|
|
153
|
+
issues.push({
|
|
154
|
+
severity: 'info',
|
|
155
|
+
message: 'No DTO files found',
|
|
156
|
+
});
|
|
157
|
+
suggestions.push('Consider creating DTOs for request/response validation using class-validator decorators');
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
valid: issues.filter(i => i.severity === 'error').length === 0,
|
|
161
|
+
issues,
|
|
162
|
+
suggestions,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
async function findFiles(dir, suffix) {
|
|
166
|
+
const files = [];
|
|
167
|
+
if (!fs.existsSync(dir)) {
|
|
168
|
+
return files;
|
|
169
|
+
}
|
|
170
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
171
|
+
for (const entry of entries) {
|
|
172
|
+
const fullPath = path.join(dir, entry.name);
|
|
173
|
+
if (entry.isDirectory() && entry.name !== 'node_modules' && entry.name !== 'dist') {
|
|
174
|
+
files.push(...await findFiles(fullPath, suffix));
|
|
175
|
+
}
|
|
176
|
+
else if (entry.isFile() && entry.name.endsWith(suffix)) {
|
|
177
|
+
files.push(fullPath);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return files;
|
|
181
|
+
}
|
|
182
|
+
function formatValidationResult(result) {
|
|
183
|
+
let text = result.valid ? '## Validation Passed\n\n' : '## Validation Failed\n\n';
|
|
184
|
+
if (result.issues.length > 0) {
|
|
185
|
+
text += '### Issues Found\n\n';
|
|
186
|
+
for (const issue of result.issues) {
|
|
187
|
+
const icon = issue.severity === 'error' ? 'X' : issue.severity === 'warning' ? '!' : 'i';
|
|
188
|
+
const location = issue.file ? ` (${issue.file}${issue.line ? `:${issue.line}` : ''})` : '';
|
|
189
|
+
text += `[${icon}] ${issue.message}${location}\n`;
|
|
190
|
+
}
|
|
191
|
+
text += '\n';
|
|
192
|
+
}
|
|
193
|
+
if (result.suggestions.length > 0) {
|
|
194
|
+
text += '### Suggestions\n\n';
|
|
195
|
+
for (const suggestion of result.suggestions) {
|
|
196
|
+
text += `- ${suggestion}\n`;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
content: [{ type: 'text', text }],
|
|
201
|
+
isError: !result.valid,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mbc-cqrs-serverless/mcp-server",
|
|
3
|
+
"version": "1.0.15",
|
|
4
|
+
"description": "MCP (Model Context Protocol) server for MBC CQRS Serverless framework - enables AI tools to interact with the framework",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"mbc",
|
|
7
|
+
"cqrs",
|
|
8
|
+
"serverless",
|
|
9
|
+
"mcp",
|
|
10
|
+
"model-context-protocol",
|
|
11
|
+
"ai",
|
|
12
|
+
"claude",
|
|
13
|
+
"cursor",
|
|
14
|
+
"llm",
|
|
15
|
+
"code-generation"
|
|
16
|
+
],
|
|
17
|
+
"main": "./dist/index.js",
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"bin": {
|
|
20
|
+
"mbc-mcp-server": "./bin/mcp-server.js"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist",
|
|
24
|
+
"bin",
|
|
25
|
+
"!dist/tsconfig.tsbuildinfo"
|
|
26
|
+
],
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "rm -rf dist && tsc",
|
|
29
|
+
"dev": "tsc --watch",
|
|
30
|
+
"start": "node ./bin/mcp-server.js",
|
|
31
|
+
"test": "jest --passWithNoTests",
|
|
32
|
+
"test:watch": "jest --watch",
|
|
33
|
+
"test:cov": "jest --coverage"
|
|
34
|
+
},
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "git+https://github.com/mbc-net/mbc-cqrs-serverless.git",
|
|
38
|
+
"directory": "packages/mcp-server"
|
|
39
|
+
},
|
|
40
|
+
"author": "Murakami Business Consulting, Inc.",
|
|
41
|
+
"license": "MIT",
|
|
42
|
+
"bugs": {
|
|
43
|
+
"url": "https://github.com/mbc-net/mbc-cqrs-serverless/issues"
|
|
44
|
+
},
|
|
45
|
+
"homepage": "https://mbc-cqrs-serverless.mbc-net.com/",
|
|
46
|
+
"publishConfig": {
|
|
47
|
+
"access": "public"
|
|
48
|
+
},
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
51
|
+
"zod": "^3.23.0"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@types/node": "^20.10.0"
|
|
55
|
+
},
|
|
56
|
+
"engines": {
|
|
57
|
+
"node": ">=18.0.0"
|
|
58
|
+
},
|
|
59
|
+
"gitHead": "69711a8dab16182f8ef59687ee5a7d6d3d99932b"
|
|
60
|
+
}
|