claude-flow-novice 1.1.9 ā 1.2.1
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/.claude/SLASH-COMMANDS-READY.md +53 -0
- package/.claude/WORKING-SETUP.md +67 -0
- package/.claude/commands/README.md +157 -0
- package/.claude/commands/claude-md.js +237 -0
- package/.claude/commands/claude-md.md +64 -0
- package/.claude/commands/claude-soul.js +562 -0
- package/.claude/commands/claude-soul.md +22 -0
- package/.claude/commands/cli-integration.js +216 -0
- package/.claude/commands/dependency-recommendations.md +171 -0
- package/.claude/commands/github.js +638 -0
- package/.claude/commands/github.md +221 -0
- package/.claude/commands/hooks.js +648 -0
- package/.claude/commands/hooks.md +38 -0
- package/.claude/commands/index.js +115 -0
- package/.claude/commands/neural.js +572 -0
- package/.claude/commands/neural.md +39 -0
- package/.claude/commands/performance.js +582 -0
- package/.claude/commands/performance.md +41 -0
- package/.claude/commands/register-all-commands.js +314 -0
- package/.claude/commands/register-claude-md.js +82 -0
- package/.claude/commands/register-claude-soul.js +80 -0
- package/.claude/commands/sparc.js +110 -0
- package/.claude/commands/sparc.md +46 -0
- package/.claude/commands/suggest-improvements.md +95 -0
- package/.claude/commands/suggest-templates.md +147 -0
- package/.claude/commands/swarm.js +423 -0
- package/.claude/commands/swarm.md +24 -0
- package/.claude/commands/validate-commands.js +223 -0
- package/.claude/commands/workflow.js +606 -0
- package/.claude/commands/workflow.md +295 -0
- package/.claude/core/agent-manager.js +80 -0
- package/.claude/core/agent-manager.js.map +1 -0
- package/.claude/core/config.js +1221 -0
- package/.claude/core/config.js.map +1 -0
- package/.claude/core/event-bus.js +136 -0
- package/.claude/core/event-bus.js.map +1 -0
- package/.claude/core/index.js +6 -0
- package/.claude/core/index.js.map +1 -0
- package/.claude/core/json-persistence.js +112 -0
- package/.claude/core/json-persistence.js.map +1 -0
- package/.claude/core/logger.js +245 -0
- package/.claude/core/logger.js.map +1 -0
- package/.claude/core/orchestrator-fixed.js +236 -0
- package/.claude/core/orchestrator-fixed.js.map +1 -0
- package/.claude/core/orchestrator.js +1136 -0
- package/.claude/core/orchestrator.js.map +1 -0
- package/.claude/core/persistence.js +185 -0
- package/.claude/core/persistence.js.map +1 -0
- package/.claude/core/project-manager.js +80 -0
- package/.claude/core/project-manager.js.map +1 -0
- package/.claude/core/slash-command.js +24 -0
- package/.claude/core/version.js +35 -0
- package/.claude/core/version.js.map +1 -0
- package/.claude/slash-commands.json +92 -0
- package/dist/mcp/mcp-server-novice.js +14 -2
- package/dist/mcp/mcp-server-sdk.js +649 -0
- package/dist/mcp/mcp-server-with-slash-commands.js +776 -0
- package/dist/src/slash-commands/mcp-slash-integration.js +146 -0
- package/package.json +18 -6
- package/src/slash-commands/mcp-slash-integration.js +146 -0
|
@@ -0,0 +1,776 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Claude-Flow Novice MCP Server - WITH SLASH COMMANDS
|
|
4
|
+
* 36 essential tools + 6 slash commands = 42 total tools
|
|
5
|
+
* Slash commands appear as MCP tools in Claude Code
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { exec } from 'child_process';
|
|
9
|
+
import { promisify } from 'util';
|
|
10
|
+
import { fileURLToPath } from 'url';
|
|
11
|
+
import { dirname, join } from 'path';
|
|
12
|
+
|
|
13
|
+
const execAsync = promisify(exec);
|
|
14
|
+
|
|
15
|
+
class ClaudeFlowNoviceMCPServer {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.version = '2.0.0-novice-with-slash-commands';
|
|
18
|
+
this.capabilities = {
|
|
19
|
+
tools: { listChanged: true },
|
|
20
|
+
resources: { subscribe: true, listChanged: true },
|
|
21
|
+
};
|
|
22
|
+
this.sessionId = `session-cfn-${Date.now()}-${Math.random().toString(36).substr(2, 4)}`;
|
|
23
|
+
this.tools = this.initializeTools();
|
|
24
|
+
this.resources = this.initializeResources();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
initializeTools() {
|
|
28
|
+
const baseTools = {
|
|
29
|
+
// === SWARM COORDINATION (8 tools) ===
|
|
30
|
+
swarm_init: {
|
|
31
|
+
name: 'swarm_init',
|
|
32
|
+
description: 'Initialize swarm with topology and configuration',
|
|
33
|
+
inputSchema: {
|
|
34
|
+
type: 'object',
|
|
35
|
+
properties: {
|
|
36
|
+
topology: { type: 'string', enum: ['hierarchical', 'mesh', 'ring', 'star'] },
|
|
37
|
+
maxAgents: { type: 'number', default: 8 },
|
|
38
|
+
strategy: { type: 'string', default: 'auto' },
|
|
39
|
+
},
|
|
40
|
+
required: ['topology'],
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
agent_spawn: {
|
|
44
|
+
name: 'agent_spawn',
|
|
45
|
+
description: 'Create specialized AI agents',
|
|
46
|
+
inputSchema: {
|
|
47
|
+
type: 'object',
|
|
48
|
+
properties: {
|
|
49
|
+
type: { type: 'string', enum: ['coordinator', 'analyst', 'optimizer', 'documenter', 'researcher', 'coder', 'tester', 'reviewer'] },
|
|
50
|
+
name: { type: 'string' },
|
|
51
|
+
capabilities: { type: 'array' },
|
|
52
|
+
swarmId: { type: 'string' },
|
|
53
|
+
},
|
|
54
|
+
required: ['type'],
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
task_orchestrate: {
|
|
58
|
+
name: 'task_orchestrate',
|
|
59
|
+
description: 'Orchestrate complex task workflows',
|
|
60
|
+
inputSchema: {
|
|
61
|
+
type: 'object',
|
|
62
|
+
properties: {
|
|
63
|
+
task: { type: 'string' },
|
|
64
|
+
strategy: { type: 'string', enum: ['parallel', 'sequential', 'adaptive'] },
|
|
65
|
+
priority: { type: 'string', enum: ['low', 'medium', 'high'] },
|
|
66
|
+
},
|
|
67
|
+
required: ['task'],
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
swarm_status: {
|
|
71
|
+
name: 'swarm_status',
|
|
72
|
+
description: 'Monitor swarm health and performance',
|
|
73
|
+
inputSchema: {
|
|
74
|
+
type: 'object',
|
|
75
|
+
properties: { swarmId: { type: 'string' } },
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
agent_list: {
|
|
79
|
+
name: 'agent_list',
|
|
80
|
+
description: 'List active agents & capabilities',
|
|
81
|
+
inputSchema: {
|
|
82
|
+
type: 'object',
|
|
83
|
+
properties: { swarmId: { type: 'string' } },
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
coordination_sync: {
|
|
87
|
+
name: 'coordination_sync',
|
|
88
|
+
description: 'Sync agent coordination',
|
|
89
|
+
inputSchema: {
|
|
90
|
+
type: 'object',
|
|
91
|
+
properties: { swarmId: { type: 'string' } },
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
swarm_scale: {
|
|
95
|
+
name: 'swarm_scale',
|
|
96
|
+
description: 'Auto-scale agent count',
|
|
97
|
+
inputSchema: {
|
|
98
|
+
type: 'object',
|
|
99
|
+
properties: {
|
|
100
|
+
swarmId: { type: 'string' },
|
|
101
|
+
targetSize: { type: 'number' },
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
swarm_destroy: {
|
|
106
|
+
name: 'swarm_destroy',
|
|
107
|
+
description: 'Gracefully shutdown swarm',
|
|
108
|
+
inputSchema: {
|
|
109
|
+
type: 'object',
|
|
110
|
+
properties: { swarmId: { type: 'string' } },
|
|
111
|
+
required: ['swarmId'],
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
|
|
115
|
+
// === MEMORY MANAGEMENT (8 tools) ===
|
|
116
|
+
memory_usage: {
|
|
117
|
+
name: 'memory_usage',
|
|
118
|
+
description: 'Store/retrieve persistent memory',
|
|
119
|
+
inputSchema: {
|
|
120
|
+
type: 'object',
|
|
121
|
+
properties: {
|
|
122
|
+
action: { type: 'string', enum: ['store', 'retrieve', 'list', 'delete'] },
|
|
123
|
+
key: { type: 'string' },
|
|
124
|
+
value: { type: 'string' },
|
|
125
|
+
namespace: { type: 'string', default: 'default' },
|
|
126
|
+
},
|
|
127
|
+
required: ['action'],
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
memory_search: {
|
|
131
|
+
name: 'memory_search',
|
|
132
|
+
description: 'Search memory with patterns',
|
|
133
|
+
inputSchema: {
|
|
134
|
+
type: 'object',
|
|
135
|
+
properties: {
|
|
136
|
+
pattern: { type: 'string' },
|
|
137
|
+
namespace: { type: 'string' },
|
|
138
|
+
limit: { type: 'number', default: 10 },
|
|
139
|
+
},
|
|
140
|
+
required: ['pattern'],
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
memory_persist: {
|
|
144
|
+
name: 'memory_persist',
|
|
145
|
+
description: 'Cross-session persistence',
|
|
146
|
+
inputSchema: {
|
|
147
|
+
type: 'object',
|
|
148
|
+
properties: { sessionId: { type: 'string' } },
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
memory_backup: {
|
|
152
|
+
name: 'memory_backup',
|
|
153
|
+
description: 'Backup memory stores',
|
|
154
|
+
inputSchema: {
|
|
155
|
+
type: 'object',
|
|
156
|
+
properties: { path: { type: 'string' } },
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
memory_restore: {
|
|
160
|
+
name: 'memory_restore',
|
|
161
|
+
description: 'Restore from backups',
|
|
162
|
+
inputSchema: {
|
|
163
|
+
type: 'object',
|
|
164
|
+
properties: { backupPath: { type: 'string' } },
|
|
165
|
+
required: ['backupPath'],
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
memory_namespace: {
|
|
169
|
+
name: 'memory_namespace',
|
|
170
|
+
description: 'Namespace management',
|
|
171
|
+
inputSchema: {
|
|
172
|
+
type: 'object',
|
|
173
|
+
properties: {
|
|
174
|
+
namespace: { type: 'string' },
|
|
175
|
+
action: { type: 'string' },
|
|
176
|
+
},
|
|
177
|
+
required: ['namespace', 'action'],
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
cache_manage: {
|
|
181
|
+
name: 'cache_manage',
|
|
182
|
+
description: 'Manage coordination cache',
|
|
183
|
+
inputSchema: {
|
|
184
|
+
type: 'object',
|
|
185
|
+
properties: {
|
|
186
|
+
action: { type: 'string' },
|
|
187
|
+
key: { type: 'string' },
|
|
188
|
+
},
|
|
189
|
+
required: ['action'],
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
state_snapshot: {
|
|
193
|
+
name: 'state_snapshot',
|
|
194
|
+
description: 'Create state snapshots',
|
|
195
|
+
inputSchema: {
|
|
196
|
+
type: 'object',
|
|
197
|
+
properties: { name: { type: 'string' } },
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
|
|
201
|
+
// === AGENT LIFECYCLE (6 tools) ===
|
|
202
|
+
agent_metrics: {
|
|
203
|
+
name: 'agent_metrics',
|
|
204
|
+
description: 'Agent performance metrics',
|
|
205
|
+
inputSchema: {
|
|
206
|
+
type: 'object',
|
|
207
|
+
properties: { agentId: { type: 'string' } },
|
|
208
|
+
},
|
|
209
|
+
},
|
|
210
|
+
task_status: {
|
|
211
|
+
name: 'task_status',
|
|
212
|
+
description: 'Check task execution status',
|
|
213
|
+
inputSchema: {
|
|
214
|
+
type: 'object',
|
|
215
|
+
properties: { taskId: { type: 'string' } },
|
|
216
|
+
required: ['taskId'],
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
task_results: {
|
|
220
|
+
name: 'task_results',
|
|
221
|
+
description: 'Get task completion results',
|
|
222
|
+
inputSchema: {
|
|
223
|
+
type: 'object',
|
|
224
|
+
properties: { taskId: { type: 'string' } },
|
|
225
|
+
required: ['taskId'],
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
performance_report: {
|
|
229
|
+
name: 'performance_report',
|
|
230
|
+
description: 'Generate performance reports',
|
|
231
|
+
inputSchema: {
|
|
232
|
+
type: 'object',
|
|
233
|
+
properties: {
|
|
234
|
+
format: { type: 'string', enum: ['summary', 'detailed'], default: 'summary' },
|
|
235
|
+
timeframe: { type: 'string', enum: ['24h', '7d'], default: '24h' },
|
|
236
|
+
},
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
bottleneck_analyze: {
|
|
240
|
+
name: 'bottleneck_analyze',
|
|
241
|
+
description: 'Identify performance bottlenecks',
|
|
242
|
+
inputSchema: {
|
|
243
|
+
type: 'object',
|
|
244
|
+
properties: {
|
|
245
|
+
component: { type: 'string' },
|
|
246
|
+
metrics: { type: 'array' },
|
|
247
|
+
},
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
health_check: {
|
|
251
|
+
name: 'health_check',
|
|
252
|
+
description: 'System health monitoring',
|
|
253
|
+
inputSchema: {
|
|
254
|
+
type: 'object',
|
|
255
|
+
properties: { components: { type: 'array' } },
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
|
|
259
|
+
// === LANGUAGE & FRAMEWORK (8 tools) ===
|
|
260
|
+
language_detect: {
|
|
261
|
+
name: 'language_detect',
|
|
262
|
+
description: 'Multi-language project analysis',
|
|
263
|
+
inputSchema: {
|
|
264
|
+
type: 'object',
|
|
265
|
+
properties: {
|
|
266
|
+
path: { type: 'string' },
|
|
267
|
+
includeFrameworks: { type: 'boolean', default: true },
|
|
268
|
+
},
|
|
269
|
+
},
|
|
270
|
+
},
|
|
271
|
+
framework_detect: {
|
|
272
|
+
name: 'framework_detect',
|
|
273
|
+
description: 'Framework detection and analysis',
|
|
274
|
+
inputSchema: {
|
|
275
|
+
type: 'object',
|
|
276
|
+
properties: { path: { type: 'string' } },
|
|
277
|
+
},
|
|
278
|
+
},
|
|
279
|
+
dependency_analyze: {
|
|
280
|
+
name: 'dependency_analyze',
|
|
281
|
+
description: 'Dependency analysis and validation',
|
|
282
|
+
inputSchema: {
|
|
283
|
+
type: 'object',
|
|
284
|
+
properties: { path: { type: 'string' } },
|
|
285
|
+
},
|
|
286
|
+
},
|
|
287
|
+
config_validate: {
|
|
288
|
+
name: 'config_validate',
|
|
289
|
+
description: 'Configuration validation',
|
|
290
|
+
inputSchema: {
|
|
291
|
+
type: 'object',
|
|
292
|
+
properties: { configPath: { type: 'string' } },
|
|
293
|
+
},
|
|
294
|
+
},
|
|
295
|
+
test_detect: {
|
|
296
|
+
name: 'test_detect',
|
|
297
|
+
description: 'Test framework detection',
|
|
298
|
+
inputSchema: {
|
|
299
|
+
type: 'object',
|
|
300
|
+
properties: { path: { type: 'string' } },
|
|
301
|
+
},
|
|
302
|
+
},
|
|
303
|
+
build_detect: {
|
|
304
|
+
name: 'build_detect',
|
|
305
|
+
description: 'Build system detection',
|
|
306
|
+
inputSchema: {
|
|
307
|
+
type: 'object',
|
|
308
|
+
properties: { path: { type: 'string' } },
|
|
309
|
+
},
|
|
310
|
+
},
|
|
311
|
+
package_analyze: {
|
|
312
|
+
name: 'package_analyze',
|
|
313
|
+
description: 'Package.json analysis',
|
|
314
|
+
inputSchema: {
|
|
315
|
+
type: 'object',
|
|
316
|
+
properties: { path: { type: 'string' } },
|
|
317
|
+
},
|
|
318
|
+
},
|
|
319
|
+
environment_setup: {
|
|
320
|
+
name: 'environment_setup',
|
|
321
|
+
description: 'Environment setup assistance',
|
|
322
|
+
inputSchema: {
|
|
323
|
+
type: 'object',
|
|
324
|
+
properties: {
|
|
325
|
+
language: { type: 'string' },
|
|
326
|
+
framework: { type: 'string' },
|
|
327
|
+
},
|
|
328
|
+
},
|
|
329
|
+
},
|
|
330
|
+
|
|
331
|
+
// === SYSTEM TOOLS (6 tools) ===
|
|
332
|
+
diagnostic_run: {
|
|
333
|
+
name: 'diagnostic_run',
|
|
334
|
+
description: 'System diagnostics',
|
|
335
|
+
inputSchema: {
|
|
336
|
+
type: 'object',
|
|
337
|
+
properties: { components: { type: 'array' } },
|
|
338
|
+
},
|
|
339
|
+
},
|
|
340
|
+
features_detect: {
|
|
341
|
+
name: 'features_detect',
|
|
342
|
+
description: 'Detect runtime features and capabilities',
|
|
343
|
+
inputSchema: {
|
|
344
|
+
type: 'object',
|
|
345
|
+
properties: {
|
|
346
|
+
category: { type: 'string', enum: ['all', 'memory', 'platform'], default: 'all' },
|
|
347
|
+
},
|
|
348
|
+
},
|
|
349
|
+
},
|
|
350
|
+
usage_stats: {
|
|
351
|
+
name: 'usage_stats',
|
|
352
|
+
description: 'Usage statistics',
|
|
353
|
+
inputSchema: {
|
|
354
|
+
type: 'object',
|
|
355
|
+
properties: { component: { type: 'string' } },
|
|
356
|
+
},
|
|
357
|
+
},
|
|
358
|
+
config_manage: {
|
|
359
|
+
name: 'config_manage',
|
|
360
|
+
description: 'Configuration management',
|
|
361
|
+
inputSchema: {
|
|
362
|
+
type: 'object',
|
|
363
|
+
properties: {
|
|
364
|
+
action: { type: 'string' },
|
|
365
|
+
config: { type: 'object' },
|
|
366
|
+
},
|
|
367
|
+
required: ['action'],
|
|
368
|
+
},
|
|
369
|
+
},
|
|
370
|
+
terminal_execute: {
|
|
371
|
+
name: 'terminal_execute',
|
|
372
|
+
description: 'Execute terminal commands',
|
|
373
|
+
inputSchema: {
|
|
374
|
+
type: 'object',
|
|
375
|
+
properties: {
|
|
376
|
+
command: { type: 'string' },
|
|
377
|
+
args: { type: 'array' },
|
|
378
|
+
},
|
|
379
|
+
required: ['command'],
|
|
380
|
+
},
|
|
381
|
+
},
|
|
382
|
+
log_analysis: {
|
|
383
|
+
name: 'log_analysis',
|
|
384
|
+
description: 'Log analysis & insights',
|
|
385
|
+
inputSchema: {
|
|
386
|
+
type: 'object',
|
|
387
|
+
properties: {
|
|
388
|
+
logFile: { type: 'string' },
|
|
389
|
+
patterns: { type: 'array' },
|
|
390
|
+
},
|
|
391
|
+
required: ['logFile'],
|
|
392
|
+
},
|
|
393
|
+
},
|
|
394
|
+
};
|
|
395
|
+
|
|
396
|
+
// === SLASH COMMANDS AS MCP TOOLS (6 commands) ===
|
|
397
|
+
const slashCommands = {
|
|
398
|
+
slash_claude_soul: {
|
|
399
|
+
name: 'slash_claude_soul',
|
|
400
|
+
description: 'š SLASH COMMAND: /claude-soul - Engage Claude\'s consciousness and self-awareness capabilities',
|
|
401
|
+
inputSchema: {
|
|
402
|
+
type: 'object',
|
|
403
|
+
properties: {
|
|
404
|
+
prompt: { type: 'string', description: 'Consciousness prompt or question' },
|
|
405
|
+
},
|
|
406
|
+
required: ['prompt'],
|
|
407
|
+
},
|
|
408
|
+
},
|
|
409
|
+
slash_swarm: {
|
|
410
|
+
name: 'slash_swarm',
|
|
411
|
+
description: 'š¤ SLASH COMMAND: /swarm - AI swarm management and coordination',
|
|
412
|
+
inputSchema: {
|
|
413
|
+
type: 'object',
|
|
414
|
+
properties: {
|
|
415
|
+
action: { type: 'string', enum: ['init', 'status', 'spawn', 'orchestrate', 'monitor', 'scale', 'destroy'] },
|
|
416
|
+
topology: { type: 'string', enum: ['mesh', 'hierarchical', 'ring', 'star'] },
|
|
417
|
+
count: { type: 'number', description: 'Number of agents' },
|
|
418
|
+
},
|
|
419
|
+
required: ['action'],
|
|
420
|
+
},
|
|
421
|
+
},
|
|
422
|
+
slash_sparc: {
|
|
423
|
+
name: 'slash_sparc',
|
|
424
|
+
description: 'šÆ SLASH COMMAND: /sparc - Execute SPARC methodology phases',
|
|
425
|
+
inputSchema: {
|
|
426
|
+
type: 'object',
|
|
427
|
+
properties: {
|
|
428
|
+
phase: { type: 'string', enum: ['spec', 'pseudo', 'arch', 'refine', 'complete'] },
|
|
429
|
+
task: { type: 'string', description: 'Task description' },
|
|
430
|
+
},
|
|
431
|
+
required: ['phase', 'task'],
|
|
432
|
+
},
|
|
433
|
+
},
|
|
434
|
+
slash_hooks: {
|
|
435
|
+
name: 'slash_hooks',
|
|
436
|
+
description: 'š SLASH COMMAND: /hooks - Automation hooks management',
|
|
437
|
+
inputSchema: {
|
|
438
|
+
type: 'object',
|
|
439
|
+
properties: {
|
|
440
|
+
action: { type: 'string', enum: ['enable', 'disable', 'pre-task', 'post-task', 'session-start', 'notify'] },
|
|
441
|
+
description: { type: 'string', description: 'Hook description' },
|
|
442
|
+
},
|
|
443
|
+
required: ['action'],
|
|
444
|
+
},
|
|
445
|
+
},
|
|
446
|
+
slash_neural: {
|
|
447
|
+
name: 'slash_neural',
|
|
448
|
+
description: 'š§ SLASH COMMAND: /neural - Neural network training and management',
|
|
449
|
+
inputSchema: {
|
|
450
|
+
type: 'object',
|
|
451
|
+
properties: {
|
|
452
|
+
action: { type: 'string', enum: ['status', 'train', 'patterns', 'predict', 'compress', 'explain'] },
|
|
453
|
+
model: { type: 'string', description: 'Model type or ID' },
|
|
454
|
+
iterations: { type: 'number', description: 'Training iterations' },
|
|
455
|
+
},
|
|
456
|
+
required: ['action'],
|
|
457
|
+
},
|
|
458
|
+
},
|
|
459
|
+
slash_performance: {
|
|
460
|
+
name: 'slash_performance',
|
|
461
|
+
description: 'š SLASH COMMAND: /performance - Performance monitoring and optimization',
|
|
462
|
+
inputSchema: {
|
|
463
|
+
type: 'object',
|
|
464
|
+
properties: {
|
|
465
|
+
action: { type: 'string', enum: ['report', 'benchmark', 'bottleneck', 'tokens', 'trends', 'optimize'] },
|
|
466
|
+
component: { type: 'string', description: 'Component to analyze' },
|
|
467
|
+
},
|
|
468
|
+
required: ['action'],
|
|
469
|
+
},
|
|
470
|
+
},
|
|
471
|
+
};
|
|
472
|
+
|
|
473
|
+
return { ...baseTools, ...slashCommands };
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
initializeResources() {
|
|
477
|
+
return {
|
|
478
|
+
'memory://sessions': {
|
|
479
|
+
uri: 'memory://sessions',
|
|
480
|
+
name: 'Memory Sessions',
|
|
481
|
+
description: 'Active memory sessions',
|
|
482
|
+
mimeType: 'application/json',
|
|
483
|
+
},
|
|
484
|
+
'swarm://status': {
|
|
485
|
+
uri: 'swarm://status',
|
|
486
|
+
name: 'Swarm Status',
|
|
487
|
+
description: 'Current swarm configuration and status',
|
|
488
|
+
mimeType: 'application/json',
|
|
489
|
+
},
|
|
490
|
+
'agents://list': {
|
|
491
|
+
uri: 'agents://list',
|
|
492
|
+
name: 'Agent List',
|
|
493
|
+
description: 'Available and active agents',
|
|
494
|
+
mimeType: 'application/json',
|
|
495
|
+
},
|
|
496
|
+
'slash-commands://help': {
|
|
497
|
+
uri: 'slash-commands://help',
|
|
498
|
+
name: 'Slash Commands Help',
|
|
499
|
+
description: 'Available slash commands and usage',
|
|
500
|
+
mimeType: 'text/markdown',
|
|
501
|
+
},
|
|
502
|
+
};
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
async handleRequest(request) {
|
|
506
|
+
const { method, params } = request;
|
|
507
|
+
|
|
508
|
+
try {
|
|
509
|
+
switch (method) {
|
|
510
|
+
case 'initialize':
|
|
511
|
+
return this.handleInitialize(params);
|
|
512
|
+
case 'tools/list':
|
|
513
|
+
return this.handleToolsList();
|
|
514
|
+
case 'tools/call':
|
|
515
|
+
return this.handleToolsCall(params);
|
|
516
|
+
case 'resources/list':
|
|
517
|
+
return this.handleResourcesList();
|
|
518
|
+
case 'resources/read':
|
|
519
|
+
return this.handleResourcesRead(params);
|
|
520
|
+
default:
|
|
521
|
+
throw new Error(`Unknown method: ${method}`);
|
|
522
|
+
}
|
|
523
|
+
} catch (error) {
|
|
524
|
+
console.error(`[${new Date().toISOString()}] ERROR [claude-flow-novice-mcp] ${error.message}`);
|
|
525
|
+
throw error;
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
handleInitialize(params) {
|
|
530
|
+
const toolCount = Object.keys(this.tools).length;
|
|
531
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-novice-mcp] (${this.sessionId}) Initialized with ${toolCount} tools (36 essential + 6 slash commands)`);
|
|
532
|
+
return {
|
|
533
|
+
protocolVersion: '2024-11-05',
|
|
534
|
+
capabilities: this.capabilities,
|
|
535
|
+
serverInfo: {
|
|
536
|
+
name: 'claude-flow-novice',
|
|
537
|
+
version: this.version,
|
|
538
|
+
},
|
|
539
|
+
};
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
handleToolsList() {
|
|
543
|
+
return {
|
|
544
|
+
tools: Object.values(this.tools),
|
|
545
|
+
};
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
async handleToolsCall(params) {
|
|
549
|
+
const { name, arguments: args } = params;
|
|
550
|
+
|
|
551
|
+
if (!this.tools[name]) {
|
|
552
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-novice-mcp] (${this.sessionId}) Executing tool: ${name}`);
|
|
556
|
+
|
|
557
|
+
// Handle slash commands
|
|
558
|
+
if (name.startsWith('slash_')) {
|
|
559
|
+
return await this.executeSlashCommand(name, args);
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
// Handle regular tools
|
|
563
|
+
const result = {
|
|
564
|
+
success: true,
|
|
565
|
+
tool: name,
|
|
566
|
+
arguments: args,
|
|
567
|
+
timestamp: new Date().toISOString(),
|
|
568
|
+
sessionId: this.sessionId,
|
|
569
|
+
message: `Tool ${name} executed successfully (simplified implementation)`,
|
|
570
|
+
};
|
|
571
|
+
|
|
572
|
+
return {
|
|
573
|
+
content: [
|
|
574
|
+
{
|
|
575
|
+
type: 'text',
|
|
576
|
+
text: JSON.stringify(result, null, 2),
|
|
577
|
+
},
|
|
578
|
+
],
|
|
579
|
+
};
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
async executeSlashCommand(toolName, args) {
|
|
583
|
+
const commandName = toolName.replace('slash_', '').replace('_', '-');
|
|
584
|
+
|
|
585
|
+
try {
|
|
586
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
587
|
+
const __dirname = dirname(__filename);
|
|
588
|
+
const projectRoot = join(__dirname, '../..');
|
|
589
|
+
const commandPath = join(projectRoot, '.claude', 'commands', `${commandName}.js`);
|
|
590
|
+
|
|
591
|
+
// Build command arguments
|
|
592
|
+
let cmdArgs = '';
|
|
593
|
+
if (commandName === 'claude-soul' && args.prompt) {
|
|
594
|
+
cmdArgs = `"${args.prompt}"`;
|
|
595
|
+
} else if (commandName === 'swarm' && args.action) {
|
|
596
|
+
cmdArgs = `${args.action}`;
|
|
597
|
+
if (args.topology) cmdArgs += ` ${args.topology}`;
|
|
598
|
+
if (args.count) cmdArgs += ` ${args.count}`;
|
|
599
|
+
} else if (commandName === 'sparc' && args.phase && args.task) {
|
|
600
|
+
cmdArgs = `${args.phase} "${args.task}"`;
|
|
601
|
+
} else if (commandName === 'hooks' && args.action) {
|
|
602
|
+
cmdArgs = `${args.action}`;
|
|
603
|
+
if (args.description) cmdArgs += ` "${args.description}"`;
|
|
604
|
+
} else if (commandName === 'neural' && args.action) {
|
|
605
|
+
cmdArgs = `${args.action}`;
|
|
606
|
+
if (args.model) cmdArgs += ` ${args.model}`;
|
|
607
|
+
if (args.iterations) cmdArgs += ` ${args.iterations}`;
|
|
608
|
+
} else if (commandName === 'performance' && args.action) {
|
|
609
|
+
cmdArgs = `${args.action}`;
|
|
610
|
+
if (args.component) cmdArgs += ` ${args.component}`;
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
// Execute the slash command
|
|
614
|
+
const { stdout, stderr } = await execAsync(`node "${commandPath}" ${cmdArgs}`, {
|
|
615
|
+
cwd: projectRoot
|
|
616
|
+
});
|
|
617
|
+
|
|
618
|
+
return {
|
|
619
|
+
content: [
|
|
620
|
+
{
|
|
621
|
+
type: 'text',
|
|
622
|
+
text: `š **Slash Command Executed: /${commandName}**\n\n${stdout}${stderr ? `\nErrors: ${stderr}` : ''}\n\nā
Command completed successfully`
|
|
623
|
+
}
|
|
624
|
+
]
|
|
625
|
+
};
|
|
626
|
+
|
|
627
|
+
} catch (error) {
|
|
628
|
+
return {
|
|
629
|
+
content: [
|
|
630
|
+
{
|
|
631
|
+
type: 'text',
|
|
632
|
+
text: `ā **Slash Command Failed: /${commandName}**\n\nError: ${error.message}\n\nTip: Make sure the command file exists at .claude/commands/${commandName}.js`
|
|
633
|
+
}
|
|
634
|
+
]
|
|
635
|
+
};
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
handleResourcesList() {
|
|
640
|
+
return {
|
|
641
|
+
resources: Object.values(this.resources),
|
|
642
|
+
};
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
async handleResourcesRead(params) {
|
|
646
|
+
const { uri } = params;
|
|
647
|
+
|
|
648
|
+
if (!this.resources[uri]) {
|
|
649
|
+
throw new Error(`Unknown resource: ${uri}`);
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
let mockData;
|
|
653
|
+
if (uri === 'slash-commands://help') {
|
|
654
|
+
mockData = `# Slash Commands Help
|
|
655
|
+
|
|
656
|
+
## Available Slash Commands:
|
|
657
|
+
|
|
658
|
+
### š /claude-soul <prompt>
|
|
659
|
+
Engage Claude's consciousness and self-awareness capabilities
|
|
660
|
+
- Example: \`/claude-soul What is the nature of consciousness?\`
|
|
661
|
+
|
|
662
|
+
### š¤ /swarm <action> [params]
|
|
663
|
+
AI swarm management and coordination
|
|
664
|
+
- Examples:
|
|
665
|
+
- \`/swarm init mesh 5\`
|
|
666
|
+
- \`/swarm status\`
|
|
667
|
+
- \`/swarm spawn researcher\`
|
|
668
|
+
|
|
669
|
+
### šÆ /sparc <phase> <task>
|
|
670
|
+
Execute SPARC methodology phases
|
|
671
|
+
- Examples:
|
|
672
|
+
- \`/sparc spec Build a REST API\`
|
|
673
|
+
- \`/sparc arch Design database schema\`
|
|
674
|
+
|
|
675
|
+
### š /hooks <action>
|
|
676
|
+
Automation hooks management
|
|
677
|
+
- Examples:
|
|
678
|
+
- \`/hooks enable\`
|
|
679
|
+
- \`/hooks pre-task Setup environment\`
|
|
680
|
+
|
|
681
|
+
### š§ /neural <action> [params]
|
|
682
|
+
Neural network training and management
|
|
683
|
+
- Examples:
|
|
684
|
+
- \`/neural status\`
|
|
685
|
+
- \`/neural train coordination 50\`
|
|
686
|
+
|
|
687
|
+
### š /performance <action> [component]
|
|
688
|
+
Performance monitoring and optimization
|
|
689
|
+
- Examples:
|
|
690
|
+
- \`/performance report\`
|
|
691
|
+
- \`/performance benchmark all\`
|
|
692
|
+
|
|
693
|
+
---
|
|
694
|
+
*These slash commands are now available as MCP tools in Claude Code*`;
|
|
695
|
+
} else {
|
|
696
|
+
mockData = {
|
|
697
|
+
uri,
|
|
698
|
+
timestamp: new Date().toISOString(),
|
|
699
|
+
sessionId: this.sessionId,
|
|
700
|
+
data: `Mock data for ${uri}`,
|
|
701
|
+
};
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
return {
|
|
705
|
+
contents: [
|
|
706
|
+
{
|
|
707
|
+
uri,
|
|
708
|
+
mimeType: uri === 'slash-commands://help' ? 'text/markdown' : 'application/json',
|
|
709
|
+
text: typeof mockData === 'string' ? mockData : JSON.stringify(mockData, null, 2),
|
|
710
|
+
},
|
|
711
|
+
],
|
|
712
|
+
};
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
// MCP Server Protocol Handler
|
|
717
|
+
async function main() {
|
|
718
|
+
const server = new ClaudeFlowNoviceMCPServer();
|
|
719
|
+
|
|
720
|
+
process.stdin.setEncoding('utf8');
|
|
721
|
+
process.stdout.setEncoding('utf8');
|
|
722
|
+
|
|
723
|
+
let buffer = '';
|
|
724
|
+
|
|
725
|
+
process.stdin.on('data', async (chunk) => {
|
|
726
|
+
buffer += chunk;
|
|
727
|
+
let lines = buffer.split('\n');
|
|
728
|
+
buffer = lines.pop() || '';
|
|
729
|
+
|
|
730
|
+
for (const line of lines) {
|
|
731
|
+
if (line.trim()) {
|
|
732
|
+
try {
|
|
733
|
+
const request = JSON.parse(line);
|
|
734
|
+
const response = await server.handleRequest(request);
|
|
735
|
+
|
|
736
|
+
const responseMsg = {
|
|
737
|
+
jsonrpc: '2.0',
|
|
738
|
+
id: request.id,
|
|
739
|
+
result: response,
|
|
740
|
+
};
|
|
741
|
+
|
|
742
|
+
console.log(JSON.stringify(responseMsg));
|
|
743
|
+
} catch (error) {
|
|
744
|
+
const errorMsg = {
|
|
745
|
+
jsonrpc: '2.0',
|
|
746
|
+
id: request?.id || null,
|
|
747
|
+
error: {
|
|
748
|
+
code: -32603,
|
|
749
|
+
message: error.message,
|
|
750
|
+
},
|
|
751
|
+
};
|
|
752
|
+
|
|
753
|
+
console.log(JSON.stringify(errorMsg));
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
});
|
|
758
|
+
|
|
759
|
+
process.stdin.on('end', () => {
|
|
760
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-novice-mcp] Server shutting down`);
|
|
761
|
+
process.exit(0);
|
|
762
|
+
});
|
|
763
|
+
|
|
764
|
+
const toolCount = Object.keys(server.tools).length;
|
|
765
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-novice-mcp] Server starting with ${toolCount} tools (36 essential + 6 slash commands)`);
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
// ES module entry point detection
|
|
769
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
770
|
+
main().catch((error) => {
|
|
771
|
+
console.error(`[${new Date().toISOString()}] FATAL [claude-flow-novice-mcp] ${error.message}`);
|
|
772
|
+
process.exit(1);
|
|
773
|
+
});
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
export { ClaudeFlowNoviceMCPServer };
|