sdd-mcp-server 1.1.6 → 1.1.7
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/dist/index.js +121 -53
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -41,61 +41,129 @@ export async function createMCPServer() {
|
|
|
41
41
|
}
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
|
+
async function createSimpleMCPServer() {
|
|
45
|
+
const { Server } = await import('@modelcontextprotocol/sdk/server/index.js');
|
|
46
|
+
const { StdioServerTransport } = await import('@modelcontextprotocol/sdk/server/stdio.js');
|
|
47
|
+
const { ListToolsRequestSchema, CallToolRequestSchema } = await import('@modelcontextprotocol/sdk/types.js');
|
|
48
|
+
const server = new Server({
|
|
49
|
+
name: 'sdd-mcp-server',
|
|
50
|
+
version: '1.1.6'
|
|
51
|
+
}, {
|
|
52
|
+
capabilities: {
|
|
53
|
+
tools: {}
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
// Add basic SDD tools
|
|
57
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
58
|
+
return {
|
|
59
|
+
tools: [
|
|
60
|
+
{
|
|
61
|
+
name: 'sdd-init',
|
|
62
|
+
description: 'Initialize a new SDD project',
|
|
63
|
+
inputSchema: {
|
|
64
|
+
type: 'object',
|
|
65
|
+
properties: {
|
|
66
|
+
projectName: { type: 'string' },
|
|
67
|
+
description: { type: 'string' }
|
|
68
|
+
},
|
|
69
|
+
required: ['projectName']
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'sdd-status',
|
|
74
|
+
description: 'Get current SDD project status',
|
|
75
|
+
inputSchema: {
|
|
76
|
+
type: 'object',
|
|
77
|
+
properties: {}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
84
|
+
const { name, arguments: args } = request.params;
|
|
85
|
+
switch (name) {
|
|
86
|
+
case 'sdd-init':
|
|
87
|
+
return {
|
|
88
|
+
content: [{
|
|
89
|
+
type: 'text',
|
|
90
|
+
text: `SDD project "${args?.projectName}" initialization would begin here. (Simplified MCP mode)`
|
|
91
|
+
}]
|
|
92
|
+
};
|
|
93
|
+
case 'sdd-status':
|
|
94
|
+
return {
|
|
95
|
+
content: [{
|
|
96
|
+
type: 'text',
|
|
97
|
+
text: 'SDD project status: No active project found. Use sdd-init to create a new project.'
|
|
98
|
+
}]
|
|
99
|
+
};
|
|
100
|
+
default:
|
|
101
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
const transport = new StdioServerTransport();
|
|
105
|
+
await server.connect(transport);
|
|
106
|
+
}
|
|
44
107
|
async function main() {
|
|
45
|
-
let server = null;
|
|
46
108
|
try {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
109
|
+
if (isMCPMode) {
|
|
110
|
+
// Use simplified MCP server for MCP mode
|
|
111
|
+
await createSimpleMCPServer();
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
// Use full featured server for standalone mode
|
|
115
|
+
const server = await createMCPServer();
|
|
116
|
+
const { logger, mcpServer, pluginManager, hookSystem, toolRegistry, steeringRegistry } = server;
|
|
117
|
+
logger.info('MCP SDD Server starting...', {
|
|
118
|
+
version: process.env.npm_package_version ?? '1.0.0',
|
|
119
|
+
nodeVersion: process.version,
|
|
120
|
+
pid: process.pid
|
|
121
|
+
});
|
|
122
|
+
await mcpServer.start();
|
|
123
|
+
// Get plugin system statistics
|
|
124
|
+
const pluginStats = await pluginManager.getAllPlugins();
|
|
125
|
+
const hookStats = await hookSystem.getAllHooks();
|
|
126
|
+
const toolStats = await toolRegistry.getAllTools();
|
|
127
|
+
const steeringStats = await steeringRegistry.getSteeringStatistics();
|
|
128
|
+
logger.info('MCP SDD Server ready for connections', {
|
|
129
|
+
capabilities: {
|
|
130
|
+
workflow: '5-phase SDD workflow state machine (INIT→REQUIREMENTS→DESIGN→TASKS→IMPLEMENTATION)',
|
|
131
|
+
validation: 'Cross-phase validation with approval gates and rollback support',
|
|
132
|
+
initialization: 'Project setup with .kiro directory structure and spec.json',
|
|
133
|
+
context: 'Project memory with codebase analysis and context persistence',
|
|
134
|
+
steering: 'Dynamic steering document management with Always/Conditional/Manual modes',
|
|
135
|
+
quality: 'Linus-style code review with 5-layer analysis framework',
|
|
136
|
+
i18n: '10-language support with cultural adaptation',
|
|
137
|
+
plugins: `${pluginStats.length} plugins loaded with extensibility framework`,
|
|
138
|
+
templates: 'Handlebars-based template generation with inheritance'
|
|
139
|
+
},
|
|
140
|
+
tools: {
|
|
141
|
+
count: 10,
|
|
142
|
+
categories: ['sdd-init', 'sdd-requirements', 'sdd-design', 'sdd-tasks', 'sdd-implement', 'sdd-status', 'sdd-approve', 'sdd-quality-check', 'sdd-context-load', 'sdd-template-render'],
|
|
143
|
+
pluginTools: Object.keys(toolStats).length
|
|
144
|
+
},
|
|
145
|
+
hooks: {
|
|
146
|
+
registered: Object.keys(hookStats).length,
|
|
147
|
+
phases: ['PRE_INIT', 'POST_INIT', 'PRE_REQUIREMENTS', 'POST_REQUIREMENTS', 'PRE_DESIGN', 'POST_DESIGN', 'PRE_TASKS', 'POST_TASKS', 'PRE_IMPLEMENTATION', 'POST_IMPLEMENTATION']
|
|
148
|
+
},
|
|
149
|
+
steering: {
|
|
150
|
+
documents: steeringStats.totalDocuments,
|
|
151
|
+
plugins: Object.keys(steeringStats.documentsByPlugin).length,
|
|
152
|
+
modes: steeringStats.documentsByMode
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
// Handle graceful shutdown
|
|
156
|
+
process.on('SIGINT', async () => {
|
|
157
|
+
logger.info('Received SIGINT, shutting down gracefully...');
|
|
158
|
+
await mcpServer.stop();
|
|
159
|
+
process.exit(0);
|
|
160
|
+
});
|
|
161
|
+
process.on('SIGTERM', async () => {
|
|
162
|
+
logger.info('Received SIGTERM, shutting down gracefully...');
|
|
163
|
+
await mcpServer.stop();
|
|
164
|
+
process.exit(0);
|
|
165
|
+
});
|
|
166
|
+
}
|
|
99
167
|
}
|
|
100
168
|
catch (error) {
|
|
101
169
|
// Only log startup errors in non-MCP mode
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,6BAA6B;AAE7B,2EAA2E;AAC3E,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC;AAEvE,IAAI,SAAS,EAAE,CAAC;IACd,qDAAqD;IACrD,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACxB,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACxB,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACzB,8CAA8C;IAC9C,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;IACpC,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,CAAC;AACrE,CAAC;AAED,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAQrD,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAa,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAY,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAgB,KAAK,CAAC,aAAa,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAa,KAAK,CAAC,UAAU,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAqB,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACjF,MAAM,gBAAgB,GAAG,SAAS,CAAC,GAAG,CAAyB,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAE7F,2BAA2B;IAC3B,MAAM,aAAa,CAAC,UAAU,EAAE,CAAC;IAEjC,OAAO;QACL,SAAS;QACT,MAAM;QACN,SAAS;QACT,aAAa;QACb,UAAU;QACV,YAAY;QACZ,gBAAgB;QAChB,KAAK,CAAC,UAAU;YACd,4BAA4B;QAC9B,CAAC;QACD,KAAK,CAAC,KAAK;YACT,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,IAAI;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|