@teambit/cli-mcp-server 0.0.13 → 0.0.15

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/README.docs.mdx CHANGED
@@ -34,7 +34,7 @@ Options:
34
34
  - `-e, --extended`: Enable the full set of Bit CLI commands as MCP tools
35
35
  - `--consumer-project`: For non-Bit workspaces that only consume Bit component packages. Enables only "schema", "show", and "remote-search" tools and automatically adds the "--remote" flag to relevant commands.
36
36
  - `--include-only <commands>`: Specify a subset of commands to expose as MCP tools (comma-separated list)
37
- - `--include-additional <commands>`: Add specific commands to the default set (comma-separated list)
37
+ - `--include-additional <commands>`: Add specific commands to the available tools (comma-separated list)
38
38
  - `--exclude <commands>`: Prevent specific commands from being exposed (comma-separated list)
39
39
 
40
40
  ### Integrating with IDEs
@@ -70,7 +70,7 @@ This command automatically configures the MCP server settings in your chosen edi
70
70
  - `--extended`: Configure with extended mode enabled
71
71
  - `--consumer-project`: Configure for consumer projects
72
72
  - `--include-only <commands>`: Specify subset of commands to expose
73
- - `--include-additional <commands>`: Add specific commands to the default set
73
+ - `--include-additional <commands>`: Add specific commands to the available tools
74
74
  - `--exclude <commands>`: Prevent specific commands from being exposed
75
75
 
76
76
  #### Examples
@@ -129,34 +129,26 @@ The Bit CLI MCP Server operates in three modes and provides several specialized
129
129
 
130
130
  ### Default Mode
131
131
 
132
- In default mode, the server exposes a minimal set of essential tools focused on component discovery and creation. This ensures optimal performance and safety:
132
+ In default mode, the server exposes a minimal set of essential tools focused on core functionality. This ensures optimal performance and safety:
133
133
 
134
- - **Individual CLI Command Tools:**
134
+ - **Always Available Tools:**
135
135
 
136
- - `bit_create`: Generate components from templates
137
- - `bit_schema`: Retrieve component API schema from workspace or remote scopes
138
136
  - `bit_remote_search`: Search for components in remote scopes
139
-
140
- - **Specialized Composite Tools:**
141
-
142
137
  - `bit_workspace_info`: Get comprehensive workspace information including status, components list, apps, templates, and dependency graph
143
138
  - `bit_component_details`: Get detailed information about a specific component including basic info and optionally its public API schema
139
+ - `bit_query`: Execute read-only Bit commands that safely inspect workspace and component state without making modifications
140
+ - `bit_execute`: Execute any Bit command, including those that modify workspace or repository state (use with caution)
144
141
  - `bit_commands_list`: Get all available Bit commands with descriptions and groups (for command discovery)
145
142
  - `bit_command_help`: Get detailed help for a specific Bit command including syntax, arguments, flags, and usage examples
146
143
 
147
144
  > **Command Discovery vs. Command Help**: Use `bit_commands_list` to discover what commands are available in Bit, then use `bit_command_help` with a specific command name to get detailed usage information including arguments, flags, and examples.
148
145
 
149
- - **Generic Execution Tools:**
150
- - `bit_query`: Execute read-only Bit commands that safely inspect workspace and component state without making modifications
151
- - `bit_execute`: Execute any Bit command, including those that modify workspace or repository state (use with caution)
152
-
153
146
  ### Consumer Project Mode (--consumer-project)
154
147
 
155
148
  This mode is designed for applications or projects that are not Bit workspaces but need to consume or work with Bit components as packages. It provides a minimal set of tools focused on component discovery and information:
156
149
 
157
150
  - `bit_schema`: Retrieves component API schema from remote scopes (automatically adds `--remote` flag)
158
151
  - `bit_show`: Displays component information from remote scopes (automatically adds `--remote` flag)
159
- - `bit_remote_search`: Searches for components in remote scopes
160
152
 
161
153
  In this mode:
162
154
 
@@ -201,8 +193,8 @@ To customize the available tools beyond the default set or extended mode:
201
193
  # Include only specific tools
202
194
  bit mcp-server --include-only "status,show,tag,snap,import,export"
203
195
 
204
- # Add specific tools to the default set
205
- bit mcp-server --include-additional "build,lint,format"
196
+ # Add specific tools to the available tools
197
+ bit mcp-server --include-additional "build,lint,format,create,schema"
206
198
 
207
199
  # For consumer projects (non-Bit workspaces)
208
200
  bit mcp-server --consumer-project
@@ -34,7 +34,7 @@ Options:
34
34
  - `-e, --extended`: Enable the full set of Bit CLI commands as MCP tools
35
35
  - `--consumer-project`: For non-Bit workspaces that only consume Bit component packages. Enables only "schema", "show", and "remote-search" tools and automatically adds the "--remote" flag to relevant commands.
36
36
  - `--include-only <commands>`: Specify a subset of commands to expose as MCP tools (comma-separated list)
37
- - `--include-additional <commands>`: Add specific commands to the default set (comma-separated list)
37
+ - `--include-additional <commands>`: Add specific commands to the available tools (comma-separated list)
38
38
  - `--exclude <commands>`: Prevent specific commands from being exposed (comma-separated list)
39
39
 
40
40
  ### Integrating with IDEs
@@ -70,7 +70,7 @@ This command automatically configures the MCP server settings in your chosen edi
70
70
  - `--extended`: Configure with extended mode enabled
71
71
  - `--consumer-project`: Configure for consumer projects
72
72
  - `--include-only <commands>`: Specify subset of commands to expose
73
- - `--include-additional <commands>`: Add specific commands to the default set
73
+ - `--include-additional <commands>`: Add specific commands to the available tools
74
74
  - `--exclude <commands>`: Prevent specific commands from being exposed
75
75
 
76
76
  #### Examples
@@ -129,34 +129,26 @@ The Bit CLI MCP Server operates in three modes and provides several specialized
129
129
 
130
130
  ### Default Mode
131
131
 
132
- In default mode, the server exposes a minimal set of essential tools focused on component discovery and creation. This ensures optimal performance and safety:
132
+ In default mode, the server exposes a minimal set of essential tools focused on core functionality. This ensures optimal performance and safety:
133
133
 
134
- - **Individual CLI Command Tools:**
134
+ - **Always Available Tools:**
135
135
 
136
- - `bit_create`: Generate components from templates
137
- - `bit_schema`: Retrieve component API schema from workspace or remote scopes
138
136
  - `bit_remote_search`: Search for components in remote scopes
139
-
140
- - **Specialized Composite Tools:**
141
-
142
137
  - `bit_workspace_info`: Get comprehensive workspace information including status, components list, apps, templates, and dependency graph
143
138
  - `bit_component_details`: Get detailed information about a specific component including basic info and optionally its public API schema
139
+ - `bit_query`: Execute read-only Bit commands that safely inspect workspace and component state without making modifications
140
+ - `bit_execute`: Execute any Bit command, including those that modify workspace or repository state (use with caution)
144
141
  - `bit_commands_list`: Get all available Bit commands with descriptions and groups (for command discovery)
145
142
  - `bit_command_help`: Get detailed help for a specific Bit command including syntax, arguments, flags, and usage examples
146
143
 
147
144
  > **Command Discovery vs. Command Help**: Use `bit_commands_list` to discover what commands are available in Bit, then use `bit_command_help` with a specific command name to get detailed usage information including arguments, flags, and examples.
148
145
 
149
- - **Generic Execution Tools:**
150
- - `bit_query`: Execute read-only Bit commands that safely inspect workspace and component state without making modifications
151
- - `bit_execute`: Execute any Bit command, including those that modify workspace or repository state (use with caution)
152
-
153
146
  ### Consumer Project Mode (--consumer-project)
154
147
 
155
148
  This mode is designed for applications or projects that are not Bit workspaces but need to consume or work with Bit components as packages. It provides a minimal set of tools focused on component discovery and information:
156
149
 
157
150
  - `bit_schema`: Retrieves component API schema from remote scopes (automatically adds `--remote` flag)
158
151
  - `bit_show`: Displays component information from remote scopes (automatically adds `--remote` flag)
159
- - `bit_remote_search`: Searches for components in remote scopes
160
152
 
161
153
  In this mode:
162
154
 
@@ -201,8 +193,8 @@ To customize the available tools beyond the default set or extended mode:
201
193
  # Include only specific tools
202
194
  bit mcp-server --include-only "status,show,tag,snap,import,export"
203
195
 
204
- # Add specific tools to the default set
205
- bit mcp-server --include-additional "build,lint,format"
196
+ # Add specific tools to the available tools
197
+ bit mcp-server --include-additional "build,lint,format,create,schema"
206
198
 
207
199
  # For consumer projects (non-Bit workspaces)
208
200
  bit mcp-server --consumer-project
@@ -44,7 +44,15 @@ export declare class CliMcpServerMain {
44
44
  private buildCommandArgs;
45
45
  private getToolName;
46
46
  private registerToolForCommand;
47
- private registerToolForRemote;
47
+ /**
48
+ * Read and parse workspace.jsonc file from a given directory
49
+ */
50
+ private readWorkspaceJsonc;
51
+ /**
52
+ * Extract owner from defaultScope in workspace.jsonc
53
+ * If defaultScope contains a dot, split by dot and take the first part
54
+ */
55
+ private extractOwnerFromWorkspace;
48
56
  private registerRemoteSearchTool;
49
57
  private registerWorkspaceInfoTool;
50
58
  private registerComponentDetailsTool;
@@ -18,6 +18,13 @@ function _child_process() {
18
18
  };
19
19
  return data;
20
20
  }
21
+ function _stripAnsi() {
22
+ const data = _interopRequireDefault(require("strip-ansi"));
23
+ _stripAnsi = function () {
24
+ return data;
25
+ };
26
+ return data;
27
+ }
21
28
  function _fsExtra() {
22
29
  const data = _interopRequireDefault(require("fs-extra"));
23
30
  _fsExtra = function () {
@@ -25,6 +32,20 @@ function _fsExtra() {
25
32
  };
26
33
  return data;
27
34
  }
35
+ function _commentJson() {
36
+ const data = require("comment-json");
37
+ _commentJson = function () {
38
+ return data;
39
+ };
40
+ return data;
41
+ }
42
+ function _path() {
43
+ const data = _interopRequireDefault(require("path"));
44
+ _path = function () {
45
+ return data;
46
+ };
47
+ return data;
48
+ }
28
49
  function _cliMcpServer() {
29
50
  const data = require("./cli-mcp-server.aspect");
30
51
  _cliMcpServer = function () {
@@ -326,12 +347,10 @@ class CliMcpServerMain {
326
347
  }
327
348
  }
328
349
  async runMcpServer(options) {
329
- this.logger.debug(`[MCP-DEBUG] Starting MCP server with options: ${JSON.stringify(options)}`);
350
+ this.logger.debug(`[MCP-DEBUG] Starting MCP server with options: ${JSON.stringify(options)}. CWD: ${process.cwd()}`);
330
351
  const commands = this.cli.commands;
331
352
  const extended = Boolean(options.extended);
332
353
  this.bitBin = options.bitBin || this.bitBin;
333
- // Default set of tools to include
334
- const defaultTools = new Set(['create', 'schema', 'remote-search']);
335
354
 
336
355
  // Tools to always exclude
337
356
  const alwaysExcludeTools = new Set(['login', 'logout', 'completion', 'mcp-server', 'start', 'run-action', 'watch', 'run', 'resume-export', 'server', 'serve-preview']);
@@ -358,7 +377,7 @@ class CliMcpServerMain {
358
377
  });
359
378
 
360
379
  // Set of tools for consumer projects (non-Bit workspaces)
361
- const consumerProjectTools = new Set(['schema', 'show', 'remote-search']);
380
+ const consumerProjectTools = new Set(['schema', 'show']);
362
381
  const consumerProject = Boolean(options.consumerProject);
363
382
 
364
383
  // Store consumer project mode globally in the class
@@ -366,7 +385,7 @@ class CliMcpServerMain {
366
385
 
367
386
  // Validate flags combination
368
387
  if (consumerProject) {
369
- this.logger.debug(`[MCP-DEBUG] Running MCP server in consumer project mode (for non-Bit workspaces) with tools: ${Array.from(consumerProjectTools).join(', ')}`);
388
+ this.logger.debug(`[MCP-DEBUG] Running MCP server in consumer project mode (for non-Bit workspaces) with tools: ${Array.from(consumerProjectTools).join(', ')} + remote-search (always available)`);
370
389
  if (options.includeAdditional) {
371
390
  this.logger.debug(`[MCP-DEBUG] Additional tools enabled in consumer project mode: ${options.includeAdditional}`);
372
391
  }
@@ -375,7 +394,6 @@ class CliMcpServerMain {
375
394
  }
376
395
  }
377
396
  const filterOptions = {
378
- defaultTools,
379
397
  additionalCommandsSet,
380
398
  userExcludeSet,
381
399
  alwaysExcludeTools,
@@ -396,12 +414,9 @@ class CliMcpServerMain {
396
414
  this.processSubCommands(server, cmd, filterOptions);
397
415
  }
398
416
  });
399
- const remoteCommands = ['remote-search'];
400
- remoteCommands.forEach(cmdName => {
401
- if (this.shouldIncludeCommand(cmdName, filterOptions)) {
402
- this.registerToolForRemote(server, cmdName);
403
- }
404
- });
417
+
418
+ // Always register remote-search tool
419
+ this.registerRemoteSearchTool(server);
405
420
 
406
421
  // Register the bit_workspace_info tool
407
422
  this.registerWorkspaceInfoTool(server);
@@ -447,8 +462,8 @@ class CliMcpServerMain {
447
462
  return shouldInclude;
448
463
  }
449
464
 
450
- // Default mode: include default tools + any additional specified
451
- return options.defaultTools.has(cmdName) || (options.additionalCommandsSet?.has(cmdName) ?? false);
465
+ // Default mode: only include additional specified commands (no default tools anymore)
466
+ return options.additionalCommandsSet?.has(cmdName) ?? false;
452
467
  }
453
468
  buildZodSchema(config) {
454
469
  const schema = {
@@ -541,20 +556,88 @@ class CliMcpServerMain {
541
556
  return this.runBit(argsToRun, params.cwd);
542
557
  });
543
558
  }
544
- registerToolForRemote(server, name) {
545
- if (name === 'remote-search') {
546
- this.registerRemoteSearchTool(server);
559
+
560
+ /**
561
+ * Read and parse workspace.jsonc file from a given directory
562
+ */
563
+ async readWorkspaceJsonc(workspaceDir) {
564
+ try {
565
+ const workspaceJsoncPath = _path().default.join(workspaceDir, 'workspace.jsonc');
566
+ const fileExists = await _fsExtra().default.pathExists(workspaceJsoncPath);
567
+ if (!fileExists) {
568
+ this.logger.debug(`[MCP-DEBUG] workspace.jsonc not found at ${workspaceJsoncPath}`);
569
+ return null;
570
+ }
571
+ const content = await _fsExtra().default.readFile(workspaceJsoncPath, 'utf-8');
572
+ return (0, _commentJson().parse)(content);
573
+ } catch (error) {
574
+ this.logger.debug(`[MCP-DEBUG] Failed to read workspace.jsonc: ${error}`);
575
+ return null;
576
+ }
577
+ }
578
+
579
+ /**
580
+ * Extract owner from defaultScope in workspace.jsonc
581
+ * If defaultScope contains a dot, split by dot and take the first part
582
+ */
583
+ extractOwnerFromWorkspace(workspaceConfig) {
584
+ try {
585
+ const workspaceSection = workspaceConfig?.['teambit.workspace/workspace'];
586
+ const defaultScope = workspaceSection?.defaultScope;
587
+ if (!defaultScope || typeof defaultScope !== 'string') {
588
+ return null;
589
+ }
590
+
591
+ // If defaultScope contains a dot, split by dot and take the first part (owner)
592
+ if (defaultScope.includes('.')) {
593
+ const parts = defaultScope.split('.');
594
+ return parts[0];
595
+ }
596
+
597
+ // If no dot, the entire defaultScope is treated as the owner
598
+ return defaultScope;
599
+ } catch (error) {
600
+ this.logger.debug(`[MCP-DEBUG] Failed to extract owner from workspace config: ${error}`);
601
+ return null;
547
602
  }
548
603
  }
549
604
  registerRemoteSearchTool(server) {
550
- const toolName = this.getToolName('remote-search');
551
- const description = 'Search for components in remote scopes';
605
+ const toolName = 'bit_remote_search';
606
+ const description = `Search for components in remote scopes. Use this tool to find existing components before creating new ones. Essential for component reuse and discovery`;
552
607
  const schema = {
553
- queryStr: _zod().z.string().describe('Search query string')
608
+ queryStr: _zod().z.string().describe(`Search query string - Don't try to search with too many keywords. It will try to find components that match all keywords, which is often too restrictive. Instead, search with a single keyword or a few broad keywords`),
609
+ cwd: _zod().z.string().optional().describe('Path to workspace directory'),
610
+ owners: _zod().z.array(_zod().z.string()).optional().describe('Filter results by specific owners or organizations. AVOID using this parameter - let the system automatically extract the owner from workspace.jsonc defaultScope for better relevance. Only use when you need to override the automatic behavior or search across different owners'),
611
+ skipAutoOwner: _zod().z.boolean().optional().describe('Set to true to disable automatic owner extraction from workspace.jsonc. When false or omitted, the system will try to automatically extract owner from workspace defaultScope')
554
612
  };
555
613
  server.tool(toolName, description, schema, async params => {
556
614
  const http = await this.getHttp();
557
- const results = await http.search(params.queryStr);
615
+
616
+ // Determine the owners to use for the search
617
+ let ownersToUse = params.owners && params.owners.length > 0 ? params.owners : undefined;
618
+
619
+ // If owners not explicitly provided and skipAutoOwner is not true, try to extract from workspace.jsonc
620
+ if (!ownersToUse && !params.skipAutoOwner) {
621
+ try {
622
+ // Use provided cwd parameter or fall back to current working directory
623
+ const workspaceDir = params.cwd || process.cwd();
624
+ this.logger.debug(`[MCP-DEBUG] Attempting to auto-extract owner from workspace.jsonc in: ${workspaceDir}`);
625
+ const workspaceConfig = await this.readWorkspaceJsonc(workspaceDir);
626
+ if (workspaceConfig) {
627
+ const extractedOwner = this.extractOwnerFromWorkspace(workspaceConfig);
628
+ if (extractedOwner) {
629
+ ownersToUse = [extractedOwner];
630
+ this.logger.debug(`[MCP-DEBUG] Auto-extracted owner from workspace.jsonc: ${extractedOwner}`);
631
+ }
632
+ }
633
+ } catch (error) {
634
+ this.logger.debug(`[MCP-DEBUG] Failed to auto-extract owner: ${error}`);
635
+ // Continue without auto-extracted owner
636
+ }
637
+ } else {
638
+ this.logger.debug(`[MCP-DEBUG] Using provided owners for search: ${ownersToUse ? ownersToUse.join(', ') : 'none'}`);
639
+ }
640
+ const results = await http.search(params.queryStr, ownersToUse);
558
641
  this.logger.debug(`[MCP-DEBUG] Search results: ${JSON.stringify(results)}`);
559
642
  if (!results?.components || results.components.length === 0) {
560
643
  return {
@@ -564,64 +647,49 @@ class CliMcpServerMain {
564
647
  }]
565
648
  };
566
649
  }
567
- const formattedResults = results.components.map(result => ({
650
+ const formattedResults = {
568
651
  type: 'text',
569
- text: result
570
- }));
652
+ text: results.components.join('\n')
653
+ };
571
654
  return {
572
- content: formattedResults
655
+ content: [formattedResults]
573
656
  };
574
657
  });
575
658
  }
576
659
  registerWorkspaceInfoTool(server) {
577
660
  const toolName = 'bit_workspace_info';
578
- const description = 'Get comprehensive workspace information including status, components list, apps, templates, and dependency graph';
661
+ const description = 'Get comprehensive workspace information including status, components list, apps, templates, dependency graph, and workspace dependencies';
579
662
  const schema = {
580
663
  cwd: _zod().z.string().describe('Path to workspace directory'),
581
- includeStatus: _zod().z.boolean().optional().describe('Include workspace status (default: true)'),
582
- includeList: _zod().z.boolean().optional().describe('Include components list (default: true)'),
583
- includeApps: _zod().z.boolean().optional().describe('Include apps list (default: false)'),
584
664
  includeTemplates: _zod().z.boolean().optional().describe('Include templates list (default: false)'),
585
- includeGraph: _zod().z.boolean().optional().describe('Include dependency graph (default: false)')
665
+ includeApps: _zod().z.boolean().optional().describe('Include apps list (default: false)'),
666
+ includeGraph: _zod().z.boolean().optional().describe('Include dependency graph (default: false)'),
667
+ json: _zod().z.boolean().optional().describe('Return output in JSON format - WARNING: This produces verbose output and should be used when structured data is specifically needed (default: false)')
586
668
  };
587
669
  server.tool(toolName, description, schema, async params => {
588
670
  try {
589
- const includeStatus = params.includeStatus !== false; // Default to true
590
- const includeList = params.includeList !== false; // Default to true
671
+ const includeTemplates = params.includeTemplates === true; // default: false
591
672
  const includeApps = params.includeApps === true;
592
- const includeTemplates = params.includeTemplates === true;
593
673
  const includeGraph = params.includeGraph === true;
674
+ const useJson = params.json === true;
594
675
  const workspaceInfo = {};
595
-
596
- // Get workspace status using bit-server API with error handling
597
- if (includeStatus) {
598
- const statusExecution = await this.safeBitCommandExecution('status', [], {
599
- json: true
600
- }, params.cwd, 'get workspace status', true);
601
- workspaceInfo.status = statusExecution.result;
602
- }
603
-
604
- // Get components list if requested
605
- if (includeList) {
606
- const listExecution = await this.safeBitCommandExecution('list', [], {
607
- json: true
608
- }, params.cwd, 'get components list', true);
609
- workspaceInfo.list = listExecution.result;
610
- }
676
+ const flags = useJson ? {
677
+ json: true
678
+ } : {};
679
+ const statusExecution = await this.safeBitCommandExecution('status', [], flags, params.cwd, 'get workspace status', true);
680
+ workspaceInfo.status = statusExecution.result;
681
+ const listExecution = await this.safeBitCommandExecution('list', [], flags, params.cwd, 'get components list', true);
682
+ workspaceInfo.list = listExecution.result;
611
683
 
612
684
  // Get apps list if requested
613
685
  if (includeApps) {
614
- const appsExecution = await this.safeBitCommandExecution('app', ['list'], {
615
- json: true
616
- }, params.cwd, 'get apps list', true);
686
+ const appsExecution = await this.safeBitCommandExecution('app', ['list'], flags, params.cwd, 'get apps list', true);
617
687
  workspaceInfo.apps = appsExecution.result;
618
688
  }
619
689
 
620
690
  // Get templates list if requested
621
691
  if (includeTemplates) {
622
- const templatesExecution = await this.safeBitCommandExecution('templates', [], {
623
- json: true
624
- }, params.cwd, 'get templates list', true);
692
+ const templatesExecution = await this.safeBitCommandExecution('templates', [], flags, params.cwd, 'get templates list', true);
625
693
  workspaceInfo.templates = templatesExecution.result;
626
694
  }
627
695
 
@@ -632,6 +700,17 @@ class CliMcpServerMain {
632
700
  }, params.cwd, 'get dependency graph', true);
633
701
  workspaceInfo.graph = graphExecution.result;
634
702
  }
703
+
704
+ // Get workspace dependencies if requested
705
+ try {
706
+ const workspaceDependencies = await this.callBitServerIDEAPI('getWorkspaceDependencies', [], params.cwd);
707
+ workspaceInfo.workspaceDependencies = workspaceDependencies;
708
+ } catch (error) {
709
+ this.logger.error(`[MCP-DEBUG] Error getting workspace dependencies: ${error.message}`);
710
+ workspaceInfo.workspaceDependencies = {
711
+ error: `Failed to get workspace dependencies: ${error.message}`
712
+ };
713
+ }
635
714
  return this.formatAsCallToolResult(workspaceInfo);
636
715
  } catch (error) {
637
716
  this.logger.error(`[MCP-DEBUG] Error in bit_workspace_info tool: ${error.message}`);
@@ -691,21 +770,18 @@ class CliMcpServerMain {
691
770
  const groupKey = cmd.group;
692
771
  const commandInfo = {
693
772
  name: mainCmdName,
694
- description: cmd.description || '',
695
- alias: cmd.alias || ''
773
+ description: cmd.description || ''
696
774
  };
697
775
  if (extendedDescription && cmd.extendedDescription) {
698
776
  commandInfo.extendedDescription = cmd.extendedDescription;
699
777
  }
700
778
  if (groupKey) commandInfo.group = this.cli.groups[groupKey] || groupKey;
701
- if (cmd.helpUrl) commandInfo.helpUrl = cmd.helpUrl;
702
779
 
703
780
  // Add subcommands summary
704
781
  if (cmd.commands && cmd.commands.length > 0) {
705
782
  commandInfo.subcommands = cmd.commands.filter(subCmd => !shouldSkipCommand(subCmd)).map(subCmd => ({
706
783
  name: (0, _cli().getCommandName)(subCmd),
707
- description: subCmd.description || '',
708
- alias: subCmd.alias || ''
784
+ description: subCmd.description || ''
709
785
  }));
710
786
  }
711
787
  commandsInfo.push(commandInfo);
@@ -743,10 +819,7 @@ class CliMcpServerMain {
743
819
  name: cmdName,
744
820
  description: cmd.description || '',
745
821
  extendedDescription: cmd.extendedDescription || '',
746
- alias: cmd.alias || '',
747
- group: cmd.group ? this.cli.groups[cmd.group] || cmd.group : '',
748
- helpUrl: cmd.helpUrl || '',
749
- private: cmd.private || false
822
+ group: cmd.group ? this.cli.groups[cmd.group] || cmd.group : ''
750
823
  };
751
824
 
752
825
  // Add arguments information
@@ -772,8 +845,7 @@ class CliMcpServerMain {
772
845
  if (cmd.commands && cmd.commands.length > 0) {
773
846
  info.subcommands = cmd.commands.map(subCmd => ({
774
847
  name: (0, _cli().getCommandName)(subCmd),
775
- description: subCmd.description || '',
776
- alias: subCmd.alias || ''
848
+ description: subCmd.description || ''
777
849
  }));
778
850
  }
779
851
  return info;
@@ -987,7 +1059,18 @@ class CliMcpServerMain {
987
1059
  */
988
1060
  async safeBitCommandExecution(command, args = [], flags = {}, cwd, operationName, includeErrorInResult = false) {
989
1061
  try {
990
- const result = await this.executeBitServerCommand(command, args, flags, cwd, operationName);
1062
+ let result = await this.executeBitServerCommand(command, args, flags, cwd, operationName);
1063
+
1064
+ // Unwrap the result from data wrapper if it exists and we have a successful result
1065
+ if (result && typeof result === 'object' && 'data' in result && result.data !== undefined) {
1066
+ result = result.data;
1067
+ }
1068
+
1069
+ // Clean up output by removing ANSI color codes when not using JSON format
1070
+ const useJson = flags && flags.json === true;
1071
+ if (!useJson && typeof result === 'string') {
1072
+ result = (0, _stripAnsi().default)(result);
1073
+ }
991
1074
  return {
992
1075
  success: true,
993
1076
  result
@@ -1 +1 @@
1
- {"version":3,"names":["_cli","data","require","_child_process","_interopRequireDefault","_fsExtra","_cliMcpServer","_mcpServer","_mcp","_stdio","_zod","_logger","_scope","_legacy","_nodeFetch","_setupCmd","_setupUtils","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","CliMcpServerMain","constructor","cli","logger","Set","getHttp","_http","Http","connect","SYMPHONY_GRAPHQL","CENTRAL_BIT_HUB_NAME","getBitServerPort","cwd","skipValidatePortFlag","existingPort","childProcess","execSync","bitBin","env","process","BIT_CLI_SERVER","toString","trim","undefined","parseInt","err","error","message","startBitServer","debug","Promise","resolve","reject","serverProcess","spawn","stdio","detached","serverStarted","outputBuffer","timeout","setTimeout","kill","stdout","on","output","includes","clearTimeout","portMatch","match","port","serverPort","serverUrl","stderr","code","signal","killServerProcess","killed","exit","callBitServerAPI","command","args","flags","isReTrying","callBitServerAPIWithRoute","callBitServerIDEAPI","method","route","commandOrMethod","argsOrParams","isIDERoute","Error","startedPort","realCwd","fs","realpathSync","body","url","commandArray","key","entries","pwd","response","fetch","headers","JSON","stringify","ok","errorMessage","status","statusText","errorJson","json","runMcpServer","options","commands","extended","Boolean","defaultTools","alwaysExcludeTools","includeOnlySet","includeOnly","split","map","cmd","Array","from","join","additionalCommandsSet","includeAdditional","userExcludeSet","exclude","server","McpServer","name","version","consumerProjectTools","consumerProject","isConsumerProjectMode","warn","filterOptions","cmdName","getCommandName","shouldIncludeCommand","registerToolForCommand","processSubCommands","remoteCommands","registerToolForRemote","registerWorkspaceInfoTool","registerComponentDetailsTool","registerCommandsListTool","registerCommandHelpTool","registerQueryTool","registerExecuteTool","StdioServerTransport","has","shouldInclude","buildZodSchema","config","schema","z","string","describe","argsData","arg","desc","description","nameRaw","isArray","nameCamelCase","required","array","optional","flagsData","flag","type","boolean","buildCommandArgs","params","val","item","stringValue","getToolName","replace","parentCmd","toolName","extendedDescription","getArgsData","getFlagsData","tool","argsToRun","runBit","registerRemoteSearchTool","queryStr","http","results","search","components","content","text","formattedResults","result","includeStatus","includeList","includeApps","includeTemplates","includeGraph","workspaceInfo","statusExecution","safeBitCommandExecution","listExecution","list","appsExecution","apps","templatesExecution","templates","graphExecution","graph","formatAsCallToolResult","formatErrorAsCallToolResult","componentName","includeSchema","ideApiResult","componentDetails","show","internal","commandsInfo","shouldSkipCommand","private","startsWith","mainCmdName","groupKey","group","commandInfo","alias","groups","helpUrl","subcommands","subCmd","sort","a","b","localeCompare","total","subcommand","requestedCommand","requestedSubcommand","buildDetailedCommandInfo","parentName","info","examples","find","sub","commandFullName","record","union","fullCommand","isAllowed","readOnlyCommands","allowedCommands","commandArgs","commandParts","parentCmdName","subCmdName","fullCmdName","cmdOutput","executeBitServerCommand","operationName","operation","includeErrorInResult","success","getEditorDisplayName","editor","McpSetupUtils","setupEditor","workspaceDir","supportedEditors","editorLower","toLowerCase","setupOptions","setupVSCode","setupCursor","setupWindsurf","provider","loggerMain","createLogger","CliMcpServerAspect","id","mcpServer","mcpServerCmd","McpServerCmd","McpStartCmd","McpSetupCmd","register","exports","CLIAspect","LoggerAspect","MainRuntime","addRuntime","_default"],"sources":["cli-mcp-server.main.runtime.ts"],"sourcesContent":["/* eslint-disable import/extensions */\n/* eslint-disable import/no-unresolved */\n\nimport { CLIAspect, CLIMain, Command, getArgsData, getCommandName, getFlagsData, MainRuntime } from '@teambit/cli';\nimport childProcess from 'child_process';\nimport fs from 'fs-extra';\nimport { CliMcpServerAspect } from './cli-mcp-server.aspect';\nimport { McpServerCmd, McpStartCmd } from './mcp-server.cmd';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport { z } from 'zod';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { Http } from '@teambit/scope.network';\nimport { CENTRAL_BIT_HUB_NAME, SYMPHONY_GRAPHQL } from '@teambit/legacy.constants';\nimport fetch from 'node-fetch';\nimport { McpSetupCmd } from './setup-cmd';\nimport { McpSetupUtils, SetupOptions } from './setup-utils';\n\ninterface CommandFilterOptions {\n defaultTools: Set<string>;\n additionalCommandsSet?: Set<string>;\n userExcludeSet?: Set<string>;\n alwaysExcludeTools: Set<string>;\n extended: boolean;\n includeOnlySet?: Set<string>;\n consumerProject: boolean;\n consumerProjectTools: Set<string>;\n}\n\ninterface CommandConfig {\n name: string;\n description: string;\n argsData: ReturnType<typeof getArgsData>;\n flagsData: ReturnType<typeof getFlagsData>;\n}\n\nexport class CliMcpServerMain {\n private bitBin = 'bit';\n private _http: Http;\n private isConsumerProjectMode: boolean = false;\n private serverPort?: number;\n private serverUrl?: string;\n private serverProcess: childProcess.ChildProcess | null = null;\n\n // Whitelist of commands that are considered read-only/query operations\n private readonly readOnlyCommands = new Set([\n 'status',\n 'list',\n 'info',\n 'show',\n 'schema',\n 'artifacts',\n 'diff',\n 'log',\n 'graph',\n 'deps get',\n 'deps blame',\n 'why',\n 'config get',\n 'envs list',\n 'envs get',\n 'remote list',\n 'templates',\n 'cat-component',\n 'cat-lane',\n 'cat-object',\n 'cat-scope',\n 'lane show',\n 'lane list',\n 'lane diff',\n 'lane history',\n 'lane history-diff',\n 'test',\n 'help',\n 'version',\n ]);\n\n constructor(\n private cli: CLIMain,\n private logger: Logger\n ) {}\n\n async getHttp(): Promise<Http> {\n if (!this._http) {\n this._http = await Http.connect(SYMPHONY_GRAPHQL, CENTRAL_BIT_HUB_NAME);\n }\n return this._http;\n }\n\n private async getBitServerPort(cwd: string, skipValidatePortFlag = false): Promise<number | undefined> {\n try {\n const existingPort = childProcess\n .execSync(`${this.bitBin} cli-server-port ${skipValidatePortFlag}`, {\n cwd,\n env: { ...process.env, BIT_CLI_SERVER: 'true' },\n })\n .toString()\n .trim();\n if (!existingPort) return undefined;\n return parseInt(existingPort, 10);\n } catch (err: any) {\n this.logger.error(`[MCP-DEBUG] error getting existing port from bit server at ${cwd}. err: ${err.message}`);\n return undefined;\n }\n }\n\n /**\n * Start a new bit-server process\n */\n private async startBitServer(cwd: string): Promise<number | null> {\n this.logger.debug('[MCP-DEBUG] Starting new bit-server process');\n\n return new Promise((resolve, reject) => {\n try {\n const serverProcess = childProcess.spawn(this.bitBin, ['server'], {\n cwd,\n stdio: ['pipe', 'pipe', 'pipe'],\n detached: false,\n });\n\n this.serverProcess = serverProcess;\n\n let serverStarted = false;\n let outputBuffer = '';\n\n const timeout = setTimeout(() => {\n if (!serverStarted) {\n this.logger.error('[MCP-DEBUG] Timeout waiting for bit-server to start');\n serverProcess.kill();\n resolve(null);\n }\n }, 30000); // 30 second timeout\n\n serverProcess.stdout?.on('data', (data) => {\n const output = data.toString();\n outputBuffer += output;\n this.logger.debug(`[MCP-DEBUG] bit-server stdout: ${output}`);\n if (output.includes('listening on port')) {\n clearTimeout(timeout);\n if (!serverStarted) {\n serverStarted = true;\n // Extract the port from the output\n const portMatch = output.match(/listening on port (\\d+)/);\n if (portMatch && portMatch[1]) {\n const port = parseInt(portMatch[1], 10);\n this.logger.debug(`[MCP-DEBUG] bit-server started on port ${port}`);\n this.serverPort = port;\n this.serverUrl = `http://localhost:${port}/api`;\n resolve(port);\n }\n }\n }\n });\n\n serverProcess.stderr?.on('data', (data) => {\n const error = data.toString();\n outputBuffer += error;\n this.logger.debug(`[MCP-DEBUG] bit-server stderr: ${error}`);\n });\n\n serverProcess.on('error', (err) => {\n clearTimeout(timeout);\n this.logger.error(`[MCP-DEBUG] Failed to start bit-server: ${err.message}`);\n reject(err);\n });\n\n serverProcess.on('exit', (code, signal) => {\n clearTimeout(timeout);\n if (!serverStarted) {\n this.logger.error(`[MCP-DEBUG] bit-server exited with code ${code}, signal ${signal}`);\n this.logger.debug(`[MCP-DEBUG] bit-server output: ${outputBuffer}`);\n resolve(null);\n }\n });\n\n const killServerProcess = () => {\n if (this.serverProcess && !this.serverProcess.killed) {\n this.logger.debug('[MCP-DEBUG] Killing bit-server process');\n this.serverProcess.kill();\n }\n };\n\n // Handle process cleanup\n process.on('exit', () => {\n killServerProcess();\n });\n\n process.on('SIGINT', () => {\n killServerProcess();\n process.exit();\n });\n\n process.on('SIGTERM', () => {\n killServerProcess();\n process.exit();\n });\n } catch (err) {\n this.logger.error(`[MCP-DEBUG] Error spawning bit-server: ${(err as Error).message}`);\n reject(err);\n }\n });\n }\n\n /**\n * Call bit-server API endpoint using cli-raw route\n */\n private async callBitServerAPI(\n command: string,\n args: string[] = [],\n flags: Record<string, any> = {},\n cwd: string,\n isReTrying = false\n ): Promise<any> {\n return this.callBitServerAPIWithRoute('cli-raw', command, args, flags, cwd, isReTrying);\n }\n\n /**\n * Call bit-server API endpoint using IDE route\n */\n private async callBitServerIDEAPI(method: string, args: any[] = [], cwd: string, isReTrying = false): Promise<any> {\n return this.callBitServerAPIWithRoute('ide', method, args, {}, cwd, isReTrying, true);\n }\n\n /**\n * Generic method to call bit-server API with different routes\n */\n private async callBitServerAPIWithRoute(\n route: string,\n commandOrMethod: string,\n argsOrParams: any[] = [],\n flags: Record<string, any> = {},\n cwd: string,\n isReTrying = false,\n isIDERoute = false\n ): Promise<any> {\n if (!this.serverPort) {\n if (!cwd) throw new Error('CWD is required to call bit-server API');\n this.serverPort = await this.getBitServerPort(cwd);\n if (this.serverPort) {\n this.serverUrl = `http://localhost:${this.serverPort}/api`;\n } else {\n // No server running, try to start one\n this.logger.debug('[MCP-DEBUG] No bit-server found, attempting to start one');\n const startedPort = await this.startBitServer(cwd);\n if (startedPort) {\n this.serverPort = startedPort;\n this.serverUrl = `http://localhost:${this.serverPort}/api`;\n }\n }\n }\n\n if (!this.serverUrl) {\n throw new Error('Unable to connect to bit-server. Please ensure you are in a valid Bit workspace.');\n }\n\n // Resolve the real path to handle symlinks (e.g., /tmp -> /private/tmp on macOS)\n const realCwd = fs.realpathSync(cwd);\n\n let body: any;\n let url: string;\n\n if (isIDERoute) {\n // For IDE route, use the method name and args directly\n body = {\n args: argsOrParams,\n };\n url = `${this.serverUrl}/${route}/${commandOrMethod}`;\n } else {\n // For CLI route, build command array with flags\n const commandArray = [commandOrMethod, ...argsOrParams];\n\n // Convert flags to command line arguments\n for (const [key, value] of Object.entries(flags)) {\n if (value === true) {\n commandArray.push(`--${key}`);\n } else if (value !== false && value !== undefined) {\n commandArray.push(`--${key}`, String(value));\n }\n }\n\n body = {\n command: commandArray,\n pwd: realCwd,\n };\n url = `${this.serverUrl}/${route}`;\n }\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n let errorMessage = `HTTP ${response.status}: ${response.statusText}`;\n try {\n const errorJson = await response.json();\n errorMessage = errorJson.message || errorMessage;\n } catch {\n // Ignore JSON parse errors\n }\n throw new Error(errorMessage);\n }\n\n return await response.json();\n } catch (err: any) {\n if (err.code === 'ECONNREFUSED' && !isReTrying) {\n // Server is no longer running, reset cached values and try to restart\n this.serverPort = undefined;\n this.serverUrl = undefined;\n this.logger.debug('[MCP-DEBUG] Connection refused, attempting to restart bit-server');\n return this.callBitServerAPIWithRoute(route, commandOrMethod, argsOrParams, flags, cwd, true, isIDERoute);\n }\n throw err;\n }\n }\n\n async runMcpServer(options: {\n extended?: boolean;\n includeOnly?: string;\n includeAdditional?: string;\n exclude?: string;\n bitBin?: string;\n consumerProject?: boolean;\n }) {\n this.logger.debug(`[MCP-DEBUG] Starting MCP server with options: ${JSON.stringify(options)}`);\n const commands = this.cli.commands;\n const extended = Boolean(options.extended);\n this.bitBin = options.bitBin || this.bitBin;\n // Default set of tools to include\n const defaultTools = new Set(['create', 'schema', 'remote-search']);\n\n // Tools to always exclude\n const alwaysExcludeTools = new Set([\n 'login',\n 'logout',\n 'completion',\n 'mcp-server',\n 'start',\n 'run-action',\n 'watch',\n 'run',\n 'resume-export',\n 'server',\n 'serve-preview',\n ]);\n\n // Parse command strings from flag options\n let includeOnlySet: Set<string> | undefined;\n if (options.includeOnly) {\n includeOnlySet = new Set(options.includeOnly.split(',').map((cmd) => cmd.trim()));\n this.logger.debug(`[MCP-DEBUG] Including only commands: ${Array.from(includeOnlySet).join(', ')}`);\n }\n\n let additionalCommandsSet: Set<string> | undefined;\n if (options.includeAdditional) {\n additionalCommandsSet = new Set(options.includeAdditional.split(',').map((cmd) => cmd.trim()));\n this.logger.debug(`[MCP-DEBUG] Including additional commands: ${Array.from(additionalCommandsSet).join(', ')}`);\n }\n\n let userExcludeSet: Set<string> | undefined;\n if (options.exclude) {\n userExcludeSet = new Set(options.exclude.split(',').map((cmd) => cmd.trim()));\n this.logger.debug(`[MCP-DEBUG] Excluding commands: ${Array.from(userExcludeSet).join(', ')}`);\n }\n\n const server = new McpServer({\n name: 'bit-cli-mcp',\n version: '0.0.1',\n });\n\n // Set of tools for consumer projects (non-Bit workspaces)\n const consumerProjectTools = new Set(['schema', 'show', 'remote-search']);\n\n const consumerProject = Boolean(options.consumerProject);\n\n // Store consumer project mode globally in the class\n this.isConsumerProjectMode = consumerProject;\n\n // Validate flags combination\n if (consumerProject) {\n this.logger.debug(\n `[MCP-DEBUG] Running MCP server in consumer project mode (for non-Bit workspaces) with tools: ${Array.from(consumerProjectTools).join(', ')}`\n );\n if (options.includeAdditional) {\n this.logger.debug(\n `[MCP-DEBUG] Additional tools enabled in consumer project mode: ${options.includeAdditional}`\n );\n }\n if (extended) {\n this.logger.warn(\n '[MCP-DEBUG] Warning: --consumer-project and --extended flags were both provided. The --extended flag will be ignored.'\n );\n }\n }\n\n const filterOptions: CommandFilterOptions = {\n defaultTools,\n additionalCommandsSet,\n userExcludeSet,\n alwaysExcludeTools,\n extended: consumerProject ? false : extended, // Ignore extended when consumerProject is true\n includeOnlySet,\n consumerProject,\n consumerProjectTools,\n };\n\n commands.forEach((cmd) => {\n const cmdName = getCommandName(cmd);\n\n if (this.shouldIncludeCommand(cmdName, filterOptions)) {\n this.registerToolForCommand(server, cmd);\n }\n\n // Process sub-commands\n if (cmd.commands && cmd.commands.length) {\n this.processSubCommands(server, cmd, filterOptions);\n }\n });\n\n const remoteCommands = ['remote-search'];\n remoteCommands.forEach((cmdName) => {\n if (this.shouldIncludeCommand(cmdName, filterOptions)) {\n this.registerToolForRemote(server, cmdName);\n }\n });\n\n // Register the bit_workspace_info tool\n this.registerWorkspaceInfoTool(server);\n\n // Register the bit_component_details tool\n this.registerComponentDetailsTool(server);\n\n // Register command discovery and help tools\n this.registerCommandsListTool(server);\n this.registerCommandHelpTool(server);\n\n this.registerQueryTool(server);\n this.registerExecuteTool(server);\n\n await server.connect(new StdioServerTransport());\n }\n\n private shouldIncludeCommand(cmdName: string, options: CommandFilterOptions): boolean {\n // Always exclude certain commands\n if (options.alwaysExcludeTools.has(cmdName)) return false;\n\n // User-specified exclude takes precedence\n if (options.userExcludeSet?.has(cmdName)) {\n this.logger.debug(`[MCP-DEBUG] Excluding command due to --exclude flag: ${cmdName}`);\n return false;\n }\n\n // If includeOnly is specified, only include those specific commands\n if (options.includeOnlySet) {\n const shouldInclude = options.includeOnlySet.has(cmdName);\n if (shouldInclude) {\n this.logger.debug(`[MCP-DEBUG] Including command due to --include-only flag: ${cmdName}`);\n }\n return shouldInclude;\n }\n\n // Extended mode includes all commands except excluded ones\n if (options.extended) return true;\n\n // Consumer project mode: only include consumer project tools + any additional specified\n if (options.consumerProject) {\n const shouldInclude =\n options.consumerProjectTools.has(cmdName) || (options.additionalCommandsSet?.has(cmdName) ?? false);\n if (shouldInclude) {\n this.logger.debug(`[MCP-DEBUG] Including command in consumer project mode: ${cmdName}`);\n }\n return shouldInclude;\n }\n\n // Default mode: include default tools + any additional specified\n return options.defaultTools.has(cmdName) || (options.additionalCommandsSet?.has(cmdName) ?? false);\n }\n\n private buildZodSchema(config: CommandConfig): Record<string, any> {\n const schema: Record<string, any> = {\n // Add cwd parameter as mandatory to all commands\n cwd: z.string().describe('Path to workspace'),\n };\n\n config.argsData.forEach((arg) => {\n const desc = arg.description || `Positional argument: ${arg.nameRaw}`;\n if (arg.isArray) {\n schema[arg.nameCamelCase] = arg.required\n ? z.array(z.string()).describe(desc)\n : z.array(z.string()).optional().describe(desc);\n } else {\n schema[arg.nameCamelCase] = arg.required ? z.string().describe(desc) : z.string().optional().describe(desc);\n }\n });\n\n config.flagsData.forEach((flag) => {\n const type = flag.type;\n schema[flag.name] =\n type === 'string'\n ? z.string().optional().describe(flag.description)\n : z.boolean().optional().describe(flag.description);\n });\n\n return schema;\n }\n\n private buildCommandArgs(config: CommandConfig, params: any): string[] {\n // Split the command name on spaces to properly handle subcommands\n const args: string[] = config.name.split(' ');\n\n // Add positional arguments in order\n config.argsData.forEach((arg) => {\n const val = params[arg.nameCamelCase];\n if (val === undefined) return;\n\n if (arg.isArray && Array.isArray(val)) {\n val.forEach((item) => args.push(item));\n } else {\n args.push(val);\n }\n });\n\n // Add options as flags\n config.flagsData.forEach((flag) => {\n const name = flag.name;\n const type = flag.type;\n const val = params[name];\n if (val === undefined) return;\n if (type === 'boolean' && val) {\n args.push(`--${name}`);\n } else if (type === 'string' && val) {\n // Check if the string value contains spaces and quote it if necessary\n const stringValue = String(val);\n if (stringValue.includes(' ')) {\n args.push(`--${name}`, `\"${stringValue}\"`);\n } else {\n args.push(`--${name}`, stringValue);\n }\n }\n });\n\n return args;\n }\n\n private getToolName(name: string): string {\n // replace white spaces (\\s) and dashes (-) with underscores (_)\n return `bit_${name}`.replace(/[-\\s]/g, '_');\n }\n\n private registerToolForCommand(server: McpServer, cmd: Command, parentCmd?: Command) {\n const cmdName = parentCmd ? `${getCommandName(parentCmd)} ${getCommandName(cmd)}` : getCommandName(cmd);\n const toolName = this.getToolName(cmdName);\n\n // Modify description for show and schema commands in consumer project mode\n let description = `${cmd.description}${cmd.extendedDescription ? `.\\n(${cmd.extendedDescription})` : ''}`;\n if (this.isConsumerProjectMode && (cmdName === 'show' || cmdName === 'schema')) {\n description += `\\n(In consumer project mode, --remote flag is automatically added)`;\n }\n\n const config: CommandConfig = {\n name: cmdName,\n description,\n argsData: getArgsData(cmd),\n flagsData: getFlagsData(cmd),\n };\n\n const schema = this.buildZodSchema(config);\n\n server.tool(toolName, config.description, schema, async (params: any) => {\n const argsToRun = this.buildCommandArgs(config, params);\n\n // Special handling for consumer projects - auto-add --remote flag for show and schema commands\n if (this.isConsumerProjectMode && (cmdName === 'show' || cmdName === 'schema')) {\n if (!argsToRun.includes('--remote')) {\n this.logger.debug(`[MCP-DEBUG] Auto-adding --remote flag for ${cmdName} in consumer project mode`);\n argsToRun.push('--remote');\n }\n if (cmdName === 'show' && !argsToRun.includes('--legacy')) {\n this.logger.debug(`[MCP-DEBUG] Auto-adding --legacy flag for ${cmdName} in consumer project mode`);\n argsToRun.push('--legacy');\n }\n }\n\n return this.runBit(argsToRun, params.cwd);\n });\n }\n\n private registerToolForRemote(server: McpServer, name: string) {\n if (name === 'remote-search') {\n this.registerRemoteSearchTool(server);\n }\n }\n\n private registerRemoteSearchTool(server: McpServer) {\n const toolName = this.getToolName('remote-search');\n const description = 'Search for components in remote scopes';\n const schema: Record<string, any> = {\n queryStr: z.string().describe('Search query string'),\n };\n server.tool(toolName, description, schema, async (params: any) => {\n const http = await this.getHttp();\n const results = await http.search(params.queryStr);\n this.logger.debug(`[MCP-DEBUG] Search results: ${JSON.stringify(results)}`);\n if (!results?.components || results.components.length === 0) {\n return { content: [{ type: 'text', text: 'No results found' }] };\n }\n const formattedResults = results.components.map((result) => ({\n type: 'text',\n text: result,\n }));\n return { content: formattedResults } as CallToolResult;\n });\n }\n\n private registerWorkspaceInfoTool(server: McpServer) {\n const toolName = 'bit_workspace_info';\n const description =\n 'Get comprehensive workspace information including status, components list, apps, templates, and dependency graph';\n const schema: Record<string, any> = {\n cwd: z.string().describe('Path to workspace directory'),\n includeStatus: z.boolean().optional().describe('Include workspace status (default: true)'),\n includeList: z.boolean().optional().describe('Include components list (default: true)'),\n includeApps: z.boolean().optional().describe('Include apps list (default: false)'),\n includeTemplates: z.boolean().optional().describe('Include templates list (default: false)'),\n includeGraph: z.boolean().optional().describe('Include dependency graph (default: false)'),\n };\n\n server.tool(toolName, description, schema, async (params: any) => {\n try {\n const includeStatus = params.includeStatus !== false; // Default to true\n const includeList = params.includeList !== false; // Default to true\n const includeApps = params.includeApps === true;\n const includeTemplates = params.includeTemplates === true;\n const includeGraph = params.includeGraph === true;\n\n const workspaceInfo: any = {};\n\n // Get workspace status using bit-server API with error handling\n if (includeStatus) {\n const statusExecution = await this.safeBitCommandExecution(\n 'status',\n [],\n { json: true },\n params.cwd,\n 'get workspace status',\n true\n );\n workspaceInfo.status = statusExecution.result;\n }\n\n // Get components list if requested\n if (includeList) {\n const listExecution = await this.safeBitCommandExecution(\n 'list',\n [],\n { json: true },\n params.cwd,\n 'get components list',\n true\n );\n workspaceInfo.list = listExecution.result;\n }\n\n // Get apps list if requested\n if (includeApps) {\n const appsExecution = await this.safeBitCommandExecution(\n 'app',\n ['list'],\n { json: true },\n params.cwd,\n 'get apps list',\n true\n );\n workspaceInfo.apps = appsExecution.result;\n }\n\n // Get templates list if requested\n if (includeTemplates) {\n const templatesExecution = await this.safeBitCommandExecution(\n 'templates',\n [],\n { json: true },\n params.cwd,\n 'get templates list',\n true\n );\n workspaceInfo.templates = templatesExecution.result;\n }\n\n // Get dependency graph if requested\n if (includeGraph) {\n const graphExecution = await this.safeBitCommandExecution(\n 'graph',\n [],\n { json: true },\n params.cwd,\n 'get dependency graph',\n true\n );\n workspaceInfo.graph = graphExecution.result;\n }\n\n return this.formatAsCallToolResult(workspaceInfo);\n } catch (error) {\n this.logger.error(`[MCP-DEBUG] Error in bit_workspace_info tool: ${(error as Error).message}`);\n return this.formatErrorAsCallToolResult(error as Error, 'getting workspace info');\n }\n });\n }\n\n private registerComponentDetailsTool(server: McpServer) {\n const toolName = 'bit_component_details';\n const description =\n 'Get detailed information about a specific component including basic info and optionally its public API schema';\n const schema: Record<string, any> = {\n cwd: z.string().describe('Path to workspace directory'),\n componentName: z.string().describe('Component name or component ID to get details for'),\n includeSchema: z.boolean().optional().describe('Include component public API schema (default: false)'),\n };\n\n server.tool(toolName, description, schema, async (params: any) => {\n try {\n const includeSchema = params.includeSchema === true;\n const componentName = params.componentName;\n\n // Get component details using IDE API with includeSchema parameter\n const ideApiResult = await this.callBitServerIDEAPI(\n 'getCompDetails',\n [componentName, includeSchema],\n params.cwd\n );\n\n // IDE API returns the result directly, not wrapped in success/error structure\n const componentDetails: any = {\n show: ideApiResult,\n };\n\n return this.formatAsCallToolResult(componentDetails);\n } catch (error) {\n this.logger.error(`[MCP-DEBUG] Error in bit_component_details tool: ${(error as Error).message}`);\n return this.formatErrorAsCallToolResult(error as Error, 'getting component details');\n }\n });\n }\n\n private registerCommandsListTool(server: McpServer) {\n const toolName = 'bit_commands_list';\n const description =\n 'Get all available Bit commands with descriptions and groups. Use this to discover what commands are available.';\n const schema: Record<string, any> = {\n extendedDescription: z\n .boolean()\n .optional()\n .describe('Include extended descriptions for commands (default: false)'),\n internal: z.boolean().optional().describe('Include internal/debug commands (default: false)'),\n };\n\n server.tool(toolName, description, schema, async (params: any) => {\n try {\n const { extendedDescription = false, internal = false } = params;\n const commandsInfo: any[] = [];\n\n const shouldSkipCommand = (cmd: Command): boolean => {\n return Boolean((cmd.private && !internal) || cmd.description.startsWith('DEPRECATED'));\n };\n\n // Build list of all commands\n this.cli.commands.forEach((cmd) => {\n if (shouldSkipCommand(cmd)) return;\n\n const mainCmdName = getCommandName(cmd);\n const groupKey = cmd.group;\n\n const commandInfo: any = {\n name: mainCmdName,\n description: cmd.description || '',\n alias: cmd.alias || '',\n };\n\n if (extendedDescription && cmd.extendedDescription) {\n commandInfo.extendedDescription = cmd.extendedDescription;\n }\n if (groupKey) commandInfo.group = this.cli.groups[groupKey] || groupKey;\n if (cmd.helpUrl) commandInfo.helpUrl = cmd.helpUrl;\n\n // Add subcommands summary\n if (cmd.commands && cmd.commands.length > 0) {\n commandInfo.subcommands = cmd.commands\n .filter((subCmd) => !shouldSkipCommand(subCmd))\n .map((subCmd) => ({\n name: getCommandName(subCmd),\n description: subCmd.description || '',\n alias: subCmd.alias || '',\n }));\n }\n\n commandsInfo.push(commandInfo);\n });\n\n commandsInfo.sort((a, b) => a.name.localeCompare(b.name));\n\n const result = JSON.stringify({ total: commandsInfo.length, commands: commandsInfo }, null, 2);\n this.logger.debug(`[MCP-DEBUG] Successfully retrieved commands list. Total: ${commandsInfo.length}`);\n return this.formatAsCallToolResult(result);\n } catch (error) {\n this.logger.error(`[MCP-DEBUG] Error in bit_commands_list tool: ${(error as Error).message}`);\n return this.formatErrorAsCallToolResult(error as Error, 'getting commands list');\n }\n });\n }\n\n private registerCommandHelpTool(server: McpServer) {\n const toolName = 'bit_command_help';\n const description =\n 'Get detailed help for a specific Bit command including syntax, arguments, flags, and usage examples. Use this to understand exactly how to use a command.';\n const schema: Record<string, any> = {\n command: z.string().describe('The command name to get help for (e.g., \"status\", \"install\", \"create\")'),\n subcommand: z\n .string()\n .optional()\n .describe('Optional subcommand name (e.g., for \"lane show\", use command=\"lane\" and subcommand=\"show\")'),\n };\n\n server.tool(toolName, description, schema, async (params: any) => {\n try {\n const { command: requestedCommand, subcommand: requestedSubcommand } = params;\n let commandInfo: any = null;\n\n const buildDetailedCommandInfo = (cmd: Command, parentName?: string) => {\n const cmdName = parentName ? `${parentName} ${getCommandName(cmd)}` : getCommandName(cmd);\n\n const info: any = {\n name: cmdName,\n description: cmd.description || '',\n extendedDescription: cmd.extendedDescription || '',\n alias: cmd.alias || '',\n group: cmd.group ? this.cli.groups[cmd.group] || cmd.group : '',\n helpUrl: cmd.helpUrl || '',\n private: cmd.private || false,\n };\n\n // Add arguments information\n const argsData = getArgsData(cmd);\n if (argsData.length > 0) {\n info.arguments = argsData.map((arg) => ({\n name: arg.nameRaw,\n description: arg.description || '',\n required: arg.required,\n isArray: arg.isArray,\n }));\n }\n\n // Add options/flags information\n info.options = getFlagsData(cmd);\n\n // Add examples if available\n if (cmd.examples) {\n info.examples = cmd.examples;\n }\n\n // Add subcommands if available (including private ones for help purposes)\n if (cmd.commands && cmd.commands.length > 0) {\n info.subcommands = cmd.commands.map((subCmd) => ({\n name: getCommandName(subCmd),\n description: subCmd.description || '',\n alias: subCmd.alias || '',\n }));\n }\n\n return info;\n };\n\n // Search for the requested command\n this.cli.commands.forEach((cmd) => {\n const mainCmdName = getCommandName(cmd);\n\n if (requestedSubcommand) {\n // Looking for a subcommand\n if (mainCmdName === requestedCommand && cmd.commands) {\n const subCmd = cmd.commands.find((sub) => getCommandName(sub) === requestedSubcommand);\n if (subCmd) {\n commandInfo = buildDetailedCommandInfo(subCmd, requestedCommand);\n }\n }\n } else {\n // Looking for a main command\n if (mainCmdName === requestedCommand) {\n commandInfo = buildDetailedCommandInfo(cmd);\n }\n }\n });\n\n if (!commandInfo) {\n const commandFullName = requestedSubcommand ? `${requestedCommand} ${requestedSubcommand}` : requestedCommand;\n return this.formatAsCallToolResult(`Command not found: ${commandFullName}`);\n }\n\n const result = JSON.stringify(commandInfo, null, 2);\n this.logger.debug(`[MCP-DEBUG] Successfully retrieved command help for: ${commandInfo.name}`);\n return this.formatAsCallToolResult(result);\n } catch (error) {\n this.logger.error(`[MCP-DEBUG] Error in bit_command_help tool: ${(error as Error).message}`);\n return this.formatErrorAsCallToolResult(error as Error, 'getting command help');\n }\n });\n }\n\n private registerQueryTool(server: McpServer) {\n const toolName = 'bit_query';\n const description =\n 'Execute read-only Bit commands that safely inspect workspace and component state without making modifications. Only whitelisted query commands are allowed for safety.';\n const schema: Record<string, any> = {\n cwd: z.string().describe('Path to workspace directory'),\n command: z.string().describe('The Bit command to execute (e.g., \"status\", \"show\", \"list\")'),\n args: z.array(z.string()).optional().describe('Arguments to pass to the command'),\n flags: z\n .record(z.union([z.string(), z.boolean()]))\n .optional()\n .describe('Flags to pass to the command as key-value pairs'),\n };\n\n server.tool(toolName, description, schema, async (params: any) => {\n try {\n const { command, args = [], flags = {}, cwd } = params;\n\n // Check if command is in the read-only whitelist\n // Support both single commands and subcommands (e.g., \"lane show\")\n const fullCommand = args.length > 0 ? `${command} ${args[0]}` : command;\n const isAllowed = this.readOnlyCommands.has(command) || this.readOnlyCommands.has(fullCommand);\n\n if (!isAllowed) {\n const allowedCommands = Array.from(this.readOnlyCommands).sort().join(', ');\n return this.formatAsCallToolResult(\n `Error: Command \"${command}\" is not allowed in query mode. Allowed read-only commands: ${allowedCommands}`\n );\n }\n\n // Build command arguments\n const commandArgs = [command, ...args];\n\n // Add flags to arguments\n Object.entries(flags).forEach(([key, value]) => {\n if (typeof value === 'boolean' && value) {\n commandArgs.push(`--${key}`);\n } else if (typeof value === 'string' && value) {\n commandArgs.push(`--${key}`);\n commandArgs.push(value);\n }\n });\n\n this.logger.debug(`[MCP-DEBUG] Executing query command: ${command} with args: ${JSON.stringify(commandArgs)}`);\n\n const result = await this.callBitServerAPI(command, args, flags, cwd);\n\n return this.formatAsCallToolResult(result);\n } catch (error) {\n this.logger.error(`[MCP-DEBUG] Error in bit_query tool: ${(error as Error).message}`);\n return this.formatErrorAsCallToolResult(error as Error, 'executing query command');\n }\n });\n }\n\n private registerExecuteTool(server: McpServer) {\n const toolName = 'bit_execute';\n const description = 'Execute Bit commands that make changes to workspace or components (not read-only).';\n const schema: Record<string, any> = {\n cwd: z.string().describe('Path to workspace directory'),\n command: z.string().describe('The Bit command to execute (e.g., \"import\", \"tag\", \"export\", \"remove\")'),\n args: z.array(z.string()).optional().describe('Arguments to pass to the command'),\n flags: z\n .record(z.union([z.string(), z.boolean()]))\n .optional()\n .describe('Flags to pass to the command as key-value pairs'),\n };\n\n server.tool(toolName, description, schema, async (params: any) => {\n try {\n let { command, args = [] } = params;\n const { flags = {}, cwd } = params;\n\n // Handle sub-commands: if command has multiple words, move the second word to args\n const commandParts = command.trim().split(/\\s+/);\n if (commandParts.length > 1) {\n command = commandParts[0];\n args = [commandParts[1], ...args];\n }\n\n this.logger.debug(\n `[MCP-DEBUG] Executing command: ${command} with args: ${JSON.stringify(args)} and flags: ${JSON.stringify(flags)}`\n );\n const result = await this.callBitServerAPI(command, args, flags, cwd);\n return this.formatAsCallToolResult(result);\n } catch (error) {\n this.logger.error(`[MCP-DEBUG] Error in bit_execute tool: ${(error as Error).message}`);\n return this.formatErrorAsCallToolResult(error as Error, 'executing command');\n }\n });\n }\n\n private processSubCommands(server: McpServer, parentCmd: Command, options: CommandFilterOptions) {\n const parentCmdName = getCommandName(parentCmd);\n\n parentCmd.commands?.forEach((subCmd) => {\n const subCmdName = getCommandName(subCmd);\n const fullCmdName = `${parentCmdName} ${subCmdName}`;\n\n if (this.shouldIncludeCommand(fullCmdName, options)) {\n this.registerToolForCommand(server, subCmd, parentCmd);\n }\n });\n }\n\n private async runBit(args: string[], cwd: string): Promise<CallToolResult> {\n this.logger.debug(`[MCP-DEBUG] Running: ${this.bitBin} ${args.join(' ')} in ${cwd}`);\n const cmd = `${this.bitBin} ${args.join(' ')}`;\n try {\n const cmdOutput = childProcess.execSync(cmd, { cwd });\n this.logger.debug(`[MCP-DEBUG] result. stdout: ${cmdOutput}`);\n\n return { content: [{ type: 'text', text: cmdOutput.toString() }] };\n } catch (error: any) {\n this.logger.error(`[MCP-DEBUG] Error executing ${cmd}`, error);\n\n return { content: [{ type: 'text', text: error.message }] };\n }\n }\n\n /**\n * Helper method to execute a bit-server API call with standardized error handling\n */\n private async executeBitServerCommand(\n command: string,\n args: string[] = [],\n flags: Record<string, any> = {},\n cwd: string,\n operationName: string\n ): Promise<any> {\n try {\n const result = await this.callBitServerAPI(command, args, flags, cwd);\n this.logger.debug(`[MCP-DEBUG] Successfully executed ${operationName} via bit-server`);\n return result;\n } catch (error) {\n this.logger.warn(`[MCP-DEBUG] Failed to execute ${operationName} via bit-server: ${(error as Error).message}`);\n throw error;\n }\n }\n\n /**\n * Helper method to format any result as CallToolResult\n */\n private formatAsCallToolResult(result: any): CallToolResult {\n if (typeof result === 'string') {\n return { content: [{ type: 'text', text: result }] } as CallToolResult;\n } else if (typeof result === 'object') {\n return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] } as CallToolResult;\n } else {\n return { content: [{ type: 'text', text: String(result) }] } as CallToolResult;\n }\n }\n\n /**\n * Helper method to format error as CallToolResult\n */\n private formatErrorAsCallToolResult(error: Error, operation: string): CallToolResult {\n return {\n content: [\n {\n type: 'text',\n text: `Error ${operation}: ${error.message}`,\n },\n ],\n } as CallToolResult;\n }\n\n /**\n * Helper method to safely execute a bit command with error handling\n */\n private async safeBitCommandExecution(\n command: string,\n args: string[] = [],\n flags: Record<string, any> = {},\n cwd: string,\n operationName: string,\n includeErrorInResult = false\n ): Promise<{ success: boolean; result: any; error?: string }> {\n try {\n const result = await this.executeBitServerCommand(command, args, flags, cwd, operationName);\n return { success: true, result };\n } catch (error) {\n if (includeErrorInResult) {\n return {\n success: false,\n result: { error: `Failed to ${operationName}: ${(error as Error).message}` },\n error: (error as Error).message,\n };\n } else {\n throw error;\n }\n }\n }\n\n // Setup command business logic methods\n getEditorDisplayName(editor: string): string {\n return McpSetupUtils.getEditorDisplayName(editor);\n }\n\n async setupEditor(editor: string, options: SetupOptions, workspaceDir?: string): Promise<void> {\n const supportedEditors = ['vscode', 'cursor', 'windsurf'];\n const editorLower = editor.toLowerCase();\n\n if (!supportedEditors.includes(editorLower)) {\n throw new Error(`Editor \"${editor}\" is not supported yet. Currently supported: ${supportedEditors.join(', ')}`);\n }\n\n // Add workspaceDir to options if provided\n const setupOptions: SetupOptions = { ...options };\n if (workspaceDir) {\n setupOptions.workspaceDir = workspaceDir;\n }\n\n if (editorLower === 'vscode') {\n await McpSetupUtils.setupVSCode(setupOptions);\n } else if (editorLower === 'cursor') {\n await McpSetupUtils.setupCursor(setupOptions);\n } else if (editorLower === 'windsurf') {\n await McpSetupUtils.setupWindsurf(setupOptions);\n }\n }\n\n static slots = [];\n static dependencies = [CLIAspect, LoggerAspect];\n static runtime = MainRuntime;\n static async provider([cli, loggerMain]: [CLIMain, LoggerMain]) {\n const logger = loggerMain.createLogger(CliMcpServerAspect.id);\n const mcpServer = new CliMcpServerMain(cli, logger);\n const mcpServerCmd = new McpServerCmd(mcpServer);\n mcpServerCmd.commands = [new McpStartCmd(mcpServer), new McpSetupCmd(mcpServer)];\n cli.register(mcpServerCmd);\n return mcpServer;\n }\n}\n\nCliMcpServerAspect.addRuntime(CliMcpServerMain);\n\nexport default CliMcpServerMain;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_cli","data","require","_child_process","_interopRequireDefault","_stripAnsi","_fsExtra","_commentJson","_path","_cliMcpServer","_mcpServer","_mcp","_stdio","_zod","_logger","_scope","_legacy","_nodeFetch","_setupCmd","_setupUtils","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","CliMcpServerMain","constructor","cli","logger","Set","getHttp","_http","Http","connect","SYMPHONY_GRAPHQL","CENTRAL_BIT_HUB_NAME","getBitServerPort","cwd","skipValidatePortFlag","existingPort","childProcess","execSync","bitBin","env","process","BIT_CLI_SERVER","toString","trim","undefined","parseInt","err","error","message","startBitServer","debug","Promise","resolve","reject","serverProcess","spawn","stdio","detached","serverStarted","outputBuffer","timeout","setTimeout","kill","stdout","on","output","includes","clearTimeout","portMatch","match","port","serverPort","serverUrl","stderr","code","signal","killServerProcess","killed","exit","callBitServerAPI","command","args","flags","isReTrying","callBitServerAPIWithRoute","callBitServerIDEAPI","method","route","commandOrMethod","argsOrParams","isIDERoute","Error","startedPort","realCwd","fs","realpathSync","body","url","commandArray","key","entries","pwd","response","fetch","headers","JSON","stringify","ok","errorMessage","status","statusText","errorJson","json","runMcpServer","options","commands","extended","Boolean","alwaysExcludeTools","includeOnlySet","includeOnly","split","map","cmd","Array","from","join","additionalCommandsSet","includeAdditional","userExcludeSet","exclude","server","McpServer","name","version","consumerProjectTools","consumerProject","isConsumerProjectMode","warn","filterOptions","cmdName","getCommandName","shouldIncludeCommand","registerToolForCommand","processSubCommands","registerRemoteSearchTool","registerWorkspaceInfoTool","registerComponentDetailsTool","registerCommandsListTool","registerCommandHelpTool","registerQueryTool","registerExecuteTool","StdioServerTransport","has","shouldInclude","buildZodSchema","config","schema","z","string","describe","argsData","arg","desc","description","nameRaw","isArray","nameCamelCase","required","array","optional","flagsData","flag","type","boolean","buildCommandArgs","params","val","item","stringValue","getToolName","replace","parentCmd","toolName","extendedDescription","getArgsData","getFlagsData","tool","argsToRun","runBit","readWorkspaceJsonc","workspaceDir","workspaceJsoncPath","path","fileExists","pathExists","content","readFile","parse","extractOwnerFromWorkspace","workspaceConfig","workspaceSection","defaultScope","parts","queryStr","owners","skipAutoOwner","http","ownersToUse","extractedOwner","results","search","components","text","formattedResults","includeTemplates","includeApps","includeGraph","useJson","workspaceInfo","statusExecution","safeBitCommandExecution","result","listExecution","list","appsExecution","apps","templatesExecution","templates","graphExecution","graph","workspaceDependencies","formatAsCallToolResult","formatErrorAsCallToolResult","componentName","includeSchema","ideApiResult","componentDetails","show","internal","commandsInfo","shouldSkipCommand","private","startsWith","mainCmdName","groupKey","group","commandInfo","groups","subcommands","subCmd","sort","a","b","localeCompare","total","subcommand","requestedCommand","requestedSubcommand","buildDetailedCommandInfo","parentName","info","examples","find","sub","commandFullName","record","union","fullCommand","isAllowed","readOnlyCommands","allowedCommands","commandArgs","commandParts","parentCmdName","subCmdName","fullCmdName","cmdOutput","executeBitServerCommand","operationName","operation","includeErrorInResult","stripAnsi","success","getEditorDisplayName","editor","McpSetupUtils","setupEditor","supportedEditors","editorLower","toLowerCase","setupOptions","setupVSCode","setupCursor","setupWindsurf","provider","loggerMain","createLogger","CliMcpServerAspect","id","mcpServer","mcpServerCmd","McpServerCmd","McpStartCmd","McpSetupCmd","register","exports","CLIAspect","LoggerAspect","MainRuntime","addRuntime","_default"],"sources":["cli-mcp-server.main.runtime.ts"],"sourcesContent":["/* eslint-disable import/extensions */\n/* eslint-disable import/no-unresolved */\n\nimport { CLIAspect, CLIMain, Command, getArgsData, getCommandName, getFlagsData, MainRuntime } from '@teambit/cli';\nimport childProcess from 'child_process';\nimport stripAnsi from 'strip-ansi';\nimport fs from 'fs-extra';\nimport { parse } from 'comment-json';\nimport path from 'path';\nimport { CliMcpServerAspect } from './cli-mcp-server.aspect';\nimport { McpServerCmd, McpStartCmd } from './mcp-server.cmd';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport { z } from 'zod';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { Http } from '@teambit/scope.network';\nimport { CENTRAL_BIT_HUB_NAME, SYMPHONY_GRAPHQL } from '@teambit/legacy.constants';\nimport fetch from 'node-fetch';\nimport { McpSetupCmd } from './setup-cmd';\nimport { McpSetupUtils, SetupOptions } from './setup-utils';\n\ninterface CommandFilterOptions {\n additionalCommandsSet?: Set<string>;\n userExcludeSet?: Set<string>;\n alwaysExcludeTools: Set<string>;\n extended: boolean;\n includeOnlySet?: Set<string>;\n consumerProject: boolean;\n consumerProjectTools: Set<string>;\n}\n\ninterface CommandConfig {\n name: string;\n description: string;\n argsData: ReturnType<typeof getArgsData>;\n flagsData: ReturnType<typeof getFlagsData>;\n}\n\nexport class CliMcpServerMain {\n private bitBin = 'bit';\n private _http: Http;\n private isConsumerProjectMode: boolean = false;\n private serverPort?: number;\n private serverUrl?: string;\n private serverProcess: childProcess.ChildProcess | null = null;\n\n // Whitelist of commands that are considered read-only/query operations\n private readonly readOnlyCommands = new Set([\n 'status',\n 'list',\n 'info',\n 'show',\n 'schema',\n 'artifacts',\n 'diff',\n 'log',\n 'graph',\n 'deps get',\n 'deps blame',\n 'why',\n 'config get',\n 'envs list',\n 'envs get',\n 'remote list',\n 'templates',\n 'cat-component',\n 'cat-lane',\n 'cat-object',\n 'cat-scope',\n 'lane show',\n 'lane list',\n 'lane diff',\n 'lane history',\n 'lane history-diff',\n 'test',\n 'help',\n 'version',\n ]);\n\n constructor(\n private cli: CLIMain,\n private logger: Logger\n ) {}\n\n async getHttp(): Promise<Http> {\n if (!this._http) {\n this._http = await Http.connect(SYMPHONY_GRAPHQL, CENTRAL_BIT_HUB_NAME);\n }\n return this._http;\n }\n\n private async getBitServerPort(cwd: string, skipValidatePortFlag = false): Promise<number | undefined> {\n try {\n const existingPort = childProcess\n .execSync(`${this.bitBin} cli-server-port ${skipValidatePortFlag}`, {\n cwd,\n env: { ...process.env, BIT_CLI_SERVER: 'true' },\n })\n .toString()\n .trim();\n if (!existingPort) return undefined;\n return parseInt(existingPort, 10);\n } catch (err: any) {\n this.logger.error(`[MCP-DEBUG] error getting existing port from bit server at ${cwd}. err: ${err.message}`);\n return undefined;\n }\n }\n\n /**\n * Start a new bit-server process\n */\n private async startBitServer(cwd: string): Promise<number | null> {\n this.logger.debug('[MCP-DEBUG] Starting new bit-server process');\n\n return new Promise((resolve, reject) => {\n try {\n const serverProcess = childProcess.spawn(this.bitBin, ['server'], {\n cwd,\n stdio: ['pipe', 'pipe', 'pipe'],\n detached: false,\n });\n\n this.serverProcess = serverProcess;\n\n let serverStarted = false;\n let outputBuffer = '';\n\n const timeout = setTimeout(() => {\n if (!serverStarted) {\n this.logger.error('[MCP-DEBUG] Timeout waiting for bit-server to start');\n serverProcess.kill();\n resolve(null);\n }\n }, 30000); // 30 second timeout\n\n serverProcess.stdout?.on('data', (data) => {\n const output = data.toString();\n outputBuffer += output;\n this.logger.debug(`[MCP-DEBUG] bit-server stdout: ${output}`);\n if (output.includes('listening on port')) {\n clearTimeout(timeout);\n if (!serverStarted) {\n serverStarted = true;\n // Extract the port from the output\n const portMatch = output.match(/listening on port (\\d+)/);\n if (portMatch && portMatch[1]) {\n const port = parseInt(portMatch[1], 10);\n this.logger.debug(`[MCP-DEBUG] bit-server started on port ${port}`);\n this.serverPort = port;\n this.serverUrl = `http://localhost:${port}/api`;\n resolve(port);\n }\n }\n }\n });\n\n serverProcess.stderr?.on('data', (data) => {\n const error = data.toString();\n outputBuffer += error;\n this.logger.debug(`[MCP-DEBUG] bit-server stderr: ${error}`);\n });\n\n serverProcess.on('error', (err) => {\n clearTimeout(timeout);\n this.logger.error(`[MCP-DEBUG] Failed to start bit-server: ${err.message}`);\n reject(err);\n });\n\n serverProcess.on('exit', (code, signal) => {\n clearTimeout(timeout);\n if (!serverStarted) {\n this.logger.error(`[MCP-DEBUG] bit-server exited with code ${code}, signal ${signal}`);\n this.logger.debug(`[MCP-DEBUG] bit-server output: ${outputBuffer}`);\n resolve(null);\n }\n });\n\n const killServerProcess = () => {\n if (this.serverProcess && !this.serverProcess.killed) {\n this.logger.debug('[MCP-DEBUG] Killing bit-server process');\n this.serverProcess.kill();\n }\n };\n\n // Handle process cleanup\n process.on('exit', () => {\n killServerProcess();\n });\n\n process.on('SIGINT', () => {\n killServerProcess();\n process.exit();\n });\n\n process.on('SIGTERM', () => {\n killServerProcess();\n process.exit();\n });\n } catch (err) {\n this.logger.error(`[MCP-DEBUG] Error spawning bit-server: ${(err as Error).message}`);\n reject(err);\n }\n });\n }\n\n /**\n * Call bit-server API endpoint using cli-raw route\n */\n private async callBitServerAPI(\n command: string,\n args: string[] = [],\n flags: Record<string, any> = {},\n cwd: string,\n isReTrying = false\n ): Promise<any> {\n return this.callBitServerAPIWithRoute('cli-raw', command, args, flags, cwd, isReTrying);\n }\n\n /**\n * Call bit-server API endpoint using IDE route\n */\n private async callBitServerIDEAPI(method: string, args: any[] = [], cwd: string, isReTrying = false): Promise<any> {\n return this.callBitServerAPIWithRoute('ide', method, args, {}, cwd, isReTrying, true);\n }\n\n /**\n * Generic method to call bit-server API with different routes\n */\n private async callBitServerAPIWithRoute(\n route: string,\n commandOrMethod: string,\n argsOrParams: any[] = [],\n flags: Record<string, any> = {},\n cwd: string,\n isReTrying = false,\n isIDERoute = false\n ): Promise<any> {\n if (!this.serverPort) {\n if (!cwd) throw new Error('CWD is required to call bit-server API');\n this.serverPort = await this.getBitServerPort(cwd);\n if (this.serverPort) {\n this.serverUrl = `http://localhost:${this.serverPort}/api`;\n } else {\n // No server running, try to start one\n this.logger.debug('[MCP-DEBUG] No bit-server found, attempting to start one');\n const startedPort = await this.startBitServer(cwd);\n if (startedPort) {\n this.serverPort = startedPort;\n this.serverUrl = `http://localhost:${this.serverPort}/api`;\n }\n }\n }\n\n if (!this.serverUrl) {\n throw new Error('Unable to connect to bit-server. Please ensure you are in a valid Bit workspace.');\n }\n\n // Resolve the real path to handle symlinks (e.g., /tmp -> /private/tmp on macOS)\n const realCwd = fs.realpathSync(cwd);\n\n let body: any;\n let url: string;\n\n if (isIDERoute) {\n // For IDE route, use the method name and args directly\n body = {\n args: argsOrParams,\n };\n url = `${this.serverUrl}/${route}/${commandOrMethod}`;\n } else {\n // For CLI route, build command array with flags\n const commandArray = [commandOrMethod, ...argsOrParams];\n\n // Convert flags to command line arguments\n for (const [key, value] of Object.entries(flags)) {\n if (value === true) {\n commandArray.push(`--${key}`);\n } else if (value !== false && value !== undefined) {\n commandArray.push(`--${key}`, String(value));\n }\n }\n\n body = {\n command: commandArray,\n pwd: realCwd,\n };\n url = `${this.serverUrl}/${route}`;\n }\n\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n let errorMessage = `HTTP ${response.status}: ${response.statusText}`;\n try {\n const errorJson = await response.json();\n errorMessage = errorJson.message || errorMessage;\n } catch {\n // Ignore JSON parse errors\n }\n throw new Error(errorMessage);\n }\n\n return await response.json();\n } catch (err: any) {\n if (err.code === 'ECONNREFUSED' && !isReTrying) {\n // Server is no longer running, reset cached values and try to restart\n this.serverPort = undefined;\n this.serverUrl = undefined;\n this.logger.debug('[MCP-DEBUG] Connection refused, attempting to restart bit-server');\n return this.callBitServerAPIWithRoute(route, commandOrMethod, argsOrParams, flags, cwd, true, isIDERoute);\n }\n throw err;\n }\n }\n\n async runMcpServer(options: {\n extended?: boolean;\n includeOnly?: string;\n includeAdditional?: string;\n exclude?: string;\n bitBin?: string;\n consumerProject?: boolean;\n }) {\n this.logger.debug(\n `[MCP-DEBUG] Starting MCP server with options: ${JSON.stringify(options)}. CWD: ${process.cwd()}`\n );\n const commands = this.cli.commands;\n const extended = Boolean(options.extended);\n this.bitBin = options.bitBin || this.bitBin;\n\n // Tools to always exclude\n const alwaysExcludeTools = new Set([\n 'login',\n 'logout',\n 'completion',\n 'mcp-server',\n 'start',\n 'run-action',\n 'watch',\n 'run',\n 'resume-export',\n 'server',\n 'serve-preview',\n ]);\n\n // Parse command strings from flag options\n let includeOnlySet: Set<string> | undefined;\n if (options.includeOnly) {\n includeOnlySet = new Set(options.includeOnly.split(',').map((cmd) => cmd.trim()));\n this.logger.debug(`[MCP-DEBUG] Including only commands: ${Array.from(includeOnlySet).join(', ')}`);\n }\n\n let additionalCommandsSet: Set<string> | undefined;\n if (options.includeAdditional) {\n additionalCommandsSet = new Set(options.includeAdditional.split(',').map((cmd) => cmd.trim()));\n this.logger.debug(`[MCP-DEBUG] Including additional commands: ${Array.from(additionalCommandsSet).join(', ')}`);\n }\n\n let userExcludeSet: Set<string> | undefined;\n if (options.exclude) {\n userExcludeSet = new Set(options.exclude.split(',').map((cmd) => cmd.trim()));\n this.logger.debug(`[MCP-DEBUG] Excluding commands: ${Array.from(userExcludeSet).join(', ')}`);\n }\n\n const server = new McpServer({\n name: 'bit-cli-mcp',\n version: '0.0.1',\n });\n\n // Set of tools for consumer projects (non-Bit workspaces)\n const consumerProjectTools = new Set(['schema', 'show']);\n\n const consumerProject = Boolean(options.consumerProject);\n\n // Store consumer project mode globally in the class\n this.isConsumerProjectMode = consumerProject;\n\n // Validate flags combination\n if (consumerProject) {\n this.logger.debug(\n `[MCP-DEBUG] Running MCP server in consumer project mode (for non-Bit workspaces) with tools: ${Array.from(consumerProjectTools).join(', ')} + remote-search (always available)`\n );\n if (options.includeAdditional) {\n this.logger.debug(\n `[MCP-DEBUG] Additional tools enabled in consumer project mode: ${options.includeAdditional}`\n );\n }\n if (extended) {\n this.logger.warn(\n '[MCP-DEBUG] Warning: --consumer-project and --extended flags were both provided. The --extended flag will be ignored.'\n );\n }\n }\n\n const filterOptions: CommandFilterOptions = {\n additionalCommandsSet,\n userExcludeSet,\n alwaysExcludeTools,\n extended: consumerProject ? false : extended, // Ignore extended when consumerProject is true\n includeOnlySet,\n consumerProject,\n consumerProjectTools,\n };\n\n commands.forEach((cmd) => {\n const cmdName = getCommandName(cmd);\n\n if (this.shouldIncludeCommand(cmdName, filterOptions)) {\n this.registerToolForCommand(server, cmd);\n }\n\n // Process sub-commands\n if (cmd.commands && cmd.commands.length) {\n this.processSubCommands(server, cmd, filterOptions);\n }\n });\n\n // Always register remote-search tool\n this.registerRemoteSearchTool(server);\n\n // Register the bit_workspace_info tool\n this.registerWorkspaceInfoTool(server);\n\n // Register the bit_component_details tool\n this.registerComponentDetailsTool(server);\n\n // Register command discovery and help tools\n this.registerCommandsListTool(server);\n this.registerCommandHelpTool(server);\n\n this.registerQueryTool(server);\n this.registerExecuteTool(server);\n\n await server.connect(new StdioServerTransport());\n }\n\n private shouldIncludeCommand(cmdName: string, options: CommandFilterOptions): boolean {\n // Always exclude certain commands\n if (options.alwaysExcludeTools.has(cmdName)) return false;\n\n // User-specified exclude takes precedence\n if (options.userExcludeSet?.has(cmdName)) {\n this.logger.debug(`[MCP-DEBUG] Excluding command due to --exclude flag: ${cmdName}`);\n return false;\n }\n\n // If includeOnly is specified, only include those specific commands\n if (options.includeOnlySet) {\n const shouldInclude = options.includeOnlySet.has(cmdName);\n if (shouldInclude) {\n this.logger.debug(`[MCP-DEBUG] Including command due to --include-only flag: ${cmdName}`);\n }\n return shouldInclude;\n }\n\n // Extended mode includes all commands except excluded ones\n if (options.extended) return true;\n\n // Consumer project mode: only include consumer project tools + any additional specified\n if (options.consumerProject) {\n const shouldInclude =\n options.consumerProjectTools.has(cmdName) || (options.additionalCommandsSet?.has(cmdName) ?? false);\n if (shouldInclude) {\n this.logger.debug(`[MCP-DEBUG] Including command in consumer project mode: ${cmdName}`);\n }\n return shouldInclude;\n }\n\n // Default mode: only include additional specified commands (no default tools anymore)\n return options.additionalCommandsSet?.has(cmdName) ?? false;\n }\n\n private buildZodSchema(config: CommandConfig): Record<string, any> {\n const schema: Record<string, any> = {\n // Add cwd parameter as mandatory to all commands\n cwd: z.string().describe('Path to workspace'),\n };\n\n config.argsData.forEach((arg) => {\n const desc = arg.description || `Positional argument: ${arg.nameRaw}`;\n if (arg.isArray) {\n schema[arg.nameCamelCase] = arg.required\n ? z.array(z.string()).describe(desc)\n : z.array(z.string()).optional().describe(desc);\n } else {\n schema[arg.nameCamelCase] = arg.required ? z.string().describe(desc) : z.string().optional().describe(desc);\n }\n });\n\n config.flagsData.forEach((flag) => {\n const type = flag.type;\n schema[flag.name] =\n type === 'string'\n ? z.string().optional().describe(flag.description)\n : z.boolean().optional().describe(flag.description);\n });\n\n return schema;\n }\n\n private buildCommandArgs(config: CommandConfig, params: any): string[] {\n // Split the command name on spaces to properly handle subcommands\n const args: string[] = config.name.split(' ');\n\n // Add positional arguments in order\n config.argsData.forEach((arg) => {\n const val = params[arg.nameCamelCase];\n if (val === undefined) return;\n\n if (arg.isArray && Array.isArray(val)) {\n val.forEach((item) => args.push(item));\n } else {\n args.push(val);\n }\n });\n\n // Add options as flags\n config.flagsData.forEach((flag) => {\n const name = flag.name;\n const type = flag.type;\n const val = params[name];\n if (val === undefined) return;\n if (type === 'boolean' && val) {\n args.push(`--${name}`);\n } else if (type === 'string' && val) {\n // Check if the string value contains spaces and quote it if necessary\n const stringValue = String(val);\n if (stringValue.includes(' ')) {\n args.push(`--${name}`, `\"${stringValue}\"`);\n } else {\n args.push(`--${name}`, stringValue);\n }\n }\n });\n\n return args;\n }\n\n private getToolName(name: string): string {\n // replace white spaces (\\s) and dashes (-) with underscores (_)\n return `bit_${name}`.replace(/[-\\s]/g, '_');\n }\n\n private registerToolForCommand(server: McpServer, cmd: Command, parentCmd?: Command) {\n const cmdName = parentCmd ? `${getCommandName(parentCmd)} ${getCommandName(cmd)}` : getCommandName(cmd);\n const toolName = this.getToolName(cmdName);\n\n // Modify description for show and schema commands in consumer project mode\n let description = `${cmd.description}${cmd.extendedDescription ? `.\\n(${cmd.extendedDescription})` : ''}`;\n if (this.isConsumerProjectMode && (cmdName === 'show' || cmdName === 'schema')) {\n description += `\\n(In consumer project mode, --remote flag is automatically added)`;\n }\n\n const config: CommandConfig = {\n name: cmdName,\n description,\n argsData: getArgsData(cmd),\n flagsData: getFlagsData(cmd),\n };\n\n const schema = this.buildZodSchema(config);\n\n server.tool(toolName, config.description, schema, async (params: any) => {\n const argsToRun = this.buildCommandArgs(config, params);\n\n // Special handling for consumer projects - auto-add --remote flag for show and schema commands\n if (this.isConsumerProjectMode && (cmdName === 'show' || cmdName === 'schema')) {\n if (!argsToRun.includes('--remote')) {\n this.logger.debug(`[MCP-DEBUG] Auto-adding --remote flag for ${cmdName} in consumer project mode`);\n argsToRun.push('--remote');\n }\n if (cmdName === 'show' && !argsToRun.includes('--legacy')) {\n this.logger.debug(`[MCP-DEBUG] Auto-adding --legacy flag for ${cmdName} in consumer project mode`);\n argsToRun.push('--legacy');\n }\n }\n\n return this.runBit(argsToRun, params.cwd);\n });\n }\n\n /**\n * Read and parse workspace.jsonc file from a given directory\n */\n private async readWorkspaceJsonc(workspaceDir: string): Promise<any> {\n try {\n const workspaceJsoncPath = path.join(workspaceDir, 'workspace.jsonc');\n const fileExists = await fs.pathExists(workspaceJsoncPath);\n if (!fileExists) {\n this.logger.debug(`[MCP-DEBUG] workspace.jsonc not found at ${workspaceJsoncPath}`);\n return null;\n }\n\n const content = await fs.readFile(workspaceJsoncPath, 'utf-8');\n return parse(content);\n } catch (error) {\n this.logger.debug(`[MCP-DEBUG] Failed to read workspace.jsonc: ${error}`);\n return null;\n }\n }\n\n /**\n * Extract owner from defaultScope in workspace.jsonc\n * If defaultScope contains a dot, split by dot and take the first part\n */\n private extractOwnerFromWorkspace(workspaceConfig: any): string | null {\n try {\n const workspaceSection = workspaceConfig?.['teambit.workspace/workspace'];\n const defaultScope = workspaceSection?.defaultScope;\n\n if (!defaultScope || typeof defaultScope !== 'string') {\n return null;\n }\n\n // If defaultScope contains a dot, split by dot and take the first part (owner)\n if (defaultScope.includes('.')) {\n const parts = defaultScope.split('.');\n return parts[0];\n }\n\n // If no dot, the entire defaultScope is treated as the owner\n return defaultScope;\n } catch (error) {\n this.logger.debug(`[MCP-DEBUG] Failed to extract owner from workspace config: ${error}`);\n return null;\n }\n }\n\n private registerRemoteSearchTool(server: McpServer) {\n const toolName = 'bit_remote_search';\n const description = `Search for components in remote scopes. Use this tool to find existing components before creating new ones. Essential for component reuse and discovery`;\n const schema: Record<string, any> = {\n queryStr: z\n .string()\n .describe(\n `Search query string - Don't try to search with too many keywords. It will try to find components that match all keywords, which is often too restrictive. Instead, search with a single keyword or a few broad keywords`\n ),\n cwd: z\n .string()\n .optional()\n .describe('Path to workspace directory'),\n owners: z\n .array(z.string())\n .optional()\n .describe(\n 'Filter results by specific owners or organizations. AVOID using this parameter - let the system automatically extract the owner from workspace.jsonc defaultScope for better relevance. Only use when you need to override the automatic behavior or search across different owners'\n ),\n skipAutoOwner: z\n .boolean()\n .optional()\n .describe(\n 'Set to true to disable automatic owner extraction from workspace.jsonc. When false or omitted, the system will try to automatically extract owner from workspace defaultScope'\n ),\n };\n server.tool(toolName, description, schema, async (params: any) => {\n const http = await this.getHttp();\n\n // Determine the owners to use for the search\n let ownersToUse = params.owners && params.owners.length > 0 ? params.owners : undefined;\n\n // If owners not explicitly provided and skipAutoOwner is not true, try to extract from workspace.jsonc\n if (!ownersToUse && !params.skipAutoOwner) {\n try {\n // Use provided cwd parameter or fall back to current working directory\n const workspaceDir = params.cwd || process.cwd();\n this.logger.debug(`[MCP-DEBUG] Attempting to auto-extract owner from workspace.jsonc in: ${workspaceDir}`);\n const workspaceConfig = await this.readWorkspaceJsonc(workspaceDir);\n if (workspaceConfig) {\n const extractedOwner = this.extractOwnerFromWorkspace(workspaceConfig);\n if (extractedOwner) {\n ownersToUse = [extractedOwner];\n this.logger.debug(`[MCP-DEBUG] Auto-extracted owner from workspace.jsonc: ${extractedOwner}`);\n }\n }\n } catch (error) {\n this.logger.debug(`[MCP-DEBUG] Failed to auto-extract owner: ${error}`);\n // Continue without auto-extracted owner\n }\n } else {\n this.logger.debug(\n `[MCP-DEBUG] Using provided owners for search: ${ownersToUse ? ownersToUse.join(', ') : 'none'}`\n );\n }\n\n const results = await http.search(params.queryStr, ownersToUse);\n this.logger.debug(`[MCP-DEBUG] Search results: ${JSON.stringify(results)}`);\n if (!results?.components || results.components.length === 0) {\n return { content: [{ type: 'text', text: 'No results found' }] };\n }\n const formattedResults = {\n type: 'text',\n text: results.components.join('\\n'),\n };\n return { content: [formattedResults] } as CallToolResult;\n });\n }\n\n private registerWorkspaceInfoTool(server: McpServer) {\n const toolName = 'bit_workspace_info';\n const description =\n 'Get comprehensive workspace information including status, components list, apps, templates, dependency graph, and workspace dependencies';\n const schema: Record<string, any> = {\n cwd: z.string().describe('Path to workspace directory'),\n includeTemplates: z.boolean().optional().describe('Include templates list (default: false)'),\n includeApps: z.boolean().optional().describe('Include apps list (default: false)'),\n includeGraph: z.boolean().optional().describe('Include dependency graph (default: false)'),\n json: z\n .boolean()\n .optional()\n .describe(\n 'Return output in JSON format - WARNING: This produces verbose output and should be used when structured data is specifically needed (default: false)'\n ),\n };\n\n server.tool(toolName, description, schema, async (params: any) => {\n try {\n const includeTemplates = params.includeTemplates === true; // default: false\n const includeApps = params.includeApps === true;\n const includeGraph = params.includeGraph === true;\n const useJson = params.json === true;\n\n const workspaceInfo: any = {};\n const flags = useJson ? { json: true } : {};\n\n const statusExecution = await this.safeBitCommandExecution(\n 'status',\n [],\n flags,\n params.cwd,\n 'get workspace status',\n true\n );\n workspaceInfo.status = statusExecution.result;\n\n const listExecution = await this.safeBitCommandExecution(\n 'list',\n [],\n flags,\n params.cwd,\n 'get components list',\n true\n );\n workspaceInfo.list = listExecution.result;\n\n // Get apps list if requested\n if (includeApps) {\n const appsExecution = await this.safeBitCommandExecution(\n 'app',\n ['list'],\n flags,\n params.cwd,\n 'get apps list',\n true\n );\n workspaceInfo.apps = appsExecution.result;\n }\n\n // Get templates list if requested\n if (includeTemplates) {\n const templatesExecution = await this.safeBitCommandExecution(\n 'templates',\n [],\n flags,\n params.cwd,\n 'get templates list',\n true\n );\n workspaceInfo.templates = templatesExecution.result;\n }\n\n // Get dependency graph if requested\n if (includeGraph) {\n const graphExecution = await this.safeBitCommandExecution(\n 'graph',\n [],\n { json: true },\n params.cwd,\n 'get dependency graph',\n true\n );\n workspaceInfo.graph = graphExecution.result;\n }\n\n // Get workspace dependencies if requested\n try {\n const workspaceDependencies = await this.callBitServerIDEAPI('getWorkspaceDependencies', [], params.cwd);\n workspaceInfo.workspaceDependencies = workspaceDependencies;\n } catch (error) {\n this.logger.error(`[MCP-DEBUG] Error getting workspace dependencies: ${(error as Error).message}`);\n workspaceInfo.workspaceDependencies = {\n error: `Failed to get workspace dependencies: ${(error as Error).message}`,\n };\n }\n\n return this.formatAsCallToolResult(workspaceInfo);\n } catch (error) {\n this.logger.error(`[MCP-DEBUG] Error in bit_workspace_info tool: ${(error as Error).message}`);\n return this.formatErrorAsCallToolResult(error as Error, 'getting workspace info');\n }\n });\n }\n\n private registerComponentDetailsTool(server: McpServer) {\n const toolName = 'bit_component_details';\n const description =\n 'Get detailed information about a specific component including basic info and optionally its public API schema';\n const schema: Record<string, any> = {\n cwd: z.string().describe('Path to workspace directory'),\n componentName: z.string().describe('Component name or component ID to get details for'),\n includeSchema: z.boolean().optional().describe('Include component public API schema (default: false)'),\n };\n\n server.tool(toolName, description, schema, async (params: any) => {\n try {\n const includeSchema = params.includeSchema === true;\n const componentName = params.componentName;\n\n // Get component details using IDE API with includeSchema parameter\n const ideApiResult = await this.callBitServerIDEAPI(\n 'getCompDetails',\n [componentName, includeSchema],\n params.cwd\n );\n\n // IDE API returns the result directly, not wrapped in success/error structure\n const componentDetails: any = {\n show: ideApiResult,\n };\n\n return this.formatAsCallToolResult(componentDetails);\n } catch (error) {\n this.logger.error(`[MCP-DEBUG] Error in bit_component_details tool: ${(error as Error).message}`);\n return this.formatErrorAsCallToolResult(error as Error, 'getting component details');\n }\n });\n }\n\n private registerCommandsListTool(server: McpServer) {\n const toolName = 'bit_commands_list';\n const description =\n 'Get all available Bit commands with descriptions and groups. Use this to discover what commands are available.';\n const schema: Record<string, any> = {\n extendedDescription: z\n .boolean()\n .optional()\n .describe('Include extended descriptions for commands (default: false)'),\n internal: z.boolean().optional().describe('Include internal/debug commands (default: false)'),\n };\n\n server.tool(toolName, description, schema, async (params: any) => {\n try {\n const { extendedDescription = false, internal = false } = params;\n const commandsInfo: any[] = [];\n\n const shouldSkipCommand = (cmd: Command): boolean => {\n return Boolean((cmd.private && !internal) || cmd.description.startsWith('DEPRECATED'));\n };\n\n // Build list of all commands\n this.cli.commands.forEach((cmd) => {\n if (shouldSkipCommand(cmd)) return;\n\n const mainCmdName = getCommandName(cmd);\n const groupKey = cmd.group;\n\n const commandInfo: any = {\n name: mainCmdName,\n description: cmd.description || '',\n };\n\n if (extendedDescription && cmd.extendedDescription) {\n commandInfo.extendedDescription = cmd.extendedDescription;\n }\n if (groupKey) commandInfo.group = this.cli.groups[groupKey] || groupKey;\n\n // Add subcommands summary\n if (cmd.commands && cmd.commands.length > 0) {\n commandInfo.subcommands = cmd.commands\n .filter((subCmd) => !shouldSkipCommand(subCmd))\n .map((subCmd) => ({\n name: getCommandName(subCmd),\n description: subCmd.description || '',\n }));\n }\n\n commandsInfo.push(commandInfo);\n });\n\n commandsInfo.sort((a, b) => a.name.localeCompare(b.name));\n\n const result = JSON.stringify({ total: commandsInfo.length, commands: commandsInfo }, null, 2);\n this.logger.debug(`[MCP-DEBUG] Successfully retrieved commands list. Total: ${commandsInfo.length}`);\n return this.formatAsCallToolResult(result);\n } catch (error) {\n this.logger.error(`[MCP-DEBUG] Error in bit_commands_list tool: ${(error as Error).message}`);\n return this.formatErrorAsCallToolResult(error as Error, 'getting commands list');\n }\n });\n }\n\n private registerCommandHelpTool(server: McpServer) {\n const toolName = 'bit_command_help';\n const description =\n 'Get detailed help for a specific Bit command including syntax, arguments, flags, and usage examples. Use this to understand exactly how to use a command.';\n const schema: Record<string, any> = {\n command: z.string().describe('The command name to get help for (e.g., \"status\", \"install\", \"create\")'),\n subcommand: z\n .string()\n .optional()\n .describe('Optional subcommand name (e.g., for \"lane show\", use command=\"lane\" and subcommand=\"show\")'),\n };\n\n server.tool(toolName, description, schema, async (params: any) => {\n try {\n const { command: requestedCommand, subcommand: requestedSubcommand } = params;\n let commandInfo: any = null;\n\n const buildDetailedCommandInfo = (cmd: Command, parentName?: string) => {\n const cmdName = parentName ? `${parentName} ${getCommandName(cmd)}` : getCommandName(cmd);\n\n const info: any = {\n name: cmdName,\n description: cmd.description || '',\n extendedDescription: cmd.extendedDescription || '',\n group: cmd.group ? this.cli.groups[cmd.group] || cmd.group : '',\n };\n\n // Add arguments information\n const argsData = getArgsData(cmd);\n if (argsData.length > 0) {\n info.arguments = argsData.map((arg) => ({\n name: arg.nameRaw,\n description: arg.description || '',\n required: arg.required,\n isArray: arg.isArray,\n }));\n }\n\n // Add options/flags information\n info.options = getFlagsData(cmd);\n\n // Add examples if available\n if (cmd.examples) {\n info.examples = cmd.examples;\n }\n\n // Add subcommands if available (including private ones for help purposes)\n if (cmd.commands && cmd.commands.length > 0) {\n info.subcommands = cmd.commands.map((subCmd) => ({\n name: getCommandName(subCmd),\n description: subCmd.description || '',\n }));\n }\n\n return info;\n };\n\n // Search for the requested command\n this.cli.commands.forEach((cmd) => {\n const mainCmdName = getCommandName(cmd);\n\n if (requestedSubcommand) {\n // Looking for a subcommand\n if (mainCmdName === requestedCommand && cmd.commands) {\n const subCmd = cmd.commands.find((sub) => getCommandName(sub) === requestedSubcommand);\n if (subCmd) {\n commandInfo = buildDetailedCommandInfo(subCmd, requestedCommand);\n }\n }\n } else {\n // Looking for a main command\n if (mainCmdName === requestedCommand) {\n commandInfo = buildDetailedCommandInfo(cmd);\n }\n }\n });\n\n if (!commandInfo) {\n const commandFullName = requestedSubcommand ? `${requestedCommand} ${requestedSubcommand}` : requestedCommand;\n return this.formatAsCallToolResult(`Command not found: ${commandFullName}`);\n }\n\n const result = JSON.stringify(commandInfo, null, 2);\n this.logger.debug(`[MCP-DEBUG] Successfully retrieved command help for: ${commandInfo.name}`);\n return this.formatAsCallToolResult(result);\n } catch (error) {\n this.logger.error(`[MCP-DEBUG] Error in bit_command_help tool: ${(error as Error).message}`);\n return this.formatErrorAsCallToolResult(error as Error, 'getting command help');\n }\n });\n }\n\n private registerQueryTool(server: McpServer) {\n const toolName = 'bit_query';\n const description =\n 'Execute read-only Bit commands that safely inspect workspace and component state without making modifications. Only whitelisted query commands are allowed for safety.';\n const schema: Record<string, any> = {\n cwd: z.string().describe('Path to workspace directory'),\n command: z.string().describe('The Bit command to execute (e.g., \"status\", \"show\", \"list\")'),\n args: z.array(z.string()).optional().describe('Arguments to pass to the command'),\n flags: z\n .record(z.union([z.string(), z.boolean()]))\n .optional()\n .describe('Flags to pass to the command as key-value pairs'),\n };\n\n server.tool(toolName, description, schema, async (params: any) => {\n try {\n const { command, args = [], flags = {}, cwd } = params;\n\n // Check if command is in the read-only whitelist\n // Support both single commands and subcommands (e.g., \"lane show\")\n const fullCommand = args.length > 0 ? `${command} ${args[0]}` : command;\n const isAllowed = this.readOnlyCommands.has(command) || this.readOnlyCommands.has(fullCommand);\n\n if (!isAllowed) {\n const allowedCommands = Array.from(this.readOnlyCommands).sort().join(', ');\n return this.formatAsCallToolResult(\n `Error: Command \"${command}\" is not allowed in query mode. Allowed read-only commands: ${allowedCommands}`\n );\n }\n\n // Build command arguments\n const commandArgs = [command, ...args];\n\n // Add flags to arguments\n Object.entries(flags).forEach(([key, value]) => {\n if (typeof value === 'boolean' && value) {\n commandArgs.push(`--${key}`);\n } else if (typeof value === 'string' && value) {\n commandArgs.push(`--${key}`);\n commandArgs.push(value);\n }\n });\n\n this.logger.debug(`[MCP-DEBUG] Executing query command: ${command} with args: ${JSON.stringify(commandArgs)}`);\n\n const result = await this.callBitServerAPI(command, args, flags, cwd);\n\n return this.formatAsCallToolResult(result);\n } catch (error) {\n this.logger.error(`[MCP-DEBUG] Error in bit_query tool: ${(error as Error).message}`);\n return this.formatErrorAsCallToolResult(error as Error, 'executing query command');\n }\n });\n }\n\n private registerExecuteTool(server: McpServer) {\n const toolName = 'bit_execute';\n const description = 'Execute Bit commands that make changes to workspace or components (not read-only).';\n const schema: Record<string, any> = {\n cwd: z.string().describe('Path to workspace directory'),\n command: z.string().describe('The Bit command to execute (e.g., \"import\", \"tag\", \"export\", \"remove\")'),\n args: z.array(z.string()).optional().describe('Arguments to pass to the command'),\n flags: z\n .record(z.union([z.string(), z.boolean()]))\n .optional()\n .describe('Flags to pass to the command as key-value pairs'),\n };\n\n server.tool(toolName, description, schema, async (params: any) => {\n try {\n let { command, args = [] } = params;\n const { flags = {}, cwd } = params;\n\n // Handle sub-commands: if command has multiple words, move the second word to args\n const commandParts = command.trim().split(/\\s+/);\n if (commandParts.length > 1) {\n command = commandParts[0];\n args = [commandParts[1], ...args];\n }\n\n this.logger.debug(\n `[MCP-DEBUG] Executing command: ${command} with args: ${JSON.stringify(args)} and flags: ${JSON.stringify(flags)}`\n );\n const result = await this.callBitServerAPI(command, args, flags, cwd);\n return this.formatAsCallToolResult(result);\n } catch (error) {\n this.logger.error(`[MCP-DEBUG] Error in bit_execute tool: ${(error as Error).message}`);\n return this.formatErrorAsCallToolResult(error as Error, 'executing command');\n }\n });\n }\n\n private processSubCommands(server: McpServer, parentCmd: Command, options: CommandFilterOptions) {\n const parentCmdName = getCommandName(parentCmd);\n\n parentCmd.commands?.forEach((subCmd) => {\n const subCmdName = getCommandName(subCmd);\n const fullCmdName = `${parentCmdName} ${subCmdName}`;\n\n if (this.shouldIncludeCommand(fullCmdName, options)) {\n this.registerToolForCommand(server, subCmd, parentCmd);\n }\n });\n }\n\n private async runBit(args: string[], cwd: string): Promise<CallToolResult> {\n this.logger.debug(`[MCP-DEBUG] Running: ${this.bitBin} ${args.join(' ')} in ${cwd}`);\n const cmd = `${this.bitBin} ${args.join(' ')}`;\n try {\n const cmdOutput = childProcess.execSync(cmd, { cwd });\n this.logger.debug(`[MCP-DEBUG] result. stdout: ${cmdOutput}`);\n\n return { content: [{ type: 'text', text: cmdOutput.toString() }] };\n } catch (error: any) {\n this.logger.error(`[MCP-DEBUG] Error executing ${cmd}`, error);\n\n return { content: [{ type: 'text', text: error.message }] };\n }\n }\n\n /**\n * Helper method to execute a bit-server API call with standardized error handling\n */\n private async executeBitServerCommand(\n command: string,\n args: string[] = [],\n flags: Record<string, any> = {},\n cwd: string,\n operationName: string\n ): Promise<any> {\n try {\n const result = await this.callBitServerAPI(command, args, flags, cwd);\n this.logger.debug(`[MCP-DEBUG] Successfully executed ${operationName} via bit-server`);\n return result;\n } catch (error) {\n this.logger.warn(`[MCP-DEBUG] Failed to execute ${operationName} via bit-server: ${(error as Error).message}`);\n throw error;\n }\n }\n\n /**\n * Helper method to format any result as CallToolResult\n */\n private formatAsCallToolResult(result: any): CallToolResult {\n if (typeof result === 'string') {\n return { content: [{ type: 'text', text: result }] } as CallToolResult;\n } else if (typeof result === 'object') {\n return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] } as CallToolResult;\n } else {\n return { content: [{ type: 'text', text: String(result) }] } as CallToolResult;\n }\n }\n\n /**\n * Helper method to format error as CallToolResult\n */\n private formatErrorAsCallToolResult(error: Error, operation: string): CallToolResult {\n return {\n content: [\n {\n type: 'text',\n text: `Error ${operation}: ${error.message}`,\n },\n ],\n } as CallToolResult;\n }\n\n /**\n * Helper method to safely execute a bit command with error handling\n */\n private async safeBitCommandExecution(\n command: string,\n args: string[] = [],\n flags: Record<string, any> = {},\n cwd: string,\n operationName: string,\n includeErrorInResult = false\n ): Promise<{ success: boolean; result: any; error?: string }> {\n try {\n let result = await this.executeBitServerCommand(command, args, flags, cwd, operationName);\n\n // Unwrap the result from data wrapper if it exists and we have a successful result\n if (result && typeof result === 'object' && 'data' in result && result.data !== undefined) {\n result = result.data;\n }\n\n // Clean up output by removing ANSI color codes when not using JSON format\n const useJson = flags && flags.json === true;\n if (!useJson && typeof result === 'string') {\n result = stripAnsi(result);\n }\n\n return { success: true, result };\n } catch (error) {\n if (includeErrorInResult) {\n return {\n success: false,\n result: { error: `Failed to ${operationName}: ${(error as Error).message}` },\n error: (error as Error).message,\n };\n } else {\n throw error;\n }\n }\n }\n\n // Setup command business logic methods\n getEditorDisplayName(editor: string): string {\n return McpSetupUtils.getEditorDisplayName(editor);\n }\n\n async setupEditor(editor: string, options: SetupOptions, workspaceDir?: string): Promise<void> {\n const supportedEditors = ['vscode', 'cursor', 'windsurf'];\n const editorLower = editor.toLowerCase();\n\n if (!supportedEditors.includes(editorLower)) {\n throw new Error(`Editor \"${editor}\" is not supported yet. Currently supported: ${supportedEditors.join(', ')}`);\n }\n\n // Add workspaceDir to options if provided\n const setupOptions: SetupOptions = { ...options };\n if (workspaceDir) {\n setupOptions.workspaceDir = workspaceDir;\n }\n\n if (editorLower === 'vscode') {\n await McpSetupUtils.setupVSCode(setupOptions);\n } else if (editorLower === 'cursor') {\n await McpSetupUtils.setupCursor(setupOptions);\n } else if (editorLower === 'windsurf') {\n await McpSetupUtils.setupWindsurf(setupOptions);\n }\n }\n\n static slots = [];\n static dependencies = [CLIAspect, LoggerAspect];\n static runtime = MainRuntime;\n static async provider([cli, loggerMain]: [CLIMain, LoggerMain]) {\n const logger = loggerMain.createLogger(CliMcpServerAspect.id);\n const mcpServer = new CliMcpServerMain(cli, logger);\n const mcpServerCmd = new McpServerCmd(mcpServer);\n mcpServerCmd.commands = [new McpStartCmd(mcpServer), new McpSetupCmd(mcpServer)];\n cli.register(mcpServerCmd);\n return mcpServer;\n }\n}\n\nCliMcpServerAspect.addRuntime(CliMcpServerMain);\n\nexport default CliMcpServerMain;\n"],"mappings":"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","ignoreList":[]}
@@ -266,7 +266,6 @@ describe('CliMcpServer Integration Tests', function () {
266
266
  (0, _chai().expect)(content).to.have.property('name', 'lane switch');
267
267
  (0, _chai().expect)(content).to.have.property('description');
268
268
  (0, _chai().expect)(content.description).to.include('switch to the specified lane');
269
- (0, _chai().expect)(content).to.have.property('private', true);
270
269
  (0, _chai().expect)(content).to.have.property('arguments');
271
270
  (0, _chai().expect)(content.arguments).to.be.an('array');
272
271
  (0, _chai().expect)(content.arguments[0]).to.have.property('name', 'lane');
@@ -1 +1 @@
1
- {"version":3,"names":["_chai","data","require","_index","_stdio","_workspaceTesting","_componentTesting","_harmonyTesting","_fsExtra","_interopRequireDefault","_path","_cliMcpServer","e","__esModule","default","describe","timeout","workspaceData","mcpClient","workspacePath","before","mockWorkspace","mockComponents","after","destroyWorkspace","beforeEach","transport","StdioClientTransport","command","args","cwd","Client","name","version","capabilities","connect","afterEach","close","it","response","listTools","expect","tools","to","be","an","length","greaterThan","toolNames","map","tool","include","result","callTool","arguments","includeStatus","includeList","have","property","content","JSON","parse","text","firstComponentId","componentName","includeSchema","a","commands","firstCommand","extendedDescription","internal","subcommand","description","flags","json","fail","error","exist","mcpServer","loadAspect","CliMcpServerAspect","setupWorkspaceData","setupWorkspacePath","setupMcpServer","setupEditor","isGlobal","message","vscodeSettingsPath","path","join","settingsExists","fs","pathExists","true","settings","readJson","mcp","servers","deep","equal","extended","consumerProject","includeOnly","cursorConfigPath","configExists","config","mcpServers","bit","type","windsurfConfigPath","ensureDir","dirname","writeJson"],"sources":["cli-mcp-server.spec.ts"],"sourcesContent":["/* eslint-disable import/extensions */\n/* eslint-disable import/no-unresolved */\n\nimport { expect } from 'chai';\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';\nimport { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport { mockWorkspace, destroyWorkspace, WorkspaceData } from '@teambit/workspace.testing.mock-workspace';\nimport { mockComponents } from '@teambit/component.testing.mock-components';\nimport { loadAspect } from '@teambit/harmony.testing.load-aspect';\nimport fs from 'fs-extra';\nimport path from 'path';\n\nimport { CliMcpServerAspect } from './cli-mcp-server.aspect';\nimport { CliMcpServerMain } from './cli-mcp-server.main.runtime';\n\ndescribe('CliMcpServer Integration Tests', function () {\n this.timeout(30000); // Increased timeout for MCP server operations\n\n let workspaceData: WorkspaceData;\n let mcpClient: Client;\n let workspacePath: string;\n\n before(async () => {\n // Set up mock workspace with components\n workspaceData = mockWorkspace();\n workspacePath = workspaceData.workspacePath;\n await mockComponents(workspacePath);\n });\n\n after(async () => {\n await destroyWorkspace(workspaceData);\n });\n\n beforeEach(async () => {\n // Create MCP client and connect directly to the MCP server command\n const transport = new StdioClientTransport({\n command: 'bit',\n args: ['mcp-server'],\n cwd: workspacePath,\n });\n\n mcpClient = new Client(\n {\n name: 'test-client',\n version: '1.0.0',\n },\n {\n capabilities: {},\n }\n );\n\n await mcpClient.connect(transport);\n });\n\n afterEach(async () => {\n // Clean up MCP client\n if (mcpClient) {\n await mcpClient.close();\n }\n });\n\n describe('MCP Server Protocol', () => {\n it('should list available tools', async () => {\n const response = await mcpClient.listTools();\n\n expect(response.tools).to.be.an('array');\n expect(response.tools.length).to.be.greaterThan(0);\n\n // Check for essential MCP tools\n const toolNames = response.tools.map((tool) => tool.name);\n expect(toolNames).to.include('bit_workspace_info');\n expect(toolNames).to.include('bit_component_details');\n expect(toolNames).to.include('bit_commands_list');\n expect(toolNames).to.include('bit_query');\n expect(toolNames).to.include('bit_execute');\n });\n });\n\n describe('bit_workspace_info tool', () => {\n it('should get workspace information', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_workspace_info',\n arguments: {\n cwd: workspacePath,\n includeStatus: true,\n includeList: true,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('status');\n expect(content).to.have.property('list');\n });\n\n it('should handle workspace info without optional parameters', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_workspace_info',\n arguments: {\n cwd: workspacePath,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('status');\n });\n });\n\n describe('bit_component_details tool', () => {\n it('should get component details for an existing component', async () => {\n const firstComponentId = 'comp1';\n\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentName: firstComponentId,\n includeSchema: false,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('show');\n });\n\n it('should get component details with schema', async () => {\n const firstComponentId = 'comp1';\n\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentName: firstComponentId,\n includeSchema: true,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('show');\n });\n\n it('should handle non-existent component gracefully', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentName: 'non-existent/component',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n // Should return error information or component details\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n });\n\n describe('bit_commands_list tool', () => {\n it('should get basic commands list', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_commands_list',\n arguments: {},\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('commands');\n expect(content.commands).to.be.an('array');\n expect(content.commands.length).to.be.greaterThan(0);\n\n // Check command structure\n const firstCommand = content.commands[0];\n expect(firstCommand).to.have.property('name');\n expect(firstCommand).to.have.property('description');\n });\n\n it('should get extended commands info', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_commands_list',\n arguments: {\n extendedDescription: true,\n internal: false,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('commands');\n expect(content.commands).to.be.an('array');\n expect(content.commands.length).to.be.greaterThan(0);\n });\n });\n\n describe('bit_command_help tool', () => {\n it('should get help for a main command', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'status',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('name', 'status');\n expect(content).to.have.property('description');\n expect(content).to.have.property('options');\n });\n\n it('should get help for lane switch subcommand (private command)', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'lane',\n subcommand: 'switch',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('name', 'lane switch');\n expect(content).to.have.property('description');\n expect(content.description).to.include('switch to the specified lane');\n expect(content).to.have.property('private', true);\n expect(content).to.have.property('arguments');\n expect(content.arguments).to.be.an('array');\n expect(content.arguments[0]).to.have.property('name', 'lane');\n expect(content.arguments[0]).to.have.property('description');\n });\n\n it('should get help for a subcommand that exists', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'lane',\n subcommand: 'show',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('name', 'lane show');\n expect(content).to.have.property('description');\n });\n\n it('should return error for non-existent command', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'nonexistent',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = (result.content[0] as any).text;\n expect(content).to.include('Command not found: nonexistent');\n });\n\n it('should return error for non-existent subcommand', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'lane',\n subcommand: 'nonexistent',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = (result.content[0] as any).text;\n expect(content).to.include('Command not found: lane nonexistent');\n });\n });\n\n describe('bit_query tool', () => {\n it('should execute read-only commands', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_query',\n arguments: {\n cwd: workspacePath,\n command: 'status',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n // Should return command output\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n\n it('should handle commands with arguments and flags', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_query',\n arguments: {\n cwd: workspacePath,\n command: 'list',\n args: [],\n flags: {\n json: true,\n },\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n });\n\n describe('Error Handling', () => {\n it('should handle invalid tool calls gracefully', async () => {\n try {\n await mcpClient.callTool({\n name: 'non_existent_tool',\n arguments: {},\n });\n expect.fail('Should have thrown an error for non-existent tool');\n } catch (error) {\n expect(error).to.exist;\n }\n });\n\n it('should handle invalid workspace directory', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_workspace_info',\n arguments: {\n cwd: '/non/existent/path',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n // Should return error information\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n });\n});\n\ndescribe('CliMcpServer Direct Aspect Tests', function () {\n this.timeout(30000);\n\n let workspaceData: WorkspaceData;\n let mcpServer: CliMcpServerMain;\n let workspacePath: string;\n\n before(async () => {\n // Set up mock workspace with components\n workspaceData = mockWorkspace();\n workspacePath = workspaceData.workspacePath;\n await mockComponents(workspacePath);\n\n // Load the aspect directly\n mcpServer = await loadAspect(CliMcpServerAspect, workspacePath);\n });\n\n after(async () => {\n await destroyWorkspace(workspaceData);\n });\n\n describe('Setup Editor Methods', () => {\n let setupWorkspaceData: WorkspaceData;\n let setupWorkspacePath: string;\n let setupMcpServer: CliMcpServerMain;\n\n beforeEach(async () => {\n // Create a separate mock workspace for setup testing\n setupWorkspaceData = mockWorkspace();\n setupWorkspacePath = setupWorkspaceData.workspacePath;\n await mockComponents(setupWorkspacePath);\n\n // Load the aspect for this workspace\n setupMcpServer = await loadAspect(CliMcpServerAspect, setupWorkspacePath);\n });\n\n afterEach(async () => {\n // Clean up the setup workspace\n if (setupWorkspaceData) {\n await destroyWorkspace(setupWorkspaceData);\n }\n });\n\n it('should handle unsupported editor gracefully', async () => {\n try {\n await mcpServer.setupEditor('unsupported-editor', {\n isGlobal: false,\n });\n expect.fail('Should have thrown an error for unsupported editor');\n } catch (error) {\n expect(error).to.exist;\n expect((error as Error).message).to.include('Editor \"unsupported-editor\" is not supported yet');\n expect((error as Error).message).to.include('Currently supported: vscode, cursor, windsurf');\n }\n });\n\n it('should setup VS Code integration directly', async () => {\n await setupMcpServer.setupEditor(\n 'vscode',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that the settings.json file was created in the workspace directory\n const vscodeSettingsPath = path.join(setupWorkspacePath, '.vscode', 'settings.json');\n const settingsExists = await fs.pathExists(vscodeSettingsPath);\n expect(settingsExists).to.be.true;\n\n // Verify the content of the settings file\n const settings = await fs.readJson(vscodeSettingsPath);\n expect(settings).to.have.property('mcp');\n expect(settings.mcp).to.have.property('servers');\n expect(settings.mcp.servers).to.have.property('bit-cli');\n expect(settings.mcp.servers['bit-cli']).to.deep.equal({\n command: 'bit',\n args: ['mcp-server'],\n });\n });\n\n it('should setup VS Code integration with extended options', async () => {\n await setupMcpServer.setupEditor(\n 'vscode',\n {\n extended: true,\n consumerProject: true,\n includeOnly: 'status,list',\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n const vscodeSettingsPath = path.join(setupWorkspacePath, '.vscode', 'settings.json');\n const settings = await fs.readJson(vscodeSettingsPath);\n\n expect(settings.mcp.servers['bit-cli'].args).to.include('--extended');\n expect(settings.mcp.servers['bit-cli'].args).to.include('--consumer-project');\n expect(settings.mcp.servers['bit-cli'].args).to.include('--include-only');\n expect(settings.mcp.servers['bit-cli'].args).to.include('status,list');\n });\n\n it('should setup Cursor integration directly', async () => {\n await setupMcpServer.setupEditor(\n 'cursor',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that the mcp.json file was created in the workspace directory\n const cursorConfigPath = path.join(setupWorkspacePath, '.cursor', 'mcp.json');\n const configExists = await fs.pathExists(cursorConfigPath);\n expect(configExists).to.be.true;\n\n // Verify the content of the config file\n const config = await fs.readJson(cursorConfigPath);\n expect(config).to.have.property('mcpServers');\n expect(config.mcpServers).to.have.property('bit');\n expect(config.mcpServers.bit).to.deep.equal({\n type: 'stdio',\n command: 'bit',\n args: ['mcp-server'],\n });\n });\n\n it('should setup Windsurf integration directly', async () => {\n await setupMcpServer.setupEditor(\n 'windsurf',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that the mcp.json file was created in the workspace directory\n const windsurfConfigPath = path.join(setupWorkspacePath, '.windsurf', 'mcp.json');\n const configExists = await fs.pathExists(windsurfConfigPath);\n expect(configExists).to.be.true;\n\n // Verify the content of the config file\n const config = await fs.readJson(windsurfConfigPath);\n expect(config).to.have.property('mcpServers');\n expect(config.mcpServers).to.have.property('bit');\n expect(config.mcpServers.bit).to.deep.equal({\n type: 'stdio',\n command: 'bit',\n args: ['mcp-server'],\n });\n });\n\n it('should merge with existing VS Code settings', async () => {\n // First, create existing settings\n const vscodeSettingsPath = path.join(setupWorkspacePath, '.vscode', 'settings.json');\n await fs.ensureDir(path.dirname(vscodeSettingsPath));\n await fs.writeJson(vscodeSettingsPath, {\n 'editor.formatOnSave': true,\n 'typescript.preferences.includePackageJsonAutoImports': 'off',\n });\n\n // Run setup\n await setupMcpServer.setupEditor(\n 'vscode',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that existing settings are preserved and MCP config is added\n const settings = await fs.readJson(vscodeSettingsPath);\n expect(settings).to.have.property('editor.formatOnSave', true);\n expect(settings).to.have.property('typescript.preferences.includePackageJsonAutoImports', 'off');\n expect(settings).to.have.property('mcp');\n expect(settings.mcp.servers['bit-cli']).to.deep.equal({\n command: 'bit',\n args: ['mcp-server'],\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_chai","data","require","_index","_stdio","_workspaceTesting","_componentTesting","_harmonyTesting","_fsExtra","_interopRequireDefault","_path","_cliMcpServer","e","__esModule","default","describe","timeout","workspaceData","mcpClient","workspacePath","before","mockWorkspace","mockComponents","after","destroyWorkspace","beforeEach","transport","StdioClientTransport","command","args","cwd","Client","name","version","capabilities","connect","afterEach","close","it","response","listTools","expect","tools","to","be","an","length","greaterThan","toolNames","map","tool","include","result","callTool","arguments","includeStatus","includeList","have","property","content","JSON","parse","text","firstComponentId","componentName","includeSchema","a","commands","firstCommand","extendedDescription","internal","subcommand","description","flags","json","fail","error","exist","mcpServer","loadAspect","CliMcpServerAspect","setupWorkspaceData","setupWorkspacePath","setupMcpServer","setupEditor","isGlobal","message","vscodeSettingsPath","path","join","settingsExists","fs","pathExists","true","settings","readJson","mcp","servers","deep","equal","extended","consumerProject","includeOnly","cursorConfigPath","configExists","config","mcpServers","bit","type","windsurfConfigPath","ensureDir","dirname","writeJson"],"sources":["cli-mcp-server.spec.ts"],"sourcesContent":["/* eslint-disable import/extensions */\n/* eslint-disable import/no-unresolved */\n\nimport { expect } from 'chai';\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';\nimport { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport { mockWorkspace, destroyWorkspace, WorkspaceData } from '@teambit/workspace.testing.mock-workspace';\nimport { mockComponents } from '@teambit/component.testing.mock-components';\nimport { loadAspect } from '@teambit/harmony.testing.load-aspect';\nimport fs from 'fs-extra';\nimport path from 'path';\n\nimport { CliMcpServerAspect } from './cli-mcp-server.aspect';\nimport { CliMcpServerMain } from './cli-mcp-server.main.runtime';\n\ndescribe('CliMcpServer Integration Tests', function () {\n this.timeout(30000); // Increased timeout for MCP server operations\n\n let workspaceData: WorkspaceData;\n let mcpClient: Client;\n let workspacePath: string;\n\n before(async () => {\n // Set up mock workspace with components\n workspaceData = mockWorkspace();\n workspacePath = workspaceData.workspacePath;\n await mockComponents(workspacePath);\n });\n\n after(async () => {\n await destroyWorkspace(workspaceData);\n });\n\n beforeEach(async () => {\n // Create MCP client and connect directly to the MCP server command\n const transport = new StdioClientTransport({\n command: 'bit',\n args: ['mcp-server'],\n cwd: workspacePath,\n });\n\n mcpClient = new Client(\n {\n name: 'test-client',\n version: '1.0.0',\n },\n {\n capabilities: {},\n }\n );\n\n await mcpClient.connect(transport);\n });\n\n afterEach(async () => {\n // Clean up MCP client\n if (mcpClient) {\n await mcpClient.close();\n }\n });\n\n describe('MCP Server Protocol', () => {\n it('should list available tools', async () => {\n const response = await mcpClient.listTools();\n\n expect(response.tools).to.be.an('array');\n expect(response.tools.length).to.be.greaterThan(0);\n\n // Check for essential MCP tools\n const toolNames = response.tools.map((tool) => tool.name);\n expect(toolNames).to.include('bit_workspace_info');\n expect(toolNames).to.include('bit_component_details');\n expect(toolNames).to.include('bit_commands_list');\n expect(toolNames).to.include('bit_query');\n expect(toolNames).to.include('bit_execute');\n });\n });\n\n describe('bit_workspace_info tool', () => {\n it('should get workspace information', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_workspace_info',\n arguments: {\n cwd: workspacePath,\n includeStatus: true,\n includeList: true,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('status');\n expect(content).to.have.property('list');\n });\n\n it('should handle workspace info without optional parameters', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_workspace_info',\n arguments: {\n cwd: workspacePath,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('status');\n });\n });\n\n describe('bit_component_details tool', () => {\n it('should get component details for an existing component', async () => {\n const firstComponentId = 'comp1';\n\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentName: firstComponentId,\n includeSchema: false,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('show');\n });\n\n it('should get component details with schema', async () => {\n const firstComponentId = 'comp1';\n\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentName: firstComponentId,\n includeSchema: true,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('show');\n });\n\n it('should handle non-existent component gracefully', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentName: 'non-existent/component',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n // Should return error information or component details\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n });\n\n describe('bit_commands_list tool', () => {\n it('should get basic commands list', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_commands_list',\n arguments: {},\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('commands');\n expect(content.commands).to.be.an('array');\n expect(content.commands.length).to.be.greaterThan(0);\n\n // Check command structure\n const firstCommand = content.commands[0];\n expect(firstCommand).to.have.property('name');\n expect(firstCommand).to.have.property('description');\n });\n\n it('should get extended commands info', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_commands_list',\n arguments: {\n extendedDescription: true,\n internal: false,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('commands');\n expect(content.commands).to.be.an('array');\n expect(content.commands.length).to.be.greaterThan(0);\n });\n });\n\n describe('bit_command_help tool', () => {\n it('should get help for a main command', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'status',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('name', 'status');\n expect(content).to.have.property('description');\n expect(content).to.have.property('options');\n });\n\n it('should get help for lane switch subcommand (private command)', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'lane',\n subcommand: 'switch',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('name', 'lane switch');\n expect(content).to.have.property('description');\n expect(content.description).to.include('switch to the specified lane');\n expect(content).to.have.property('arguments');\n expect(content.arguments).to.be.an('array');\n expect(content.arguments[0]).to.have.property('name', 'lane');\n expect(content.arguments[0]).to.have.property('description');\n });\n\n it('should get help for a subcommand that exists', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'lane',\n subcommand: 'show',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('name', 'lane show');\n expect(content).to.have.property('description');\n });\n\n it('should return error for non-existent command', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'nonexistent',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = (result.content[0] as any).text;\n expect(content).to.include('Command not found: nonexistent');\n });\n\n it('should return error for non-existent subcommand', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'lane',\n subcommand: 'nonexistent',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = (result.content[0] as any).text;\n expect(content).to.include('Command not found: lane nonexistent');\n });\n });\n\n describe('bit_query tool', () => {\n it('should execute read-only commands', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_query',\n arguments: {\n cwd: workspacePath,\n command: 'status',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n // Should return command output\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n\n it('should handle commands with arguments and flags', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_query',\n arguments: {\n cwd: workspacePath,\n command: 'list',\n args: [],\n flags: {\n json: true,\n },\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n });\n\n describe('Error Handling', () => {\n it('should handle invalid tool calls gracefully', async () => {\n try {\n await mcpClient.callTool({\n name: 'non_existent_tool',\n arguments: {},\n });\n expect.fail('Should have thrown an error for non-existent tool');\n } catch (error) {\n expect(error).to.exist;\n }\n });\n\n it('should handle invalid workspace directory', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_workspace_info',\n arguments: {\n cwd: '/non/existent/path',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n // Should return error information\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n });\n});\n\ndescribe('CliMcpServer Direct Aspect Tests', function () {\n this.timeout(30000);\n\n let workspaceData: WorkspaceData;\n let mcpServer: CliMcpServerMain;\n let workspacePath: string;\n\n before(async () => {\n // Set up mock workspace with components\n workspaceData = mockWorkspace();\n workspacePath = workspaceData.workspacePath;\n await mockComponents(workspacePath);\n\n // Load the aspect directly\n mcpServer = await loadAspect(CliMcpServerAspect, workspacePath);\n });\n\n after(async () => {\n await destroyWorkspace(workspaceData);\n });\n\n describe('Setup Editor Methods', () => {\n let setupWorkspaceData: WorkspaceData;\n let setupWorkspacePath: string;\n let setupMcpServer: CliMcpServerMain;\n\n beforeEach(async () => {\n // Create a separate mock workspace for setup testing\n setupWorkspaceData = mockWorkspace();\n setupWorkspacePath = setupWorkspaceData.workspacePath;\n await mockComponents(setupWorkspacePath);\n\n // Load the aspect for this workspace\n setupMcpServer = await loadAspect(CliMcpServerAspect, setupWorkspacePath);\n });\n\n afterEach(async () => {\n // Clean up the setup workspace\n if (setupWorkspaceData) {\n await destroyWorkspace(setupWorkspaceData);\n }\n });\n\n it('should handle unsupported editor gracefully', async () => {\n try {\n await mcpServer.setupEditor('unsupported-editor', {\n isGlobal: false,\n });\n expect.fail('Should have thrown an error for unsupported editor');\n } catch (error) {\n expect(error).to.exist;\n expect((error as Error).message).to.include('Editor \"unsupported-editor\" is not supported yet');\n expect((error as Error).message).to.include('Currently supported: vscode, cursor, windsurf');\n }\n });\n\n it('should setup VS Code integration directly', async () => {\n await setupMcpServer.setupEditor(\n 'vscode',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that the settings.json file was created in the workspace directory\n const vscodeSettingsPath = path.join(setupWorkspacePath, '.vscode', 'settings.json');\n const settingsExists = await fs.pathExists(vscodeSettingsPath);\n expect(settingsExists).to.be.true;\n\n // Verify the content of the settings file\n const settings = await fs.readJson(vscodeSettingsPath);\n expect(settings).to.have.property('mcp');\n expect(settings.mcp).to.have.property('servers');\n expect(settings.mcp.servers).to.have.property('bit-cli');\n expect(settings.mcp.servers['bit-cli']).to.deep.equal({\n command: 'bit',\n args: ['mcp-server'],\n });\n });\n\n it('should setup VS Code integration with extended options', async () => {\n await setupMcpServer.setupEditor(\n 'vscode',\n {\n extended: true,\n consumerProject: true,\n includeOnly: 'status,list',\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n const vscodeSettingsPath = path.join(setupWorkspacePath, '.vscode', 'settings.json');\n const settings = await fs.readJson(vscodeSettingsPath);\n\n expect(settings.mcp.servers['bit-cli'].args).to.include('--extended');\n expect(settings.mcp.servers['bit-cli'].args).to.include('--consumer-project');\n expect(settings.mcp.servers['bit-cli'].args).to.include('--include-only');\n expect(settings.mcp.servers['bit-cli'].args).to.include('status,list');\n });\n\n it('should setup Cursor integration directly', async () => {\n await setupMcpServer.setupEditor(\n 'cursor',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that the mcp.json file was created in the workspace directory\n const cursorConfigPath = path.join(setupWorkspacePath, '.cursor', 'mcp.json');\n const configExists = await fs.pathExists(cursorConfigPath);\n expect(configExists).to.be.true;\n\n // Verify the content of the config file\n const config = await fs.readJson(cursorConfigPath);\n expect(config).to.have.property('mcpServers');\n expect(config.mcpServers).to.have.property('bit');\n expect(config.mcpServers.bit).to.deep.equal({\n type: 'stdio',\n command: 'bit',\n args: ['mcp-server'],\n });\n });\n\n it('should setup Windsurf integration directly', async () => {\n await setupMcpServer.setupEditor(\n 'windsurf',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that the mcp.json file was created in the workspace directory\n const windsurfConfigPath = path.join(setupWorkspacePath, '.windsurf', 'mcp.json');\n const configExists = await fs.pathExists(windsurfConfigPath);\n expect(configExists).to.be.true;\n\n // Verify the content of the config file\n const config = await fs.readJson(windsurfConfigPath);\n expect(config).to.have.property('mcpServers');\n expect(config.mcpServers).to.have.property('bit');\n expect(config.mcpServers.bit).to.deep.equal({\n type: 'stdio',\n command: 'bit',\n args: ['mcp-server'],\n });\n });\n\n it('should merge with existing VS Code settings', async () => {\n // First, create existing settings\n const vscodeSettingsPath = path.join(setupWorkspacePath, '.vscode', 'settings.json');\n await fs.ensureDir(path.dirname(vscodeSettingsPath));\n await fs.writeJson(vscodeSettingsPath, {\n 'editor.formatOnSave': true,\n 'typescript.preferences.includePackageJsonAutoImports': 'off',\n });\n\n // Run setup\n await setupMcpServer.setupEditor(\n 'vscode',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that existing settings are preserved and MCP config is added\n const settings = await fs.readJson(vscodeSettingsPath);\n expect(settings).to.have.property('editor.formatOnSave', true);\n expect(settings).to.have.property('typescript.preferences.includePackageJsonAutoImports', 'off');\n expect(settings).to.have.property('mcp');\n expect(settings.mcp.servers['bit-cli']).to.deep.equal({\n command: 'bit',\n args: ['mcp-server'],\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  ;
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.mcp_cli-mcp-server@0.0.13/dist/README.docs.mdx';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.mcp_cli-mcp-server@0.0.15/dist/README.docs.mdx';
3
3
 
4
4
  export const compositions = [];
5
5
  export const overview = [overview_0];
package/package.json CHANGED
@@ -1,34 +1,36 @@
1
1
  {
2
2
  "name": "@teambit/cli-mcp-server",
3
- "version": "0.0.13",
3
+ "version": "0.0.15",
4
4
  "homepage": "https://bit.cloud/teambit/mcp/cli-mcp-server",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.mcp",
8
8
  "name": "cli-mcp-server",
9
- "version": "0.0.13"
9
+ "version": "0.0.15"
10
10
  },
11
11
  "dependencies": {
12
+ "comment-json": "4.2.5",
12
13
  "fs-extra": "10.0.0",
13
14
  "node-fetch": "2.6.7",
15
+ "strip-ansi": "6.0.0",
14
16
  "zod": "^3.24.4",
15
17
  "@modelcontextprotocol/sdk": "^1.12.0",
16
18
  "lodash": "4.17.21",
17
19
  "chalk": "4.1.2",
18
20
  "@teambit/harmony": "0.4.7",
19
- "@teambit/cli": "0.0.1202",
21
+ "@teambit/cli": "0.0.1204",
20
22
  "@teambit/legacy.constants": "0.0.11",
21
- "@teambit/logger": "0.0.1295",
22
- "@teambit/scope.network": "0.0.50"
23
+ "@teambit/logger": "0.0.1297",
24
+ "@teambit/scope.network": "0.0.51"
23
25
  },
24
26
  "devDependencies": {
25
27
  "@types/fs-extra": "9.0.7",
26
28
  "@types/node-fetch": "2.5.12",
27
29
  "@types/lodash": "4.14.165",
28
30
  "@teambit/harmony.envs.core-aspect-env": "0.0.69",
29
- "@teambit/component.testing.mock-components": "0.0.312",
30
- "@teambit/harmony.testing.load-aspect": "0.0.307",
31
- "@teambit/workspace.testing.mock-workspace": "0.0.89"
31
+ "@teambit/component.testing.mock-components": "0.0.313",
32
+ "@teambit/harmony.testing.load-aspect": "0.0.308",
33
+ "@teambit/workspace.testing.mock-workspace": "0.0.90"
32
34
  },
33
35
  "peerDependencies": {
34
36
  "chai": "4.3.0",