@stacksfinder/mcp-server 1.0.2 → 1.2.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 (98) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +414 -262
  3. package/dist/compatibility/index.d.ts +11 -0
  4. package/dist/compatibility/index.d.ts.map +1 -0
  5. package/dist/compatibility/index.js +13 -0
  6. package/dist/compatibility/index.js.map +1 -0
  7. package/dist/compatibility/rules.d.ts +29 -0
  8. package/dist/compatibility/rules.d.ts.map +1 -0
  9. package/dist/compatibility/rules.js +419 -0
  10. package/dist/compatibility/rules.js.map +1 -0
  11. package/dist/compatibility/scoring.d.ts +54 -0
  12. package/dist/compatibility/scoring.d.ts.map +1 -0
  13. package/dist/compatibility/scoring.js +209 -0
  14. package/dist/compatibility/scoring.js.map +1 -0
  15. package/dist/compatibility/types.d.ts +176 -0
  16. package/dist/compatibility/types.d.ts.map +1 -0
  17. package/dist/compatibility/types.js +26 -0
  18. package/dist/compatibility/types.js.map +1 -0
  19. package/dist/compatibility/utils.d.ts +82 -0
  20. package/dist/compatibility/utils.d.ts.map +1 -0
  21. package/dist/compatibility/utils.js +269 -0
  22. package/dist/compatibility/utils.js.map +1 -0
  23. package/dist/data/357/200/242/357/200/212cp H:bac_/303/240_guigui_v2stack_finderpackagesmcp-serversrcdatacompatibility_matrix.json H:bac_/303/240_guigui_v2stack_finderpackagesmcp-serverdistdata/357/200/242" +226 -0
  24. package/dist/http.d.ts +7 -0
  25. package/dist/http.d.ts.map +1 -0
  26. package/dist/http.js +69 -0
  27. package/dist/http.js.map +1 -0
  28. package/dist/lib/mcp-compatibility/index.d.ts +33 -0
  29. package/dist/lib/mcp-compatibility/index.d.ts.map +1 -0
  30. package/dist/lib/mcp-compatibility/index.js +35 -0
  31. package/dist/lib/mcp-compatibility/index.js.map +1 -0
  32. package/dist/lib/mcp-compatibility/rules.d.ts +29 -0
  33. package/dist/lib/mcp-compatibility/rules.d.ts.map +1 -0
  34. package/dist/lib/mcp-compatibility/rules.js +419 -0
  35. package/dist/lib/mcp-compatibility/rules.js.map +1 -0
  36. package/dist/lib/mcp-compatibility/scoring.d.ts +54 -0
  37. package/dist/lib/mcp-compatibility/scoring.d.ts.map +1 -0
  38. package/dist/lib/mcp-compatibility/scoring.js +209 -0
  39. package/dist/lib/mcp-compatibility/scoring.js.map +1 -0
  40. package/dist/lib/mcp-compatibility/types.d.ts +176 -0
  41. package/dist/lib/mcp-compatibility/types.d.ts.map +1 -0
  42. package/dist/lib/mcp-compatibility/types.js +26 -0
  43. package/dist/lib/mcp-compatibility/types.js.map +1 -0
  44. package/dist/lib/mcp-compatibility/utils.d.ts +82 -0
  45. package/dist/lib/mcp-compatibility/utils.d.ts.map +1 -0
  46. package/dist/lib/mcp-compatibility/utils.js +269 -0
  47. package/dist/lib/mcp-compatibility/utils.js.map +1 -0
  48. package/dist/server.d.ts.map +1 -1
  49. package/dist/server.js +404 -1
  50. package/dist/server.js.map +1 -1
  51. package/dist/tools/audit.d.ts +246 -0
  52. package/dist/tools/audit.d.ts.map +1 -0
  53. package/dist/tools/audit.js +559 -0
  54. package/dist/tools/audit.js.map +1 -0
  55. package/dist/tools/check-compatibility.d.ts +43 -0
  56. package/dist/tools/check-compatibility.d.ts.map +1 -0
  57. package/dist/tools/check-compatibility.js +133 -0
  58. package/dist/tools/check-compatibility.js.map +1 -0
  59. package/dist/tools/project-kit/analyze-repo.d.ts +50 -0
  60. package/dist/tools/project-kit/analyze-repo.d.ts.map +1 -0
  61. package/dist/tools/project-kit/analyze-repo.js +456 -0
  62. package/dist/tools/project-kit/analyze-repo.js.map +1 -0
  63. package/dist/tools/project-kit/detect-stack.d.ts +16 -0
  64. package/dist/tools/project-kit/detect-stack.d.ts.map +1 -0
  65. package/dist/tools/project-kit/detect-stack.js +572 -0
  66. package/dist/tools/project-kit/detect-stack.js.map +1 -0
  67. package/dist/tools/project-kit/execute-installation.d.ts +50 -0
  68. package/dist/tools/project-kit/execute-installation.d.ts.map +1 -0
  69. package/dist/tools/project-kit/execute-installation.js +440 -0
  70. package/dist/tools/project-kit/execute-installation.js.map +1 -0
  71. package/dist/tools/project-kit/generate.d.ts +70 -0
  72. package/dist/tools/project-kit/generate.d.ts.map +1 -0
  73. package/dist/tools/project-kit/generate.js +455 -0
  74. package/dist/tools/project-kit/generate.js.map +1 -0
  75. package/dist/tools/project-kit/index.d.ts +18 -0
  76. package/dist/tools/project-kit/index.d.ts.map +1 -0
  77. package/dist/tools/project-kit/index.js +21 -0
  78. package/dist/tools/project-kit/index.js.map +1 -0
  79. package/dist/tools/project-kit/installation-types.d.ts +147 -0
  80. package/dist/tools/project-kit/installation-types.d.ts.map +1 -0
  81. package/dist/tools/project-kit/installation-types.js +491 -0
  82. package/dist/tools/project-kit/installation-types.js.map +1 -0
  83. package/dist/tools/project-kit/match-mcps.d.ts +67 -0
  84. package/dist/tools/project-kit/match-mcps.d.ts.map +1 -0
  85. package/dist/tools/project-kit/match-mcps.js +497 -0
  86. package/dist/tools/project-kit/match-mcps.js.map +1 -0
  87. package/dist/tools/project-kit/prepare-installation.d.ts +54 -0
  88. package/dist/tools/project-kit/prepare-installation.d.ts.map +1 -0
  89. package/dist/tools/project-kit/prepare-installation.js +382 -0
  90. package/dist/tools/project-kit/prepare-installation.js.map +1 -0
  91. package/dist/tools/project-kit/types.d.ts +200 -0
  92. package/dist/tools/project-kit/types.d.ts.map +1 -0
  93. package/dist/tools/project-kit/types.js +76 -0
  94. package/dist/tools/project-kit/types.js.map +1 -0
  95. package/dist/tools/recommend.d.ts.map +1 -1
  96. package/dist/tools/recommend.js +9 -4
  97. package/dist/tools/recommend.js.map +1 -1
  98. package/package.json +8 -3
package/dist/server.js CHANGED
@@ -8,6 +8,12 @@ import { recommendStackToolDefinition, executeRecommendStack, RecommendStackInpu
8
8
  import { getBlueprintToolDefinition, executeGetBlueprint, GetBlueprintInputSchema, createBlueprintToolDefinition, executeCreateBlueprint, CreateBlueprintInputSchema } from './tools/blueprint.js';
9
9
  import { recommendStackDemoToolDefinition, executeRecommendStackDemo, RecommendStackDemoInputSchema } from './tools/recommend-demo.js';
10
10
  import { setupApiKeyToolDefinition, executeSetupApiKey, SetupApiKeyInputSchema, listApiKeysToolDefinition, executeListApiKeys, revokeApiKeyToolDefinition, executeRevokeApiKey, RevokeApiKeyInputSchema } from './tools/api-keys.js';
11
+ import { createAuditToolDefinition, executeCreateAudit, CreateAuditInputSchema, getAuditToolDefinition, executeGetAudit, GetAuditInputSchema, listAuditsToolDefinition, executeListAudits, ListAuditsInputSchema, compareAuditsToolDefinition, executeCompareAudits, CompareAuditsInputSchema, getAuditQuotaToolDefinition, executeGetAuditQuota, getMigrationRecommendationToolDefinition, executeGetMigrationRecommendation, GetMigrationRecommendationInputSchema } from './tools/audit.js';
12
+ import { generateMCPKitTool, generateMCPKit, GenerateMCPKitInputSchema, analyzeRepoMcpsTool, analyzeRepo, AnalyzeRepoMCPsInputSchema, PRIORITIES, PROJECT_TYPES, SCALES } from './tools/project-kit/index.js';
13
+ import { prepareMCPInstallationTool, prepareMCPInstallation } from './tools/project-kit/prepare-installation.js';
14
+ import { executeMCPInstallationTool, executeMCPInstallation } from './tools/project-kit/execute-installation.js';
15
+ import { PrepareMCPInstallationInputSchema, ExecuteMCPInstallationInputSchema } from './tools/project-kit/installation-types.js';
16
+ import { checkCompatibilityToolDefinition, executeCheckCompatibility, CheckCompatibilityInputSchema } from './tools/check-compatibility.js';
11
17
  import { info, debug } from './utils/logger.js';
12
18
  /**
13
19
  * Create and configure the MCP server.
@@ -248,7 +254,404 @@ export function createServer() {
248
254
  isError
249
255
  };
250
256
  });
251
- info('Registered 10 tools: list_technologies, analyze_tech, compare_techs, recommend_stack_demo, recommend_stack, get_blueprint, create_blueprint, setup_api_key, list_api_keys, revoke_api_key');
257
+ // ========================================================================
258
+ // AUDIT TOOLS (Technical Debt Analysis)
259
+ // ========================================================================
260
+ // Register create_audit tool (API-based, requires API key with audit:write)
261
+ server.registerTool(createAuditToolDefinition.name, {
262
+ title: 'Create Technical Debt Audit',
263
+ description: createAuditToolDefinition.description,
264
+ inputSchema: {
265
+ name: z.string().min(1).max(200).describe('Name for the audit report'),
266
+ technologies: z
267
+ .array(z.object({
268
+ name: z.string().min(1).describe('Technology name'),
269
+ version: z.string().optional().describe('Version string'),
270
+ category: z.string().optional().describe('Category')
271
+ }))
272
+ .min(1)
273
+ .max(50)
274
+ .describe('Technologies to audit')
275
+ }
276
+ }, async (args) => {
277
+ debug('create_audit called', args);
278
+ const input = CreateAuditInputSchema.parse(args);
279
+ const { text, isError } = await executeCreateAudit(input);
280
+ return {
281
+ content: [{ type: 'text', text }],
282
+ isError
283
+ };
284
+ });
285
+ // Register get_audit tool (API-based, requires API key with audit:read)
286
+ server.registerTool(getAuditToolDefinition.name, {
287
+ title: 'Get Audit Report',
288
+ description: getAuditToolDefinition.description,
289
+ inputSchema: {
290
+ auditId: z.string().uuid().describe('Audit report UUID')
291
+ }
292
+ }, async (args) => {
293
+ debug('get_audit called', args);
294
+ const input = GetAuditInputSchema.parse(args);
295
+ const { text, isError } = await executeGetAudit(input);
296
+ return {
297
+ content: [{ type: 'text', text }],
298
+ isError
299
+ };
300
+ });
301
+ // Register list_audits tool (API-based, requires API key with audit:read)
302
+ server.registerTool(listAuditsToolDefinition.name, {
303
+ title: 'List Audit Reports',
304
+ description: listAuditsToolDefinition.description,
305
+ inputSchema: {
306
+ limit: z.number().min(1).max(50).optional().describe('Max results'),
307
+ offset: z.number().min(0).optional().describe('Pagination offset')
308
+ }
309
+ }, async (args) => {
310
+ debug('list_audits called', args);
311
+ const input = ListAuditsInputSchema.parse(args);
312
+ const { text, isError } = await executeListAudits(input);
313
+ return {
314
+ content: [{ type: 'text', text }],
315
+ isError
316
+ };
317
+ });
318
+ // Register compare_audits tool (API-based, requires API key with audit:read)
319
+ server.registerTool(compareAuditsToolDefinition.name, {
320
+ title: 'Compare Audit Reports',
321
+ description: compareAuditsToolDefinition.description,
322
+ inputSchema: {
323
+ baseAuditId: z.string().uuid().describe('Base (older) audit ID'),
324
+ compareAuditId: z.string().uuid().describe('Compare (newer) audit ID')
325
+ }
326
+ }, async (args) => {
327
+ debug('compare_audits called', args);
328
+ const input = CompareAuditsInputSchema.parse(args);
329
+ const { text, isError } = await executeCompareAudits(input);
330
+ return {
331
+ content: [{ type: 'text', text }],
332
+ isError
333
+ };
334
+ });
335
+ // Register get_audit_quota tool (API-based, requires API key)
336
+ server.registerTool(getAuditQuotaToolDefinition.name, {
337
+ title: 'Get Audit Quota',
338
+ description: getAuditQuotaToolDefinition.description,
339
+ inputSchema: {}
340
+ }, async () => {
341
+ debug('get_audit_quota called');
342
+ const { text, isError } = await executeGetAuditQuota();
343
+ return {
344
+ content: [{ type: 'text', text }],
345
+ isError
346
+ };
347
+ });
348
+ // Register get_migration_recommendation tool (API-based, requires API key with audit:read)
349
+ server.registerTool(getMigrationRecommendationToolDefinition.name, {
350
+ title: 'Get Migration Recommendation',
351
+ description: getMigrationRecommendationToolDefinition.description,
352
+ inputSchema: {
353
+ auditId: z.string().uuid().describe('Audit report UUID to analyze for migration')
354
+ }
355
+ }, async (args) => {
356
+ debug('get_migration_recommendation called', args);
357
+ const input = GetMigrationRecommendationInputSchema.parse(args);
358
+ const { text, isError } = await executeGetMigrationRecommendation(input);
359
+ return {
360
+ content: [{ type: 'text', text }],
361
+ isError
362
+ };
363
+ });
364
+ // ========================================================================
365
+ // PROJECT-KIT TOOLS (MCPFinder)
366
+ // ========================================================================
367
+ // Register generate_mcp_kit tool (local, no API key required)
368
+ server.registerTool(generateMCPKitTool.name, {
369
+ title: 'Generate MCP Kit',
370
+ description: generateMCPKitTool.description,
371
+ inputSchema: {
372
+ projectDescription: z.string().min(50).max(5000).describe('Describe your project (50-5000 chars)'),
373
+ priorities: z.array(z.enum(PRIORITIES)).max(3).optional().describe('Top priorities (max 3)'),
374
+ constraints: z.array(z.string()).optional().describe('Tech constraints (e.g., must-use-postgresql)'),
375
+ projectType: z.enum(PROJECT_TYPES).optional().describe('Project type (if known)'),
376
+ scale: z.enum(SCALES).optional().describe('Project scale (if known)')
377
+ }
378
+ }, async (args) => {
379
+ debug('generate_mcp_kit called', args);
380
+ const input = GenerateMCPKitInputSchema.parse(args);
381
+ const result = generateMCPKit(input);
382
+ return {
383
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
384
+ };
385
+ });
386
+ // Register analyze_repo_mcps tool (local, no API key required)
387
+ server.registerTool(analyzeRepoMcpsTool.name, {
388
+ title: 'Analyze Repository MCPs',
389
+ description: analyzeRepoMcpsTool.description,
390
+ inputSchema: {
391
+ includeInstalled: z.boolean().optional().describe('Include already installed MCPs (default: false)'),
392
+ mcpConfigPath: z.string().optional().describe('Override path to MCP configuration file'),
393
+ workspaceRoot: z.string().optional().describe('Override workspace root directory (default: current directory)')
394
+ }
395
+ }, async (args) => {
396
+ debug('analyze_repo_mcps called', args);
397
+ const input = AnalyzeRepoMCPsInputSchema.parse(args);
398
+ const result = await analyzeRepo(input);
399
+ // Format as markdown for better readability
400
+ return {
401
+ content: [{ type: 'text', text: formatAnalysisResult(result) }]
402
+ };
403
+ });
404
+ // Register prepare_mcp_installation tool (local, no API key required)
405
+ server.registerTool(prepareMCPInstallationTool.name, {
406
+ title: 'Prepare MCP Installation',
407
+ description: prepareMCPInstallationTool.description,
408
+ inputSchema: {
409
+ workspaceRoot: z.string().optional().describe('Workspace root directory (default: current directory)'),
410
+ mcpConfigPath: z.string().optional().describe('Override path to existing MCP configuration file'),
411
+ includeInstalled: z.boolean().optional().describe('Include already installed MCPs in the preparation (default: false)'),
412
+ envMcpPath: z.string().optional().describe('Path where .env-mcp will be created (default: .env-mcp in workspaceRoot)')
413
+ }
414
+ }, async (args) => {
415
+ debug('prepare_mcp_installation called', args);
416
+ const input = PrepareMCPInstallationInputSchema.parse(args);
417
+ const result = await prepareMCPInstallation(input);
418
+ return {
419
+ content: [{ type: 'text', text: result.message + '\n\n' + formatPreparationSummary(result) }]
420
+ };
421
+ });
422
+ // Register execute_mcp_installation tool (local, no API key required)
423
+ server.registerTool(executeMCPInstallationTool.name, {
424
+ title: 'Execute MCP Installation',
425
+ description: executeMCPInstallationTool.description,
426
+ inputSchema: {
427
+ envMcpPath: z.string().optional().describe('Path to .env-mcp file (default: .env-mcp in current directory)'),
428
+ targetClient: z
429
+ .enum(['claude-code', 'claude-desktop', 'cursor', 'vscode', 'windsurf'])
430
+ .optional()
431
+ .describe('Target IDE/client for installation (default: claude-code)'),
432
+ dryRun: z.boolean().optional().describe('Only generate commands without marking ready to execute (default: false)')
433
+ }
434
+ }, async (args) => {
435
+ debug('execute_mcp_installation called', args);
436
+ const input = ExecuteMCPInstallationInputSchema.parse(args);
437
+ const result = await executeMCPInstallation(input);
438
+ return {
439
+ content: [{ type: 'text', text: formatExecutionResult(result) }]
440
+ };
441
+ });
442
+ // ========================================================================
443
+ // COMPATIBILITY TOOL (MCP Conflict Detection)
444
+ // ========================================================================
445
+ // Register check_mcp_compatibility tool (local, no API key required)
446
+ server.registerTool(checkCompatibilityToolDefinition.name, {
447
+ title: 'Check MCP Compatibility',
448
+ description: checkCompatibilityToolDefinition.description,
449
+ inputSchema: {
450
+ mcps: z
451
+ .array(z.string().min(1))
452
+ .min(1)
453
+ .max(20)
454
+ .describe('Array of MCP server IDs to check compatibility between')
455
+ }
456
+ }, async (args) => {
457
+ debug('check_mcp_compatibility called', args);
458
+ const input = CheckCompatibilityInputSchema.parse(args);
459
+ const { text, data, isError } = executeCheckCompatibility(input);
460
+ return {
461
+ content: [
462
+ { type: 'text', text },
463
+ { type: 'text', text: `\n---\n\n**Structured Data:**\n\`\`\`json\n${JSON.stringify(data, null, 2)}\n\`\`\`` }
464
+ ],
465
+ isError
466
+ };
467
+ });
468
+ info('Registered 21 tools: list_technologies, analyze_tech, compare_techs, recommend_stack_demo, recommend_stack, get_blueprint, create_blueprint, setup_api_key, list_api_keys, revoke_api_key, create_audit, get_audit, list_audits, compare_audits, get_audit_quota, get_migration_recommendation, generate_mcp_kit, analyze_repo_mcps, prepare_mcp_installation, execute_mcp_installation, check_mcp_compatibility');
252
469
  return server;
253
470
  }
471
+ // ============================================================================
472
+ // HELPER FUNCTIONS
473
+ // ============================================================================
474
+ /**
475
+ * Format analyze_repo_mcps result as readable markdown.
476
+ */
477
+ function formatAnalysisResult(result) {
478
+ const lines = [];
479
+ lines.push('# Repository Analysis\n');
480
+ // Detected Stack
481
+ lines.push('## Detected Technologies\n');
482
+ const stackItems = [
483
+ result.detectedStack.frontend &&
484
+ `- **Frontend**: ${result.detectedStack.frontend.name}${result.detectedStack.frontend.version ? ` (${result.detectedStack.frontend.version})` : ''}`,
485
+ result.detectedStack.backend &&
486
+ `- **Backend**: ${result.detectedStack.backend.name}${result.detectedStack.backend.version ? ` (${result.detectedStack.backend.version})` : ''}`,
487
+ result.detectedStack.database &&
488
+ `- **Database**: ${result.detectedStack.database.name}${result.detectedStack.database.version ? ` (${result.detectedStack.database.version})` : ''}`,
489
+ result.detectedStack.orm &&
490
+ `- **ORM**: ${result.detectedStack.orm.name}${result.detectedStack.orm.version ? ` (${result.detectedStack.orm.version})` : ''}`,
491
+ result.detectedStack.auth &&
492
+ `- **Auth**: ${result.detectedStack.auth.name}${result.detectedStack.auth.version ? ` (${result.detectedStack.auth.version})` : ''}`,
493
+ result.detectedStack.hosting &&
494
+ `- **Hosting**: ${result.detectedStack.hosting.name}${result.detectedStack.hosting.version ? ` (${result.detectedStack.hosting.version})` : ''}`,
495
+ result.detectedStack.payments &&
496
+ `- **Payments**: ${result.detectedStack.payments.name}${result.detectedStack.payments.version ? ` (${result.detectedStack.payments.version})` : ''}`
497
+ ].filter((item) => Boolean(item));
498
+ if (stackItems.length > 0) {
499
+ lines.push(...stackItems);
500
+ }
501
+ else {
502
+ lines.push('_No technologies detected from project files._');
503
+ }
504
+ if (result.detectedStack.services.length > 0) {
505
+ lines.push('\n**Services**:');
506
+ for (const service of result.detectedStack.services) {
507
+ lines.push(`- ${service.name}`);
508
+ }
509
+ }
510
+ lines.push('');
511
+ // Files Analyzed
512
+ lines.push('## Files Analyzed\n');
513
+ if (result.metadata.filesAnalyzed.length > 0) {
514
+ lines.push(result.metadata.filesAnalyzed.map((f) => `- \`${f}\``).join('\n'));
515
+ }
516
+ else {
517
+ lines.push('_No recognized configuration files found._');
518
+ }
519
+ lines.push('');
520
+ // Installed MCPs
521
+ if (result.installedMcps.length > 0) {
522
+ lines.push('## Already Installed MCPs\n');
523
+ lines.push(result.installedMcps.map((m) => `- ${m}`).join('\n'));
524
+ lines.push('');
525
+ }
526
+ // Recommended MCPs
527
+ lines.push('## Recommended MCPs\n');
528
+ if (result.recommendedMcps.length === 0) {
529
+ lines.push('_No additional MCPs recommended. You have everything you need!_');
530
+ }
531
+ else {
532
+ // Group by priority
533
+ const highPriority = result.recommendedMcps.filter((m) => m.priority === 'high');
534
+ const mediumPriority = result.recommendedMcps.filter((m) => m.priority === 'medium');
535
+ const lowPriority = result.recommendedMcps.filter((m) => m.priority === 'low');
536
+ if (highPriority.length > 0) {
537
+ lines.push('### High Priority\n');
538
+ for (const mcp of highPriority) {
539
+ lines.push(`**${mcp.name}** (\`${mcp.slug}\`)`);
540
+ lines.push(`- ${mcp.description}`);
541
+ lines.push(`- _Matched: ${mcp.matchedTech}_`);
542
+ lines.push('');
543
+ }
544
+ }
545
+ if (mediumPriority.length > 0) {
546
+ lines.push('### Medium Priority\n');
547
+ for (const mcp of mediumPriority) {
548
+ lines.push(`**${mcp.name}** (\`${mcp.slug}\`)`);
549
+ lines.push(`- ${mcp.description}`);
550
+ lines.push(`- _Matched: ${mcp.matchedTech}_`);
551
+ lines.push('');
552
+ }
553
+ }
554
+ if (lowPriority.length > 0) {
555
+ lines.push('### Low Priority\n');
556
+ for (const mcp of lowPriority) {
557
+ lines.push(`**${mcp.name}** (\`${mcp.slug}\`)`);
558
+ lines.push(`- ${mcp.description}`);
559
+ lines.push(`- _Matched: ${mcp.matchedTech}_`);
560
+ lines.push('');
561
+ }
562
+ }
563
+ }
564
+ // Quick Install
565
+ if (result.recommendedMcps.length > 0) {
566
+ lines.push('## Quick Install\n');
567
+ lines.push('Add to your Claude Desktop config (`claude_desktop_config.json`):\n');
568
+ lines.push('```json');
569
+ lines.push(JSON.stringify(result.installConfig.claudeDesktop, null, 2));
570
+ lines.push('```\n');
571
+ }
572
+ // Metadata
573
+ lines.push(`---\n_Analysis completed: ${result.metadata.analysisDate}_`);
574
+ return lines.join('\n');
575
+ }
576
+ /**
577
+ * Format prepare_mcp_installation result summary.
578
+ */
579
+ function formatPreparationSummary(result) {
580
+ const lines = [];
581
+ // MCPs to install grouped by priority
582
+ if (result.mcpsToInstall.length > 0) {
583
+ lines.push('## MCPs to Install\n');
584
+ const highPriority = result.mcpsToInstall.filter((m) => m.priority === 'high');
585
+ const mediumPriority = result.mcpsToInstall.filter((m) => m.priority === 'medium');
586
+ const lowPriority = result.mcpsToInstall.filter((m) => m.priority === 'low');
587
+ if (highPriority.length > 0) {
588
+ lines.push('### 🔴 High Priority');
589
+ for (const mcp of highPriority) {
590
+ const requiredVars = mcp.envVars.filter((v) => v.requirement === 'required').length;
591
+ lines.push(`- **${mcp.name}** (${requiredVars} required vars)`);
592
+ }
593
+ lines.push('');
594
+ }
595
+ if (mediumPriority.length > 0) {
596
+ lines.push('### 🟡 Medium Priority');
597
+ for (const mcp of mediumPriority) {
598
+ const requiredVars = mcp.envVars.filter((v) => v.requirement === 'required').length;
599
+ lines.push(`- **${mcp.name}** (${requiredVars} required vars)`);
600
+ }
601
+ lines.push('');
602
+ }
603
+ if (lowPriority.length > 0) {
604
+ lines.push('### 🟢 Low Priority');
605
+ for (const mcp of lowPriority) {
606
+ const requiredVars = mcp.envVars.filter((v) => v.requirement === 'required').length;
607
+ lines.push(`- **${mcp.name}** (${requiredVars} required vars)`);
608
+ }
609
+ lines.push('');
610
+ }
611
+ }
612
+ // Already installed
613
+ if (result.installedMcps.length > 0) {
614
+ lines.push('## Already Installed');
615
+ for (const mcp of result.installedMcps) {
616
+ lines.push(`- ✅ ${mcp}`);
617
+ }
618
+ lines.push('');
619
+ }
620
+ return lines.join('\n');
621
+ }
622
+ /**
623
+ * Format execute_mcp_installation result.
624
+ */
625
+ function formatExecutionResult(result) {
626
+ const lines = [];
627
+ lines.push(result.message);
628
+ lines.push('');
629
+ // Show aggregate command for Claude Code
630
+ if (result.aggregateCommand) {
631
+ lines.push('---\n');
632
+ lines.push('## Claude Code Installation\n');
633
+ lines.push('Run this command to install all ready MCPs:\n');
634
+ lines.push('```bash');
635
+ lines.push(result.aggregateCommand);
636
+ lines.push('```\n');
637
+ }
638
+ // Show JSON config for other clients
639
+ if (result.aggregateConfig && !result.aggregateCommand) {
640
+ lines.push('---\n');
641
+ lines.push('## JSON Configuration\n');
642
+ lines.push('Add this to your MCP configuration file:\n');
643
+ lines.push('```json');
644
+ lines.push(JSON.stringify(result.aggregateConfig, null, 2));
645
+ lines.push('```\n');
646
+ }
647
+ // Post-install instructions
648
+ if (result.postInstallInstructions.length > 0) {
649
+ lines.push('---\n');
650
+ lines.push('## Post-Installation\n');
651
+ for (const instruction of result.postInstallInstructions) {
652
+ lines.push(instruction);
653
+ }
654
+ }
655
+ return lines.join('\n');
656
+ }
254
657
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}