@nahisaho/musubix-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.
Files changed (50) hide show
  1. package/bin/musubix-mcp.js +73 -0
  2. package/dist/__tests__/index.test.d.ts +2 -0
  3. package/dist/__tests__/index.test.d.ts.map +1 -0
  4. package/dist/__tests__/index.test.js +44 -0
  5. package/dist/__tests__/index.test.js.map +1 -0
  6. package/dist/index.d.ts +67 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +72 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/platform/adapter.d.ts +136 -0
  11. package/dist/platform/adapter.d.ts.map +1 -0
  12. package/dist/platform/adapter.js +370 -0
  13. package/dist/platform/adapter.js.map +1 -0
  14. package/dist/platform/index.d.ts +8 -0
  15. package/dist/platform/index.d.ts.map +1 -0
  16. package/dist/platform/index.js +8 -0
  17. package/dist/platform/index.js.map +1 -0
  18. package/dist/prompts/index.d.ts +8 -0
  19. package/dist/prompts/index.d.ts.map +1 -0
  20. package/dist/prompts/index.js +8 -0
  21. package/dist/prompts/index.js.map +1 -0
  22. package/dist/prompts/sdd-prompts.d.ts +45 -0
  23. package/dist/prompts/sdd-prompts.d.ts.map +1 -0
  24. package/dist/prompts/sdd-prompts.js +445 -0
  25. package/dist/prompts/sdd-prompts.js.map +1 -0
  26. package/dist/resources/index.d.ts +8 -0
  27. package/dist/resources/index.d.ts.map +1 -0
  28. package/dist/resources/index.js +8 -0
  29. package/dist/resources/index.js.map +1 -0
  30. package/dist/resources/sdd-resources.d.ts +57 -0
  31. package/dist/resources/sdd-resources.d.ts.map +1 -0
  32. package/dist/resources/sdd-resources.js +629 -0
  33. package/dist/resources/sdd-resources.js.map +1 -0
  34. package/dist/server.d.ts +201 -0
  35. package/dist/server.d.ts.map +1 -0
  36. package/dist/server.js +435 -0
  37. package/dist/server.js.map +1 -0
  38. package/dist/tools/index.d.ts +8 -0
  39. package/dist/tools/index.d.ts.map +1 -0
  40. package/dist/tools/index.js +8 -0
  41. package/dist/tools/index.js.map +1 -0
  42. package/dist/tools/sdd-tools.d.ts +57 -0
  43. package/dist/tools/sdd-tools.d.ts.map +1 -0
  44. package/dist/tools/sdd-tools.js +450 -0
  45. package/dist/tools/sdd-tools.js.map +1 -0
  46. package/dist/types.d.ts +207 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +20 -0
  49. package/dist/types.js.map +1 -0
  50. package/package.json +77 -0
@@ -0,0 +1,201 @@
1
+ /**
2
+ * MUSUBIX MCP Server
3
+ *
4
+ * Model Context Protocol server for MUSUBIX
5
+ *
6
+ * @packageDocumentation
7
+ * @module server
8
+ *
9
+ * @see REQ-INT-102 - MCP Server
10
+ * @see DES-MUSUBIX-001 Section 2.2 - Container Diagram
11
+ */
12
+ import { EventEmitter } from 'events';
13
+ import type { MCPServerConfig, ToolDefinition, PromptDefinition, ResourceDefinition, ResourceTemplateDefinition, ServerCapabilities, NotificationHandler } from './types.js';
14
+ /**
15
+ * JSON-RPC Request
16
+ */
17
+ interface JsonRpcRequest {
18
+ jsonrpc: '2.0';
19
+ id?: number | string;
20
+ method: string;
21
+ params?: Record<string, unknown>;
22
+ }
23
+ /**
24
+ * JSON-RPC Response
25
+ */
26
+ interface JsonRpcResponse {
27
+ jsonrpc: '2.0';
28
+ id: number | string;
29
+ result?: unknown;
30
+ error?: {
31
+ code: number;
32
+ message: string;
33
+ data?: unknown;
34
+ };
35
+ }
36
+ /**
37
+ * Server state
38
+ */
39
+ type ServerState = 'stopped' | 'starting' | 'running' | 'stopping';
40
+ /**
41
+ * MCP Server Events
42
+ */
43
+ export interface MCPServerEvents {
44
+ started: [];
45
+ stopped: [];
46
+ error: [Error];
47
+ request: [JsonRpcRequest];
48
+ response: [JsonRpcResponse];
49
+ }
50
+ /**
51
+ * MUSUBIX MCP Server
52
+ *
53
+ * Implements Model Context Protocol server
54
+ */
55
+ export declare class MCPServer extends EventEmitter {
56
+ private config;
57
+ private state;
58
+ private tools;
59
+ private prompts;
60
+ private resources;
61
+ private resourceTemplates;
62
+ private notificationHandlers;
63
+ private buffer;
64
+ private _initialized;
65
+ private _clientCapabilities;
66
+ constructor(config?: Partial<MCPServerConfig>);
67
+ /**
68
+ * Get server state
69
+ */
70
+ getState(): ServerState;
71
+ /**
72
+ * Check if server is running
73
+ */
74
+ isRunning(): boolean;
75
+ /**
76
+ * Check if server is initialized
77
+ */
78
+ isInitialized(): boolean;
79
+ /**
80
+ * Get client capabilities
81
+ */
82
+ getClientCapabilities(): Record<string, unknown>;
83
+ /**
84
+ * Get server capabilities
85
+ */
86
+ getCapabilities(): ServerCapabilities;
87
+ /**
88
+ * Register a tool
89
+ */
90
+ registerTool(tool: ToolDefinition): void;
91
+ /**
92
+ * Register multiple tools
93
+ */
94
+ registerTools(tools: ToolDefinition[]): void;
95
+ /**
96
+ * Register a prompt
97
+ */
98
+ registerPrompt(prompt: PromptDefinition): void;
99
+ /**
100
+ * Register multiple prompts
101
+ */
102
+ registerPrompts(prompts: PromptDefinition[]): void;
103
+ /**
104
+ * Register a resource
105
+ */
106
+ registerResource(resource: ResourceDefinition): void;
107
+ /**
108
+ * Register a resource template
109
+ */
110
+ registerResourceTemplate(template: ResourceTemplateDefinition): void;
111
+ /**
112
+ * Register notification handler
113
+ */
114
+ onNotification(method: string, handler: NotificationHandler): void;
115
+ /**
116
+ * Start the server
117
+ */
118
+ start(): Promise<void>;
119
+ /**
120
+ * Stop the server
121
+ */
122
+ stop(): Promise<void>;
123
+ /**
124
+ * Start stdio transport
125
+ */
126
+ private startStdio;
127
+ /**
128
+ * Start SSE transport
129
+ */
130
+ private startSSE;
131
+ /**
132
+ * Handle input data
133
+ */
134
+ private handleInput;
135
+ /**
136
+ * Process JSON-RPC message
137
+ */
138
+ private processMessage;
139
+ /**
140
+ * Handle JSON-RPC request
141
+ */
142
+ private handleRequest;
143
+ /**
144
+ * Handle initialize request
145
+ */
146
+ private handleInitialize;
147
+ /**
148
+ * Handle tools/list request
149
+ */
150
+ private handleToolsList;
151
+ /**
152
+ * Handle tools/call request
153
+ */
154
+ private handleToolsCall;
155
+ /**
156
+ * Handle prompts/list request
157
+ */
158
+ private handlePromptsList;
159
+ /**
160
+ * Handle prompts/get request
161
+ */
162
+ private handlePromptsGet;
163
+ /**
164
+ * Handle resources/list request
165
+ */
166
+ private handleResourcesList;
167
+ /**
168
+ * Handle resources/read request
169
+ */
170
+ private handleResourcesRead;
171
+ /**
172
+ * Handle resources/templates/list request
173
+ */
174
+ private handleResourceTemplatesList;
175
+ /**
176
+ * Match URI against template
177
+ */
178
+ private matchTemplate;
179
+ /**
180
+ * Send result response
181
+ */
182
+ private sendResult;
183
+ /**
184
+ * Send error response
185
+ */
186
+ private sendError;
187
+ /**
188
+ * Send JSON-RPC response
189
+ */
190
+ private send;
191
+ /**
192
+ * Debug log
193
+ */
194
+ private debug;
195
+ }
196
+ /**
197
+ * Create MCP server instance
198
+ */
199
+ export declare function createMCPServer(config?: Partial<MCPServerConfig>): MCPServer;
200
+ export {};
201
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/server.js ADDED
@@ -0,0 +1,435 @@
1
+ /**
2
+ * MUSUBIX MCP Server
3
+ *
4
+ * Model Context Protocol server for MUSUBIX
5
+ *
6
+ * @packageDocumentation
7
+ * @module server
8
+ *
9
+ * @see REQ-INT-102 - MCP Server
10
+ * @see DES-MUSUBIX-001 Section 2.2 - Container Diagram
11
+ */
12
+ import { EventEmitter } from 'events';
13
+ import { DEFAULT_SERVER_CONFIG } from './types.js';
14
+ /**
15
+ * MUSUBIX MCP Server
16
+ *
17
+ * Implements Model Context Protocol server
18
+ */
19
+ export class MCPServer extends EventEmitter {
20
+ config;
21
+ state = 'stopped';
22
+ tools = new Map();
23
+ prompts = new Map();
24
+ resources = new Map();
25
+ resourceTemplates = new Map();
26
+ notificationHandlers = new Map();
27
+ buffer = '';
28
+ _initialized = false;
29
+ _clientCapabilities = {};
30
+ constructor(config) {
31
+ super();
32
+ this.config = { ...DEFAULT_SERVER_CONFIG, ...config };
33
+ }
34
+ /**
35
+ * Get server state
36
+ */
37
+ getState() {
38
+ return this.state;
39
+ }
40
+ /**
41
+ * Check if server is running
42
+ */
43
+ isRunning() {
44
+ return this.state === 'running';
45
+ }
46
+ /**
47
+ * Check if server is initialized
48
+ */
49
+ isInitialized() {
50
+ return this._initialized;
51
+ }
52
+ /**
53
+ * Get client capabilities
54
+ */
55
+ getClientCapabilities() {
56
+ return this._clientCapabilities;
57
+ }
58
+ /**
59
+ * Get server capabilities
60
+ */
61
+ getCapabilities() {
62
+ const capabilities = {};
63
+ if (this.tools.size > 0) {
64
+ capabilities.tools = { listChanged: true };
65
+ }
66
+ if (this.prompts.size > 0) {
67
+ capabilities.prompts = { listChanged: true };
68
+ }
69
+ if (this.resources.size > 0 || this.resourceTemplates.size > 0) {
70
+ capabilities.resources = { subscribe: false, listChanged: true };
71
+ }
72
+ capabilities.logging = {};
73
+ return capabilities;
74
+ }
75
+ /**
76
+ * Register a tool
77
+ */
78
+ registerTool(tool) {
79
+ this.tools.set(tool.name, tool);
80
+ this.debug(`Registered tool: ${tool.name}`);
81
+ }
82
+ /**
83
+ * Register multiple tools
84
+ */
85
+ registerTools(tools) {
86
+ for (const tool of tools) {
87
+ this.registerTool(tool);
88
+ }
89
+ }
90
+ /**
91
+ * Register a prompt
92
+ */
93
+ registerPrompt(prompt) {
94
+ this.prompts.set(prompt.name, prompt);
95
+ this.debug(`Registered prompt: ${prompt.name}`);
96
+ }
97
+ /**
98
+ * Register multiple prompts
99
+ */
100
+ registerPrompts(prompts) {
101
+ for (const prompt of prompts) {
102
+ this.registerPrompt(prompt);
103
+ }
104
+ }
105
+ /**
106
+ * Register a resource
107
+ */
108
+ registerResource(resource) {
109
+ this.resources.set(resource.uri, resource);
110
+ this.debug(`Registered resource: ${resource.uri}`);
111
+ }
112
+ /**
113
+ * Register a resource template
114
+ */
115
+ registerResourceTemplate(template) {
116
+ this.resourceTemplates.set(template.uriTemplate, template);
117
+ this.debug(`Registered resource template: ${template.uriTemplate}`);
118
+ }
119
+ /**
120
+ * Register notification handler
121
+ */
122
+ onNotification(method, handler) {
123
+ this.notificationHandlers.set(method, handler);
124
+ }
125
+ /**
126
+ * Start the server
127
+ */
128
+ async start() {
129
+ if (this.state !== 'stopped') {
130
+ throw new Error('Server is already running or starting');
131
+ }
132
+ this.state = 'starting';
133
+ this.debug('Starting MCP server...');
134
+ try {
135
+ if (this.config.transport === 'stdio') {
136
+ await this.startStdio();
137
+ }
138
+ else {
139
+ await this.startSSE();
140
+ }
141
+ this.state = 'running';
142
+ this.emit('started');
143
+ this.debug('MCP server started');
144
+ }
145
+ catch (error) {
146
+ this.state = 'stopped';
147
+ throw error;
148
+ }
149
+ }
150
+ /**
151
+ * Stop the server
152
+ */
153
+ async stop() {
154
+ if (this.state !== 'running') {
155
+ return;
156
+ }
157
+ this.state = 'stopping';
158
+ this.debug('Stopping MCP server...');
159
+ // Cleanup
160
+ this._initialized = false;
161
+ this.state = 'stopped';
162
+ this.emit('stopped');
163
+ this.debug('MCP server stopped');
164
+ }
165
+ /**
166
+ * Start stdio transport
167
+ */
168
+ async startStdio() {
169
+ process.stdin.setEncoding('utf8');
170
+ process.stdin.on('data', (data) => {
171
+ this.handleInput(data);
172
+ });
173
+ process.stdin.on('end', () => {
174
+ this.stop();
175
+ });
176
+ }
177
+ /**
178
+ * Start SSE transport
179
+ */
180
+ async startSSE() {
181
+ throw new Error('SSE transport not yet implemented');
182
+ }
183
+ /**
184
+ * Handle input data
185
+ */
186
+ handleInput(data) {
187
+ this.buffer += data;
188
+ // Process complete lines
189
+ const lines = this.buffer.split('\n');
190
+ this.buffer = lines.pop() ?? '';
191
+ for (const line of lines) {
192
+ if (line.trim()) {
193
+ this.processMessage(line);
194
+ }
195
+ }
196
+ }
197
+ /**
198
+ * Process JSON-RPC message
199
+ */
200
+ processMessage(message) {
201
+ try {
202
+ const request = JSON.parse(message);
203
+ this.emit('request', request);
204
+ this.handleRequest(request);
205
+ }
206
+ catch (error) {
207
+ this.sendError(null, -32700, 'Parse error');
208
+ }
209
+ }
210
+ /**
211
+ * Handle JSON-RPC request
212
+ */
213
+ async handleRequest(request) {
214
+ const { id, method, params } = request;
215
+ // Handle notification (no id)
216
+ if (id === undefined) {
217
+ const handler = this.notificationHandlers.get(method);
218
+ if (handler) {
219
+ handler(method, params ?? {});
220
+ }
221
+ return;
222
+ }
223
+ try {
224
+ let result;
225
+ switch (method) {
226
+ case 'initialize':
227
+ result = await this.handleInitialize(params ?? {});
228
+ break;
229
+ case 'tools/list':
230
+ result = this.handleToolsList();
231
+ break;
232
+ case 'tools/call':
233
+ result = await this.handleToolsCall(params ?? {});
234
+ break;
235
+ case 'prompts/list':
236
+ result = this.handlePromptsList();
237
+ break;
238
+ case 'prompts/get':
239
+ result = await this.handlePromptsGet(params ?? {});
240
+ break;
241
+ case 'resources/list':
242
+ result = this.handleResourcesList();
243
+ break;
244
+ case 'resources/read':
245
+ result = await this.handleResourcesRead(params ?? {});
246
+ break;
247
+ case 'resources/templates/list':
248
+ result = this.handleResourceTemplatesList();
249
+ break;
250
+ case 'ping':
251
+ result = {};
252
+ break;
253
+ default:
254
+ this.sendError(id, -32601, `Method not found: ${method}`);
255
+ return;
256
+ }
257
+ this.sendResult(id, result);
258
+ }
259
+ catch (error) {
260
+ const message = error instanceof Error ? error.message : String(error);
261
+ this.sendError(id, -32603, message);
262
+ }
263
+ }
264
+ /**
265
+ * Handle initialize request
266
+ */
267
+ async handleInitialize(params) {
268
+ this._clientCapabilities = params.capabilities ?? {};
269
+ this._initialized = true;
270
+ return {
271
+ protocolVersion: '2024-11-05',
272
+ capabilities: this.getCapabilities(),
273
+ serverInfo: {
274
+ name: this.config.name,
275
+ version: this.config.version,
276
+ },
277
+ };
278
+ }
279
+ /**
280
+ * Handle tools/list request
281
+ */
282
+ handleToolsList() {
283
+ const tools = Array.from(this.tools.values()).map((tool) => ({
284
+ name: tool.name,
285
+ description: tool.description,
286
+ inputSchema: tool.inputSchema,
287
+ }));
288
+ return { tools };
289
+ }
290
+ /**
291
+ * Handle tools/call request
292
+ */
293
+ async handleToolsCall(params) {
294
+ const { name, arguments: args } = params;
295
+ const tool = this.tools.get(name);
296
+ if (!tool) {
297
+ throw new Error(`Unknown tool: ${name}`);
298
+ }
299
+ return tool.handler(args ?? {});
300
+ }
301
+ /**
302
+ * Handle prompts/list request
303
+ */
304
+ handlePromptsList() {
305
+ const prompts = Array.from(this.prompts.values()).map((prompt) => ({
306
+ name: prompt.name,
307
+ description: prompt.description,
308
+ arguments: prompt.arguments,
309
+ }));
310
+ return { prompts };
311
+ }
312
+ /**
313
+ * Handle prompts/get request
314
+ */
315
+ async handlePromptsGet(params) {
316
+ const { name, arguments: args } = params;
317
+ const prompt = this.prompts.get(name);
318
+ if (!prompt) {
319
+ throw new Error(`Unknown prompt: ${name}`);
320
+ }
321
+ return prompt.handler(args ?? {});
322
+ }
323
+ /**
324
+ * Handle resources/list request
325
+ */
326
+ handleResourcesList() {
327
+ const resources = Array.from(this.resources.values()).map((resource) => ({
328
+ uri: resource.uri,
329
+ name: resource.name,
330
+ description: resource.description,
331
+ mimeType: resource.mimeType,
332
+ }));
333
+ return { resources };
334
+ }
335
+ /**
336
+ * Handle resources/read request
337
+ */
338
+ async handleResourcesRead(params) {
339
+ const { uri } = params;
340
+ // Check direct resources first
341
+ const resource = this.resources.get(uri);
342
+ if (resource) {
343
+ return resource.handler();
344
+ }
345
+ // Check templates
346
+ for (const [template, def] of this.resourceTemplates) {
347
+ const match = this.matchTemplate(template, uri);
348
+ if (match) {
349
+ return def.handler(uri, match);
350
+ }
351
+ }
352
+ throw new Error(`Unknown resource: ${uri}`);
353
+ }
354
+ /**
355
+ * Handle resources/templates/list request
356
+ */
357
+ handleResourceTemplatesList() {
358
+ const resourceTemplates = Array.from(this.resourceTemplates.values()).map((template) => ({
359
+ uriTemplate: template.uriTemplate,
360
+ name: template.name,
361
+ description: template.description,
362
+ mimeType: template.mimeType,
363
+ }));
364
+ return { resourceTemplates };
365
+ }
366
+ /**
367
+ * Match URI against template
368
+ */
369
+ matchTemplate(template, uri) {
370
+ // Simple template matching for {param} patterns
371
+ const templateParts = template.split('/');
372
+ const uriParts = uri.split('/');
373
+ if (templateParts.length !== uriParts.length) {
374
+ return null;
375
+ }
376
+ const params = {};
377
+ for (let i = 0; i < templateParts.length; i++) {
378
+ const tPart = templateParts[i];
379
+ const uPart = uriParts[i];
380
+ if (tPart.startsWith('{') && tPart.endsWith('}')) {
381
+ const paramName = tPart.slice(1, -1);
382
+ params[paramName] = uPart;
383
+ }
384
+ else if (tPart !== uPart) {
385
+ return null;
386
+ }
387
+ }
388
+ return params;
389
+ }
390
+ /**
391
+ * Send result response
392
+ */
393
+ sendResult(id, result) {
394
+ const response = {
395
+ jsonrpc: '2.0',
396
+ id,
397
+ result,
398
+ };
399
+ this.send(response);
400
+ }
401
+ /**
402
+ * Send error response
403
+ */
404
+ sendError(id, code, message, data) {
405
+ const response = {
406
+ jsonrpc: '2.0',
407
+ id: id ?? 0,
408
+ error: { code, message, data },
409
+ };
410
+ this.send(response);
411
+ }
412
+ /**
413
+ * Send JSON-RPC response
414
+ */
415
+ send(response) {
416
+ this.emit('response', response);
417
+ const json = JSON.stringify(response);
418
+ process.stdout.write(json + '\n');
419
+ }
420
+ /**
421
+ * Debug log
422
+ */
423
+ debug(message) {
424
+ if (this.config.debug) {
425
+ console.error(`[MCP Server] ${message}`);
426
+ }
427
+ }
428
+ }
429
+ /**
430
+ * Create MCP server instance
431
+ */
432
+ export function createMCPServer(config) {
433
+ return new MCPServer(config);
434
+ }
435
+ //# 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,8 @@
1
+ /**
2
+ * MCP Tools Module
3
+ *
4
+ * @packageDocumentation
5
+ * @module tools
6
+ */
7
+ export { createRequirementsTool, validateRequirementsTool, createDesignTool, validateDesignTool, createTasksTool, queryKnowledgeTool, updateKnowledgeTool, validateConstitutionTool, validateTraceabilityTool, sddTools, getSddTools, } from './sdd-tools.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,QAAQ,EACR,WAAW,GACZ,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * MCP Tools Module
3
+ *
4
+ * @packageDocumentation
5
+ * @module tools
6
+ */
7
+ export { createRequirementsTool, validateRequirementsTool, createDesignTool, validateDesignTool, createTasksTool, queryKnowledgeTool, updateKnowledgeTool, validateConstitutionTool, validateTraceabilityTool, sddTools, getSddTools, } from './sdd-tools.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,QAAQ,EACR,WAAW,GACZ,MAAM,gBAAgB,CAAC"}