@teambit/cli-mcp-server 0.0.11 → 0.0.12

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.
@@ -22,6 +22,14 @@ export declare class CliMcpServerMain {
22
22
  * Call bit-server API endpoint using cli-raw route
23
23
  */
24
24
  private callBitServerAPI;
25
+ /**
26
+ * Call bit-server API endpoint using IDE route
27
+ */
28
+ private callBitServerIDEAPI;
29
+ /**
30
+ * Generic method to call bit-server API with different routes
31
+ */
32
+ private callBitServerAPIWithRoute;
25
33
  runMcpServer(options: {
26
34
  extended?: boolean;
27
35
  includeOnly?: string;
@@ -213,6 +213,20 @@ class CliMcpServerMain {
213
213
  * Call bit-server API endpoint using cli-raw route
214
214
  */
215
215
  async callBitServerAPI(command, args = [], flags = {}, cwd, isReTrying = false) {
216
+ return this.callBitServerAPIWithRoute('cli-raw', command, args, flags, cwd, isReTrying);
217
+ }
218
+
219
+ /**
220
+ * Call bit-server API endpoint using IDE route
221
+ */
222
+ async callBitServerIDEAPI(method, args = [], cwd, isReTrying = false) {
223
+ return this.callBitServerAPIWithRoute('ide', method, args, {}, cwd, isReTrying, true);
224
+ }
225
+
226
+ /**
227
+ * Generic method to call bit-server API with different routes
228
+ */
229
+ async callBitServerAPIWithRoute(route, commandOrMethod, argsOrParams = [], flags = {}, cwd, isReTrying = false, isIDERoute = false) {
216
230
  if (!this.serverPort) {
217
231
  if (!cwd) throw new Error('CWD is required to call bit-server API');
218
232
  this.serverPort = await this.getBitServerPort(cwd);
@@ -232,27 +246,37 @@ class CliMcpServerMain {
232
246
  throw new Error('Unable to connect to bit-server. Please ensure you are in a valid Bit workspace.');
233
247
  }
234
248
 
235
- // Build the command array: [command, ...args, ...flagsAsArgs]
236
- const commandArray = [command, ...args];
237
-
238
- // Convert flags to command line arguments
239
- for (const [key, value] of Object.entries(flags)) {
240
- if (value === true) {
241
- commandArray.push(`--${key}`);
242
- } else if (value !== false && value !== undefined) {
243
- commandArray.push(`--${key}`, String(value));
244
- }
245
- }
246
-
247
249
  // Resolve the real path to handle symlinks (e.g., /tmp -> /private/tmp on macOS)
248
250
  const fs = require('fs');
249
251
  const realCwd = fs.realpathSync(cwd);
250
- const body = {
251
- command: commandArray,
252
- pwd: realCwd
253
- };
252
+ let body;
253
+ let url;
254
+ if (isIDERoute) {
255
+ // For IDE route, use the method name and args directly
256
+ body = {
257
+ args: argsOrParams
258
+ };
259
+ url = `${this.serverUrl}/${route}/${commandOrMethod}`;
260
+ } else {
261
+ // For CLI route, build command array with flags
262
+ const commandArray = [commandOrMethod, ...argsOrParams];
263
+
264
+ // Convert flags to command line arguments
265
+ for (const [key, value] of Object.entries(flags)) {
266
+ if (value === true) {
267
+ commandArray.push(`--${key}`);
268
+ } else if (value !== false && value !== undefined) {
269
+ commandArray.push(`--${key}`, String(value));
270
+ }
271
+ }
272
+ body = {
273
+ command: commandArray,
274
+ pwd: realCwd
275
+ };
276
+ url = `${this.serverUrl}/${route}`;
277
+ }
254
278
  try {
255
- const response = await (0, _nodeFetch().default)(`${this.serverUrl}/cli-raw`, {
279
+ const response = await (0, _nodeFetch().default)(url, {
256
280
  method: 'POST',
257
281
  headers: {
258
282
  'Content-Type': 'application/json'
@@ -276,7 +300,7 @@ class CliMcpServerMain {
276
300
  this.serverPort = undefined;
277
301
  this.serverUrl = undefined;
278
302
  this.logger.debug('[MCP-DEBUG] Connection refused, attempting to restart bit-server');
279
- return this.callBitServerAPI(command, args, flags, cwd, true);
303
+ return this.callBitServerAPIWithRoute(route, commandOrMethod, argsOrParams, flags, cwd, true, isIDERoute);
280
304
  }
281
305
  throw err;
282
306
  }
@@ -602,37 +626,20 @@ class CliMcpServerMain {
602
626
  const schema = {
603
627
  cwd: _zod().z.string().describe('Path to workspace directory'),
604
628
  componentName: _zod().z.string().describe('Component name or component ID to get details for'),
605
- includeSchema: _zod().z.boolean().optional().describe('Include component public API schema (default: false)'),
606
- remote: _zod().z.boolean().optional().describe('Get details from remote scope (default: false)')
629
+ includeSchema: _zod().z.boolean().optional().describe('Include component public API schema (default: false)')
607
630
  };
608
631
  server.tool(toolName, description, schema, async params => {
609
632
  try {
610
633
  const includeSchema = params.includeSchema === true;
611
- const remote = params.remote === true;
612
634
  const componentName = params.componentName;
613
- const componentDetails = {};
614
635
 
615
- // Get basic component information using bit show
616
- const showFlags = {
617
- json: true
618
- };
619
- if (remote) {
620
- showFlags.remote = true;
621
- }
622
- const showExecution = await this.safeBitCommandExecution('show', [componentName], showFlags, params.cwd, 'get component show info', true);
623
- componentDetails.show = showExecution.result;
636
+ // Get component details using IDE API with includeSchema parameter
637
+ const ideApiResult = await this.callBitServerIDEAPI('getCompDetails', [componentName, includeSchema], params.cwd);
624
638
 
625
- // Get component schema (public API) if requested
626
- if (includeSchema) {
627
- const schemaFlags = {
628
- json: true
629
- };
630
- if (remote) {
631
- schemaFlags.remote = true;
632
- }
633
- const schemaExecution = await this.safeBitCommandExecution('schema', [componentName], schemaFlags, params.cwd, 'get component schema', true);
634
- componentDetails.schema = schemaExecution.result;
635
- }
639
+ // IDE API returns the result directly, not wrapped in success/error structure
640
+ const componentDetails = {
641
+ show: ideApiResult
642
+ };
636
643
  return this.formatAsCallToolResult(componentDetails);
637
644
  } catch (error) {
638
645
  this.logger.error(`[MCP-DEBUG] Error in bit_component_details tool: ${error.message}`);
@@ -1 +1 @@
1
- {"version":3,"names":["_cli","data","require","_child_process","_interopRequireDefault","_cliMcpServer","_mcpServer","_mcp","_stdio","_zod","_logger","_scope","_legacy","_nodeFetch","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","Error","startedPort","commandArray","key","entries","fs","realCwd","realpathSync","body","pwd","response","fetch","method","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","registerCommandsInfoTool","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","remote","componentDetails","showFlags","showExecution","show","schemaFlags","schemaExecution","internal","subcommand","specificCommand","specificSubcommand","commandsInfo","shouldSkipCommand","private","startsWith","buildCommandInfo","parentName","parentGroup","detailed","groupKey","group","commandInfo","groups","helpUrl","examples","subcommands","subCmd","alias","find","sub","info","isDetailedMode","mainCmdName","subCmdInfo","sort","a","b","localeCompare","total","record","union","fullCommand","isAllowed","readOnlyCommands","allowedCommands","commandArgs","parentCmdName","subCmdName","fullCmdName","cmdOutput","executeBitServerCommand","operationName","operation","includeErrorInResult","success","provider","loggerMain","createLogger","CliMcpServerAspect","id","mcpServer","register","McpServerCmd","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 { CliMcpServerAspect } from './cli-mcp-server.aspect';\nimport { McpServerCmd } 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';\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 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 // Build the command array: [command, ...args, ...flagsAsArgs]\n const commandArray = [command, ...args];\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 // Resolve the real path to handle symlinks (e.g., /tmp -> /private/tmp on macOS)\n const fs = require('fs');\n const realCwd = fs.realpathSync(cwd);\n\n const body = {\n command: commandArray,\n pwd: realCwd,\n };\n\n try {\n const response = await fetch(`${this.serverUrl}/cli-raw`, {\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.callBitServerAPI(command, args, flags, cwd, true);\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 the bit_commands_info tool\n this.registerCommandsInfoTool(server);\n\n // Register arbitrary command execution tools\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 remote: z.boolean().optional().describe('Get details from remote scope (default: false)'),\n };\n\n server.tool(toolName, description, schema, async (params: any) => {\n try {\n const includeSchema = params.includeSchema === true;\n const remote = params.remote === true;\n const componentName = params.componentName;\n\n const componentDetails: any = {};\n\n // Get basic component information using bit show\n const showFlags: Record<string, any> = { json: true };\n if (remote) {\n showFlags.remote = true;\n }\n\n const showExecution = await this.safeBitCommandExecution(\n 'show',\n [componentName],\n showFlags,\n params.cwd,\n 'get component show info',\n true\n );\n componentDetails.show = showExecution.result;\n\n // Get component schema (public API) if requested\n if (includeSchema) {\n const schemaFlags: Record<string, any> = { json: true };\n if (remote) {\n schemaFlags.remote = true;\n }\n\n const schemaExecution = await this.safeBitCommandExecution(\n 'schema',\n [componentName],\n schemaFlags,\n params.cwd,\n 'get component schema',\n true\n );\n componentDetails.schema = schemaExecution.result;\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 registerCommandsInfoTool(server: McpServer) {\n const toolName = 'bit_commands_info';\n const description =\n 'Get information about Bit commands and their groups. Specify command or subcommand to get detailed info.';\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 command: z.string().optional().describe('Get info for a specific command only'),\n subcommand: z.string().optional().describe('Get info for subcommands of a specific main command'),\n };\n\n server.tool(toolName, description, schema, async (params: any) => {\n try {\n const {\n extendedDescription = false,\n internal = false,\n command: specificCommand,\n subcommand: specificSubcommand,\n } = 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 const buildCommandInfo = (cmd: Command, parentName?: string, parentGroup?: string, detailed = false) => {\n if (shouldSkipCommand(cmd)) return null;\n\n const cmdName = parentName ? `${parentName} ${getCommandName(cmd)}` : getCommandName(cmd);\n const groupKey = cmd.group || parentGroup;\n\n const commandInfo: any = {\n name: cmdName,\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 if (!detailed) return commandInfo;\n\n // Add detailed information\n if (cmd.helpUrl) commandInfo.helpUrl = cmd.helpUrl;\n\n const argsData = getArgsData(cmd);\n if (argsData.length > 0) {\n commandInfo.arguments = argsData.map((arg) => ({\n name: arg.nameRaw,\n description: arg.description || '',\n required: arg.required,\n isArray: arg.isArray,\n }));\n }\n\n commandInfo.options = getFlagsData(cmd);\n commandInfo.examples = cmd.examples;\n\n if (cmd.commands && cmd.commands.length > 0) {\n commandInfo.subcommands = cmd.commands\n .filter((subCmd) => !shouldSkipCommand(subCmd))\n .map((subCmd) => ({\n name: `${cmdName} ${getCommandName(subCmd)}`,\n description: subCmd.description || '',\n alias: subCmd.alias || '',\n private: Boolean(subCmd.private),\n }));\n }\n\n return commandInfo;\n };\n\n // Handle specific command + subcommand lookup\n if (specificCommand && specificSubcommand) {\n this.cli.commands.forEach((cmd) => {\n if (getCommandName(cmd) === specificCommand && cmd.commands) {\n const subCmd = cmd.commands.find((sub) => getCommandName(sub) === specificSubcommand);\n if (subCmd) {\n const info = buildCommandInfo(subCmd, specificCommand, cmd.group, true);\n if (info) commandsInfo.push(info);\n }\n }\n });\n }\n // Handle subcommand-only lookup\n else if (specificSubcommand && !specificCommand) {\n this.cli.commands.forEach((cmd) => {\n if (getCommandName(cmd) === specificSubcommand && cmd.commands) {\n cmd.commands.forEach((subCmd) => {\n const info = buildCommandInfo(subCmd, specificSubcommand, cmd.group);\n if (info) commandsInfo.push(info);\n });\n }\n });\n }\n // Handle specific command lookup or general listing\n else {\n const isDetailedMode = Boolean(specificCommand);\n\n this.cli.commands.forEach((cmd) => {\n const mainCmdName = getCommandName(cmd);\n\n // Process main command\n if (!specificCommand || mainCmdName === specificCommand) {\n const info = buildCommandInfo(cmd, undefined, undefined, isDetailedMode);\n if (info && (!specificCommand || info.name === specificCommand)) {\n commandsInfo.push(info);\n }\n }\n\n // Process subcommands\n if (cmd.commands) {\n cmd.commands.forEach((subCmd) => {\n const subCmdInfo = buildCommandInfo(subCmd, mainCmdName, cmd.group, isDetailedMode);\n if (subCmdInfo && (!specificCommand || subCmdInfo.name === specificCommand)) {\n commandsInfo.push(subCmdInfo);\n }\n });\n }\n });\n }\n\n commandsInfo.sort((a, b) => a.name.localeCompare(b.name));\n\n if (commandsInfo.length === 0) {\n let errorMessage = 'No commands found';\n if (specificCommand && specificSubcommand) {\n errorMessage = `No subcommand \"${specificSubcommand}\" found for command: ${specificCommand}`;\n } else if (specificCommand) {\n errorMessage = `No command found with name: ${specificCommand}`;\n } else if (specificSubcommand) {\n errorMessage = `No subcommands found for command: ${specificSubcommand}`;\n }\n return this.formatAsCallToolResult(errorMessage);\n }\n\n const result = JSON.stringify({ total: commandsInfo.length, commands: commandsInfo }, null, 2);\n this.logger.debug(`[MCP-DEBUG] Successfully retrieved commands info. Total: ${commandsInfo.length}`);\n return this.formatAsCallToolResult(result);\n } catch (error) {\n this.logger.error(`[MCP-DEBUG] Error in bit_commands_info tool: ${(error as Error).message}`);\n return this.formatErrorAsCallToolResult(error as Error, 'getting commands info');\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 =\n 'Execute any Bit command, including those that modify workspace or repository state. ⚠️ Use with caution as this can make permanent changes to your project. Consider using bit_query for read-only operations.';\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., \"add\", \"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 const { command, args = [], flags = {}, cwd } = params;\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 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 cli.register(new McpServerCmd(mcpServer));\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","_cliMcpServer","_mcpServer","_mcp","_stdio","_zod","_logger","_scope","_legacy","_nodeFetch","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","fs","realCwd","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","registerCommandsInfoTool","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","subcommand","specificCommand","specificSubcommand","commandsInfo","shouldSkipCommand","private","startsWith","buildCommandInfo","parentName","parentGroup","detailed","groupKey","group","commandInfo","groups","helpUrl","examples","subcommands","subCmd","alias","find","sub","info","isDetailedMode","mainCmdName","subCmdInfo","sort","a","b","localeCompare","total","record","union","fullCommand","isAllowed","readOnlyCommands","allowedCommands","commandArgs","parentCmdName","subCmdName","fullCmdName","cmdOutput","executeBitServerCommand","operationName","operation","includeErrorInResult","success","provider","loggerMain","createLogger","CliMcpServerAspect","id","mcpServer","register","McpServerCmd","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 { CliMcpServerAspect } from './cli-mcp-server.aspect';\nimport { McpServerCmd } 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';\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 fs = require('fs');\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 the bit_commands_info tool\n this.registerCommandsInfoTool(server);\n\n // Register arbitrary command execution tools\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 registerCommandsInfoTool(server: McpServer) {\n const toolName = 'bit_commands_info';\n const description =\n 'Get information about Bit commands and their groups. Specify command or subcommand to get detailed info.';\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 command: z.string().optional().describe('Get info for a specific command only'),\n subcommand: z.string().optional().describe('Get info for subcommands of a specific main command'),\n };\n\n server.tool(toolName, description, schema, async (params: any) => {\n try {\n const {\n extendedDescription = false,\n internal = false,\n command: specificCommand,\n subcommand: specificSubcommand,\n } = 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 const buildCommandInfo = (cmd: Command, parentName?: string, parentGroup?: string, detailed = false) => {\n if (shouldSkipCommand(cmd)) return null;\n\n const cmdName = parentName ? `${parentName} ${getCommandName(cmd)}` : getCommandName(cmd);\n const groupKey = cmd.group || parentGroup;\n\n const commandInfo: any = {\n name: cmdName,\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 if (!detailed) return commandInfo;\n\n // Add detailed information\n if (cmd.helpUrl) commandInfo.helpUrl = cmd.helpUrl;\n\n const argsData = getArgsData(cmd);\n if (argsData.length > 0) {\n commandInfo.arguments = argsData.map((arg) => ({\n name: arg.nameRaw,\n description: arg.description || '',\n required: arg.required,\n isArray: arg.isArray,\n }));\n }\n\n commandInfo.options = getFlagsData(cmd);\n commandInfo.examples = cmd.examples;\n\n if (cmd.commands && cmd.commands.length > 0) {\n commandInfo.subcommands = cmd.commands\n .filter((subCmd) => !shouldSkipCommand(subCmd))\n .map((subCmd) => ({\n name: `${cmdName} ${getCommandName(subCmd)}`,\n description: subCmd.description || '',\n alias: subCmd.alias || '',\n private: Boolean(subCmd.private),\n }));\n }\n\n return commandInfo;\n };\n\n // Handle specific command + subcommand lookup\n if (specificCommand && specificSubcommand) {\n this.cli.commands.forEach((cmd) => {\n if (getCommandName(cmd) === specificCommand && cmd.commands) {\n const subCmd = cmd.commands.find((sub) => getCommandName(sub) === specificSubcommand);\n if (subCmd) {\n const info = buildCommandInfo(subCmd, specificCommand, cmd.group, true);\n if (info) commandsInfo.push(info);\n }\n }\n });\n }\n // Handle subcommand-only lookup\n else if (specificSubcommand && !specificCommand) {\n this.cli.commands.forEach((cmd) => {\n if (getCommandName(cmd) === specificSubcommand && cmd.commands) {\n cmd.commands.forEach((subCmd) => {\n const info = buildCommandInfo(subCmd, specificSubcommand, cmd.group);\n if (info) commandsInfo.push(info);\n });\n }\n });\n }\n // Handle specific command lookup or general listing\n else {\n const isDetailedMode = Boolean(specificCommand);\n\n this.cli.commands.forEach((cmd) => {\n const mainCmdName = getCommandName(cmd);\n\n // Process main command\n if (!specificCommand || mainCmdName === specificCommand) {\n const info = buildCommandInfo(cmd, undefined, undefined, isDetailedMode);\n if (info && (!specificCommand || info.name === specificCommand)) {\n commandsInfo.push(info);\n }\n }\n\n // Process subcommands\n if (cmd.commands) {\n cmd.commands.forEach((subCmd) => {\n const subCmdInfo = buildCommandInfo(subCmd, mainCmdName, cmd.group, isDetailedMode);\n if (subCmdInfo && (!specificCommand || subCmdInfo.name === specificCommand)) {\n commandsInfo.push(subCmdInfo);\n }\n });\n }\n });\n }\n\n commandsInfo.sort((a, b) => a.name.localeCompare(b.name));\n\n if (commandsInfo.length === 0) {\n let errorMessage = 'No commands found';\n if (specificCommand && specificSubcommand) {\n errorMessage = `No subcommand \"${specificSubcommand}\" found for command: ${specificCommand}`;\n } else if (specificCommand) {\n errorMessage = `No command found with name: ${specificCommand}`;\n } else if (specificSubcommand) {\n errorMessage = `No subcommands found for command: ${specificSubcommand}`;\n }\n return this.formatAsCallToolResult(errorMessage);\n }\n\n const result = JSON.stringify({ total: commandsInfo.length, commands: commandsInfo }, null, 2);\n this.logger.debug(`[MCP-DEBUG] Successfully retrieved commands info. Total: ${commandsInfo.length}`);\n return this.formatAsCallToolResult(result);\n } catch (error) {\n this.logger.error(`[MCP-DEBUG] Error in bit_commands_info tool: ${(error as Error).message}`);\n return this.formatErrorAsCallToolResult(error as Error, 'getting commands info');\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 =\n 'Execute any Bit command, including those that modify workspace or repository state. ⚠️ Use with caution as this can make permanent changes to your project. Consider using bit_query for read-only operations.';\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., \"add\", \"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 const { command, args = [], flags = {}, cwd } = params;\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 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 cli.register(new McpServerCmd(mcpServer));\n return mcpServer;\n }\n}\n\nCliMcpServerAspect.addRuntime(CliMcpServerMain);\n\nexport default CliMcpServerMain;\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.11/dist/README.docs.mdx';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.mcp_cli-mcp-server@0.0.12/dist/README.docs.mdx';
3
3
 
4
4
  export const compositions = [];
5
5
  export const overview = [overview_0];
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/cli-mcp-server",
3
- "version": "0.0.11",
3
+ "version": "0.0.12",
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.11"
9
+ "version": "0.0.12"
10
10
  },
11
11
  "dependencies": {
12
12
  "node-fetch": "2.6.7",