@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.
- package/bin/musubix-mcp.js +73 -0
- package/dist/__tests__/index.test.d.ts +2 -0
- package/dist/__tests__/index.test.d.ts.map +1 -0
- package/dist/__tests__/index.test.js +44 -0
- package/dist/__tests__/index.test.js.map +1 -0
- package/dist/index.d.ts +67 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +72 -0
- package/dist/index.js.map +1 -0
- package/dist/platform/adapter.d.ts +136 -0
- package/dist/platform/adapter.d.ts.map +1 -0
- package/dist/platform/adapter.js +370 -0
- package/dist/platform/adapter.js.map +1 -0
- package/dist/platform/index.d.ts +8 -0
- package/dist/platform/index.d.ts.map +1 -0
- package/dist/platform/index.js +8 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/prompts/index.d.ts +8 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +8 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/sdd-prompts.d.ts +45 -0
- package/dist/prompts/sdd-prompts.d.ts.map +1 -0
- package/dist/prompts/sdd-prompts.js +445 -0
- package/dist/prompts/sdd-prompts.js.map +1 -0
- package/dist/resources/index.d.ts +8 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +8 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/sdd-resources.d.ts +57 -0
- package/dist/resources/sdd-resources.d.ts.map +1 -0
- package/dist/resources/sdd-resources.js +629 -0
- package/dist/resources/sdd-resources.js.map +1 -0
- package/dist/server.d.ts +201 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +435 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/sdd-tools.d.ts +57 -0
- package/dist/tools/sdd-tools.d.ts.map +1 -0
- package/dist/tools/sdd-tools.js +450 -0
- package/dist/tools/sdd-tools.js.map +1 -0
- package/dist/types.d.ts +207 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +20 -0
- package/dist/types.js.map +1 -0
- package/package.json +77 -0
package/dist/server.d.ts
ADDED
|
@@ -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"}
|