@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,75 @@
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.getErrorResources = getErrorResources;
37
+ exports.readErrorCatalog = readErrorCatalog;
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ /**
41
+ * Error catalog resources for MBC CQRS Serverless framework.
42
+ */
43
+ function getErrorResources() {
44
+ return [
45
+ {
46
+ uri: 'mbc://docs/errors',
47
+ name: 'Error Catalog',
48
+ description: 'Comprehensive catalog of common errors, their causes, and solutions',
49
+ mimeType: 'text/markdown',
50
+ },
51
+ ];
52
+ }
53
+ async function readErrorCatalog(uri) {
54
+ const frameworkRoot = path.resolve(__dirname, '../../../../..');
55
+ if (uri !== 'mbc://docs/errors') {
56
+ throw new Error(`Unknown error resource: ${uri}`);
57
+ }
58
+ let content;
59
+ try {
60
+ content = fs.readFileSync(path.join(frameworkRoot, 'docs', 'ERROR_CATALOG.md'), 'utf-8');
61
+ }
62
+ catch (error) {
63
+ content = 'Error catalog not found. Please ensure docs/ERROR_CATALOG.md exists.';
64
+ }
65
+ return {
66
+ contents: [
67
+ {
68
+ uri,
69
+ mimeType: 'text/markdown',
70
+ text: content,
71
+ },
72
+ ],
73
+ };
74
+ }
75
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/resources/errors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,8CASC;AAED,4CAuBC;AA1CD,uCAAwB;AACxB,2CAA4B;AAG5B;;GAEG;AAEH,SAAgB,iBAAiB;IAC/B,OAAO;QACL;YACE,GAAG,EAAE,mBAAmB;YACxB,IAAI,EAAE,eAAe;YACrB,WAAW,EAAE,qEAAqE;YAClF,QAAQ,EAAE,eAAe;SAC1B;KACF,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,gBAAgB,CAAC,GAAW;IAChD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;IAE/D,IAAI,GAAG,KAAK,mBAAmB,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,IAAI,OAAe,CAAA;IACnB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC,CAAA;IAC1F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,sEAAsE,CAAA;IAClF,CAAC;IAED,OAAO;QACL,QAAQ,EAAE;YACR;gBACE,GAAG;gBACH,QAAQ,EAAE,eAAe;gBACzB,IAAI,EAAE,OAAO;aACd;SACF;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { Resource } from '@modelcontextprotocol/sdk/types.js';
2
+ /**
3
+ * Register all available resources.
4
+ */
5
+ export declare function registerResources(): Resource[];
6
+ /**
7
+ * Handle resource read requests.
8
+ */
9
+ export declare function handleResourceRead(uri: string, projectPath: string): Promise<{
10
+ contents: {
11
+ uri: string;
12
+ mimeType: string;
13
+ text: string;
14
+ }[];
15
+ }>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerResources = registerResources;
4
+ exports.handleResourceRead = handleResourceRead;
5
+ const documentation_js_1 = require("./documentation.js");
6
+ const errors_js_1 = require("./errors.js");
7
+ const project_js_1 = require("./project.js");
8
+ /**
9
+ * Register all available resources.
10
+ */
11
+ function registerResources() {
12
+ return [
13
+ ...(0, documentation_js_1.getDocumentationResources)(),
14
+ ...(0, errors_js_1.getErrorResources)(),
15
+ ...(0, project_js_1.getProjectResources)(),
16
+ ];
17
+ }
18
+ /**
19
+ * Handle resource read requests.
20
+ */
21
+ async function handleResourceRead(uri, projectPath) {
22
+ if (uri.startsWith('mbc://docs/errors')) {
23
+ return (0, errors_js_1.readErrorCatalog)(uri);
24
+ }
25
+ if (uri.startsWith('mbc://docs/')) {
26
+ return (0, documentation_js_1.readDocumentation)(uri);
27
+ }
28
+ if (uri.startsWith('mbc://project/')) {
29
+ return (0, project_js_1.readProjectResource)(uri, projectPath);
30
+ }
31
+ throw new Error(`Unknown resource URI: ${uri}`);
32
+ }
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":";;AAQA,8CAMC;AAKD,gDAiBC;AAnCD,yDAAiF;AACjF,2CAAiE;AACjE,6CAAuE;AAEvE;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,OAAO;QACL,GAAG,IAAA,4CAAyB,GAAE;QAC9B,GAAG,IAAA,6BAAiB,GAAE;QACtB,GAAG,IAAA,gCAAmB,GAAE;KACzB,CAAA;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,kBAAkB,CACtC,GAAW,EACX,WAAmB;IAEnB,IAAI,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACxC,OAAO,IAAA,4BAAgB,EAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,OAAO,IAAA,oCAAiB,EAAC,GAAG,CAAC,CAAA;IAC/B,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,OAAO,IAAA,gCAAmB,EAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IAC9C,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAA;AACjD,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Resource } from '@modelcontextprotocol/sdk/types.js';
2
+ /**
3
+ * Project-specific resources for analyzing user's MBC CQRS projects.
4
+ */
5
+ export declare function getProjectResources(): Resource[];
6
+ export declare function readProjectResource(uri: string, projectPath: string): Promise<{
7
+ contents: {
8
+ uri: string;
9
+ mimeType: string;
10
+ text: string;
11
+ }[];
12
+ }>;
@@ -0,0 +1,193 @@
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.getProjectResources = getProjectResources;
37
+ exports.readProjectResource = readProjectResource;
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ /**
41
+ * Project-specific resources for analyzing user's MBC CQRS projects.
42
+ */
43
+ function getProjectResources() {
44
+ return [
45
+ {
46
+ uri: 'mbc://project/entities',
47
+ name: 'Project Entities',
48
+ description: 'List of entities defined in the current project',
49
+ mimeType: 'application/json',
50
+ },
51
+ {
52
+ uri: 'mbc://project/modules',
53
+ name: 'Project Modules',
54
+ description: 'List of modules defined in the current project',
55
+ mimeType: 'application/json',
56
+ },
57
+ {
58
+ uri: 'mbc://project/structure',
59
+ name: 'Project Structure',
60
+ description: 'Overview of the project directory structure',
61
+ mimeType: 'text/plain',
62
+ },
63
+ ];
64
+ }
65
+ async function readProjectResource(uri, projectPath) {
66
+ switch (uri) {
67
+ case 'mbc://project/entities':
68
+ return {
69
+ contents: [
70
+ {
71
+ uri,
72
+ mimeType: 'application/json',
73
+ text: JSON.stringify(await findEntities(projectPath), null, 2),
74
+ },
75
+ ],
76
+ };
77
+ case 'mbc://project/modules':
78
+ return {
79
+ contents: [
80
+ {
81
+ uri,
82
+ mimeType: 'application/json',
83
+ text: JSON.stringify(await findModules(projectPath), null, 2),
84
+ },
85
+ ],
86
+ };
87
+ case 'mbc://project/structure':
88
+ return {
89
+ contents: [
90
+ {
91
+ uri,
92
+ mimeType: 'text/plain',
93
+ text: await getProjectStructure(projectPath),
94
+ },
95
+ ],
96
+ };
97
+ default:
98
+ throw new Error(`Unknown project resource: ${uri}`);
99
+ }
100
+ }
101
+ async function findEntities(projectPath) {
102
+ const entities = [];
103
+ const srcPath = path.join(projectPath, 'src');
104
+ if (!fs.existsSync(srcPath)) {
105
+ return entities;
106
+ }
107
+ await findFilesRecursive(srcPath, (filePath) => {
108
+ if (filePath.endsWith('.entity.ts')) {
109
+ const relativePath = path.relative(projectPath, filePath);
110
+ const content = fs.readFileSync(filePath, 'utf-8');
111
+ const classMatch = content.match(/export\s+class\s+(\w+)/);
112
+ if (classMatch) {
113
+ entities.push({
114
+ name: classMatch[1],
115
+ path: relativePath,
116
+ });
117
+ }
118
+ }
119
+ });
120
+ return entities;
121
+ }
122
+ async function findModules(projectPath) {
123
+ const modules = [];
124
+ const srcPath = path.join(projectPath, 'src');
125
+ if (!fs.existsSync(srcPath)) {
126
+ return modules;
127
+ }
128
+ await findFilesRecursive(srcPath, (filePath) => {
129
+ if (filePath.endsWith('.module.ts')) {
130
+ const relativePath = path.relative(projectPath, filePath);
131
+ const content = fs.readFileSync(filePath, 'utf-8');
132
+ const classMatch = content.match(/export\s+class\s+(\w+Module)/);
133
+ if (classMatch) {
134
+ modules.push({
135
+ name: classMatch[1],
136
+ path: relativePath,
137
+ });
138
+ }
139
+ }
140
+ });
141
+ return modules;
142
+ }
143
+ async function findFilesRecursive(dir, callback) {
144
+ if (!fs.existsSync(dir)) {
145
+ return;
146
+ }
147
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
148
+ for (const entry of entries) {
149
+ const fullPath = path.join(dir, entry.name);
150
+ if (entry.isDirectory() && entry.name !== 'node_modules' && entry.name !== 'dist') {
151
+ await findFilesRecursive(fullPath, callback);
152
+ }
153
+ else if (entry.isFile()) {
154
+ callback(fullPath);
155
+ }
156
+ }
157
+ }
158
+ async function getProjectStructure(projectPath) {
159
+ const lines = [];
160
+ const srcPath = path.join(projectPath, 'src');
161
+ if (!fs.existsSync(srcPath)) {
162
+ return 'No src directory found. Is this an MBC CQRS Serverless project?';
163
+ }
164
+ lines.push(`Project: ${path.basename(projectPath)}`);
165
+ lines.push('');
166
+ lines.push('src/');
167
+ await buildTree(srcPath, ' ', lines, 3);
168
+ return lines.join('\n');
169
+ }
170
+ async function buildTree(dir, indent, lines, maxDepth, currentDepth = 0) {
171
+ if (currentDepth >= maxDepth || !fs.existsSync(dir)) {
172
+ return;
173
+ }
174
+ const entries = fs.readdirSync(dir, { withFileTypes: true })
175
+ .filter(e => e.name !== 'node_modules' && e.name !== 'dist' && !e.name.startsWith('.'))
176
+ .sort((a, b) => {
177
+ if (a.isDirectory() && !b.isDirectory())
178
+ return -1;
179
+ if (!a.isDirectory() && b.isDirectory())
180
+ return 1;
181
+ return a.name.localeCompare(b.name);
182
+ });
183
+ for (const entry of entries) {
184
+ if (entry.isDirectory()) {
185
+ lines.push(`${indent}${entry.name}/`);
186
+ await buildTree(path.join(dir, entry.name), indent + ' ', lines, maxDepth, currentDepth + 1);
187
+ }
188
+ else {
189
+ lines.push(`${indent}${entry.name}`);
190
+ }
191
+ }
192
+ }
193
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/resources/project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * MCP Server for MBC CQRS Serverless framework.
3
+ * Provides resources, tools, and prompts for AI-powered development.
4
+ */
5
+ export declare class McpServer {
6
+ private server;
7
+ private projectPath;
8
+ constructor();
9
+ private setupErrorHandling;
10
+ private setupHandlers;
11
+ run(): Promise<void>;
12
+ }
package/dist/server.js ADDED
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.McpServer = void 0;
4
+ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
5
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
6
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
7
+ const index_js_2 = require("./resources/index.js");
8
+ const index_js_3 = require("./tools/index.js");
9
+ const index_js_4 = require("./prompts/index.js");
10
+ /**
11
+ * MCP Server for MBC CQRS Serverless framework.
12
+ * Provides resources, tools, and prompts for AI-powered development.
13
+ */
14
+ class McpServer {
15
+ constructor() {
16
+ this.projectPath = process.env.MBC_PROJECT_PATH || process.cwd();
17
+ this.server = new index_js_1.Server({
18
+ name: 'mbc-cqrs-serverless',
19
+ version: '0.1.74-beta.0',
20
+ }, {
21
+ capabilities: {
22
+ resources: {},
23
+ tools: {},
24
+ prompts: {},
25
+ },
26
+ });
27
+ this.setupHandlers();
28
+ this.setupErrorHandling();
29
+ }
30
+ setupErrorHandling() {
31
+ this.server.onerror = (error) => {
32
+ console.error('[MCP Server Error]', error);
33
+ };
34
+ process.on('unhandledRejection', (reason, promise) => {
35
+ console.error('[Unhandled Rejection]', reason);
36
+ });
37
+ }
38
+ setupHandlers() {
39
+ // Resource handlers
40
+ this.server.setRequestHandler(types_js_1.ListResourcesRequestSchema, async () => {
41
+ try {
42
+ return {
43
+ resources: (0, index_js_2.registerResources)(),
44
+ };
45
+ }
46
+ catch (error) {
47
+ console.error('[ListResources Error]', error);
48
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InternalError, `Failed to list resources: ${error}`);
49
+ }
50
+ });
51
+ this.server.setRequestHandler(types_js_1.ReadResourceRequestSchema, async (request) => {
52
+ try {
53
+ return await (0, index_js_2.handleResourceRead)(request.params.uri, this.projectPath);
54
+ }
55
+ catch (error) {
56
+ console.error('[ReadResource Error]', error);
57
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InternalError, `Failed to read resource: ${error}`);
58
+ }
59
+ });
60
+ // Tool handlers
61
+ this.server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
62
+ try {
63
+ return {
64
+ tools: (0, index_js_3.registerTools)(),
65
+ };
66
+ }
67
+ catch (error) {
68
+ console.error('[ListTools Error]', error);
69
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InternalError, `Failed to list tools: ${error}`);
70
+ }
71
+ });
72
+ this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
73
+ try {
74
+ return await (0, index_js_3.handleToolCall)(request.params.name, request.params.arguments || {}, this.projectPath);
75
+ }
76
+ catch (error) {
77
+ console.error('[CallTool Error]', error);
78
+ return {
79
+ content: [{ type: 'text', text: `Error: ${error}` }],
80
+ isError: true,
81
+ };
82
+ }
83
+ });
84
+ // Prompt handlers
85
+ this.server.setRequestHandler(types_js_1.ListPromptsRequestSchema, async () => {
86
+ try {
87
+ return {
88
+ prompts: (0, index_js_4.registerPrompts)(),
89
+ };
90
+ }
91
+ catch (error) {
92
+ console.error('[ListPrompts Error]', error);
93
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InternalError, `Failed to list prompts: ${error}`);
94
+ }
95
+ });
96
+ this.server.setRequestHandler(types_js_1.GetPromptRequestSchema, async (request) => {
97
+ try {
98
+ return (0, index_js_4.handlePromptGet)(request.params.name, request.params.arguments || {});
99
+ }
100
+ catch (error) {
101
+ console.error('[GetPrompt Error]', error);
102
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InternalError, `Failed to get prompt: ${error}`);
103
+ }
104
+ });
105
+ }
106
+ async run() {
107
+ const transport = new stdio_js_1.StdioServerTransport();
108
+ await this.server.connect(transport);
109
+ console.error('MBC CQRS Serverless MCP server running on stdio');
110
+ }
111
+ }
112
+ exports.McpServer = McpServer;
113
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ /**
3
+ * Get all analyze tools.
4
+ */
5
+ export declare function getAnalyzeTools(): Tool[];
6
+ /**
7
+ * Handle analyze tool calls.
8
+ */
9
+ export declare function handleAnalyzeTool(name: string, args: Record<string, unknown>, projectPath: string): Promise<{
10
+ content: {
11
+ type: 'text';
12
+ text: string;
13
+ }[];
14
+ isError?: boolean;
15
+ }>;