@teambit/cli-mcp-server 0.0.153 → 0.0.154

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.
@@ -67,6 +67,15 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
67
67
  /* eslint-disable import/extensions */
68
68
  /* eslint-disable import/no-unresolved */
69
69
 
70
+ /** Parse JSON from an MCP tool response, providing a clear error when the server returned a non-JSON error string. */
71
+ function parseToolJson(result) {
72
+ const text = result.content[0].text;
73
+ try {
74
+ return JSON.parse(text);
75
+ } catch {
76
+ throw new Error(`Expected JSON response from MCP tool but got: ${text.slice(0, 200)}`);
77
+ }
78
+ }
70
79
  describe('CliMcpServer Integration Tests', function () {
71
80
  this.timeout(30000); // Increased timeout for MCP server operations
72
81
 
@@ -190,7 +199,7 @@ describe('CliMcpServer Integration Tests', function () {
190
199
  (0, _chai().expect)(result).to.have.property('content');
191
200
  (0, _chai().expect)(result.content).to.be.an('array');
192
201
  (0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
193
- const content = JSON.parse(result.content[0].text);
202
+ const content = parseToolJson(result);
194
203
  (0, _chai().expect)(content).to.have.property('status');
195
204
  (0, _chai().expect)(content).to.have.property('list');
196
205
  });
@@ -204,7 +213,7 @@ describe('CliMcpServer Integration Tests', function () {
204
213
  (0, _chai().expect)(result).to.have.property('content');
205
214
  (0, _chai().expect)(result.content).to.be.an('array');
206
215
  (0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
207
- const content = JSON.parse(result.content[0].text);
216
+ const content = parseToolJson(result);
208
217
  (0, _chai().expect)(content).to.have.property('status');
209
218
  });
210
219
  });
@@ -222,14 +231,15 @@ describe('CliMcpServer Integration Tests', function () {
222
231
  (0, _chai().expect)(result).to.have.property('content');
223
232
  (0, _chai().expect)(result.content).to.be.an('array');
224
233
  (0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
225
- const content = JSON.parse(result.content[0].text);
234
+ const content = parseToolJson(result);
226
235
  (0, _chai().expect)(content).to.have.property('summary');
227
236
  (0, _chai().expect)(content).to.have.property('components');
228
237
  (0, _chai().expect)(content.summary).to.have.property('requested', 2);
229
238
  (0, _chai().expect)(content.summary).to.have.property('successful');
230
239
  (0, _chai().expect)(content.components).to.be.an('object');
231
240
  });
232
- it('should get component details with schema', async () => {
241
+ it('should get component details with schema', async function () {
242
+ this.retries(2); // schema extraction is heavier and may hit transient socket hang-ups in CI
233
243
  const componentIds = ['comp1'];
234
244
  const result = await mcpClient.callTool({
235
245
  name: 'bit_component_details',
@@ -242,7 +252,7 @@ describe('CliMcpServer Integration Tests', function () {
242
252
  (0, _chai().expect)(result).to.have.property('content');
243
253
  (0, _chai().expect)(result.content).to.be.an('array');
244
254
  (0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
245
- const content = JSON.parse(result.content[0].text);
255
+ const content = parseToolJson(result);
246
256
  (0, _chai().expect)(content).to.have.property('summary');
247
257
  (0, _chai().expect)(content).to.have.property('components');
248
258
  (0, _chai().expect)(content.summary.includeSchema).to.be.true;
@@ -320,7 +330,7 @@ describe('CliMcpServer Integration Tests', function () {
320
330
  (0, _chai().expect)(result).to.have.property('content');
321
331
  (0, _chai().expect)(result.content).to.be.an('array');
322
332
  (0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
323
- const content = JSON.parse(result.content[0].text);
333
+ const content = parseToolJson(result);
324
334
  (0, _chai().expect)(content).to.have.property('commands');
325
335
  (0, _chai().expect)(content.commands).to.be.an('array');
326
336
  (0, _chai().expect)(content.commands.length).to.be.greaterThan(0);
@@ -341,7 +351,7 @@ describe('CliMcpServer Integration Tests', function () {
341
351
  (0, _chai().expect)(result).to.have.property('content');
342
352
  (0, _chai().expect)(result.content).to.be.an('array');
343
353
  (0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
344
- const content = JSON.parse(result.content[0].text);
354
+ const content = parseToolJson(result);
345
355
  (0, _chai().expect)(content).to.have.property('commands');
346
356
  (0, _chai().expect)(content.commands).to.be.an('array');
347
357
  (0, _chai().expect)(content.commands.length).to.be.greaterThan(0);
@@ -358,7 +368,7 @@ describe('CliMcpServer Integration Tests', function () {
358
368
  (0, _chai().expect)(result).to.have.property('content');
359
369
  (0, _chai().expect)(result.content).to.be.an('array');
360
370
  (0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
361
- const content = JSON.parse(result.content[0].text);
371
+ const content = parseToolJson(result);
362
372
  (0, _chai().expect)(content).to.have.property('name', 'status');
363
373
  (0, _chai().expect)(content).to.have.property('description');
364
374
  (0, _chai().expect)(content).to.have.property('options');
@@ -374,7 +384,7 @@ describe('CliMcpServer Integration Tests', function () {
374
384
  (0, _chai().expect)(result).to.have.property('content');
375
385
  (0, _chai().expect)(result.content).to.be.an('array');
376
386
  (0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
377
- const content = JSON.parse(result.content[0].text);
387
+ const content = parseToolJson(result);
378
388
  (0, _chai().expect)(content).to.have.property('name', 'lane switch');
379
389
  (0, _chai().expect)(content).to.have.property('description');
380
390
  (0, _chai().expect)(content.description).to.include('switch to the specified lane');
@@ -394,7 +404,7 @@ describe('CliMcpServer Integration Tests', function () {
394
404
  (0, _chai().expect)(result).to.have.property('content');
395
405
  (0, _chai().expect)(result.content).to.be.an('array');
396
406
  (0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
397
- const content = JSON.parse(result.content[0].text);
407
+ const content = parseToolJson(result);
398
408
  (0, _chai().expect)(content).to.have.property('name', 'lane show');
399
409
  (0, _chai().expect)(content).to.have.property('description');
400
410
  });
@@ -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","consumerProjectClient","not","have","lengthOf","result","callTool","arguments","queries","property","content","includeStatus","includeList","JSON","parse","text","componentIds","includeSchema","summary","components","true","successful","firstComponent","Object","values","responseText","failed","a","tooManyComponents","errorText","commands","firstCommand","extendedDescription","internal","subcommand","description","flags","json","fail","error","exist","mcpServer","loadAspect","CliMcpServerAspect","setupWorkspaceData","setupWorkspacePath","setupMcpServer","setupEditor","isGlobal","message","vscodeMcpPath","path","join","mcpExists","fs","pathExists","mcpConfig","readJson","servers","deep","equal","type","consumerProject","includeAdditional","cursorConfigPath","configExists","config","mcpServers","bit","windsurfConfigPath","rooConfigPath","ensureDir","dirname","writeJson","rulesContent","getRulesContent","contain","writeRulesFile","rulesPath","rulesExists","readFile"],"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 type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport type { WorkspaceData } from '@teambit/workspace.testing.mock-workspace';\nimport { mockWorkspace, destroyWorkspace } 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 type { 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', 'start'],\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('Consumer Project Mode', () => {\n let consumerProjectClient: Client;\n\n beforeEach(async () => {\n // Create MCP client for consumer project mode\n const transport = new StdioClientTransport({\n command: 'bit',\n args: ['mcp-server', 'start', '--consumer-project'],\n cwd: workspacePath,\n });\n\n consumerProjectClient = new Client(\n {\n name: 'test-consumer-client',\n version: '1.0.0',\n },\n {\n capabilities: {},\n }\n );\n\n await consumerProjectClient.connect(transport);\n });\n\n afterEach(async () => {\n if (consumerProjectClient) {\n await consumerProjectClient.close();\n }\n });\n\n it('should only enable bit_remote_search and bit_remote_component_details tools', async () => {\n const response = await consumerProjectClient.listTools();\n\n expect(response.tools).to.be.an('array');\n\n const toolNames = response.tools.map((tool) => tool.name);\n\n // Should include only these two tools\n expect(toolNames).to.include('bit_remote_search');\n expect(toolNames).to.include('bit_remote_component_details');\n\n // Should NOT include these tools that are available in regular mode\n expect(toolNames).to.not.include('bit_workspace_info');\n expect(toolNames).to.not.include('bit_component_details');\n expect(toolNames).to.not.include('bit_commands_list');\n expect(toolNames).to.not.include('bit_command_help');\n expect(toolNames).to.not.include('bit_query');\n expect(toolNames).to.not.include('bit_execute');\n\n // Should NOT include the old separate tools\n expect(toolNames).to.not.include('bit_show');\n expect(toolNames).to.not.include('bit_schema');\n\n // Should have exactly 2 tools\n expect(toolNames).to.have.lengthOf(2);\n });\n\n it('should work with bit_remote_search tool', async () => {\n const result = (await consumerProjectClient.callTool({\n name: 'bit_remote_search',\n arguments: {\n queries: ['button'],\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 });\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 multiple components', async () => {\n const componentIds = ['comp1', 'comp2'];\n\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentIds,\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('summary');\n expect(content).to.have.property('components');\n expect(content.summary).to.have.property('requested', 2);\n expect(content.summary).to.have.property('successful');\n expect(content.components).to.be.an('object');\n });\n\n it('should get component details with schema', async () => {\n const componentIds = ['comp1'];\n\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentIds,\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('summary');\n expect(content).to.have.property('components');\n expect(content.summary.includeSchema).to.be.true;\n if (content.summary.successful > 0) {\n const firstComponent = Object.values(content.components)[0] as any;\n expect(firstComponent).to.have.property('publicAPI');\n }\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 componentIds: ['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 const responseText = (result.content[0] as any).text;\n\n // Try to parse as JSON first\n try {\n const content = JSON.parse(responseText);\n // Should have summary with failed components\n expect(content).to.have.property('summary');\n expect(content.summary).to.have.property('failed');\n expect(content.summary.failed).to.be.greaterThan(0);\n } catch {\n // If not JSON, should be an error message string\n expect(responseText).to.be.a('string');\n expect(responseText).to.include('Failed to get details for any components');\n }\n });\n\n it('should reject requests with more than 5 components', async () => {\n const tooManyComponents = ['comp1', 'comp2', 'comp3', 'comp4', 'comp5', 'comp6'];\n\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentIds: tooManyComponents,\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('Too many components requested');\n expect(content).to.include('Maximum allowed is 5');\n });\n\n it('should require componentIds parameter', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n // Missing componentIds parameter\n },\n })) as CallToolResult;\n\n // With new SDK (1.22+), validation errors are returned in result with isError flag\n expect(result).to.have.property('isError', true);\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n const errorText = (result.content[0] as any).text;\n expect(errorText).to.include('componentIds');\n expect(errorText).to.include('Required');\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 commands info with extended description', 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, roo, cline');\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 mcp.json file was created in the workspace directory\n const vscodeMcpPath = path.join(setupWorkspacePath, '.vscode', 'mcp.json');\n const mcpExists = await fs.pathExists(vscodeMcpPath);\n expect(mcpExists).to.be.true;\n\n // Verify the content of the mcp.json file\n const mcpConfig = await fs.readJson(vscodeMcpPath);\n expect(mcpConfig).to.have.property('servers');\n expect(mcpConfig.servers).to.have.property('bit-cli');\n expect(mcpConfig.servers['bit-cli']).to.deep.equal({\n type: 'stdio',\n command: 'bit',\n args: ['mcp-server', 'start'],\n });\n });\n\n it('should setup VS Code integration with consumer project options', async () => {\n await setupMcpServer.setupEditor(\n 'vscode',\n {\n consumerProject: true,\n includeAdditional: 'status,list',\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n const vscodeMcpPath = path.join(setupWorkspacePath, '.vscode', 'mcp.json');\n const mcpConfig = await fs.readJson(vscodeMcpPath);\n\n expect(mcpConfig.servers['bit-cli'].args).to.include('--consumer-project');\n expect(mcpConfig.servers['bit-cli'].args).to.include('--include-additional');\n expect(mcpConfig.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', 'start'],\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', 'start'],\n });\n });\n\n it('should setup Roo Code integration directly', async () => {\n await setupMcpServer.setupEditor(\n 'roo',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that the mcp.json file was created in the workspace directory\n const rooConfigPath = path.join(setupWorkspacePath, '.roo', 'mcp.json');\n const configExists = await fs.pathExists(rooConfigPath);\n expect(configExists).to.be.true;\n\n // Verify the content of the config file\n const config = await fs.readJson(rooConfigPath);\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', 'start'],\n });\n });\n\n it('should throw error when trying to setup Roo Code globally', async () => {\n try {\n await setupMcpServer.setupEditor(\n 'roo',\n {\n isGlobal: true,\n },\n setupWorkspacePath\n );\n expect.fail('Should have thrown an error for global Roo Code setup');\n } catch (error) {\n expect(error).to.exist;\n expect((error as Error).message).to.include('Roo Code global configuration is not supported');\n expect((error as Error).message).to.include('VS Code internal storage that cannot be accessed');\n }\n });\n\n it('should merge with existing VS Code mcp.json config', async () => {\n // First, create existing MCP config\n const vscodeMcpPath = path.join(setupWorkspacePath, '.vscode', 'mcp.json');\n await fs.ensureDir(path.dirname(vscodeMcpPath));\n await fs.writeJson(vscodeMcpPath, {\n servers: {\n 'existing-server': {\n type: 'stdio',\n command: 'some-other-command',\n args: ['start'],\n },\n },\n });\n\n // Run setup\n await setupMcpServer.setupEditor(\n 'vscode',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that existing MCP config is preserved and Bit config is added\n const mcpConfig = await fs.readJson(vscodeMcpPath);\n expect(mcpConfig.servers).to.have.property('existing-server');\n expect(mcpConfig.servers['existing-server']).to.deep.equal({\n type: 'stdio',\n command: 'some-other-command',\n args: ['start'],\n });\n expect(mcpConfig.servers).to.have.property('bit-cli');\n expect(mcpConfig.servers['bit-cli']).to.deep.equal({\n type: 'stdio',\n command: 'bit',\n args: ['mcp-server', 'start'],\n });\n });\n });\n\n describe('Rules Methods', () => {\n it('should get rules content without error', async () => {\n // This test reproduces the bug where bit-rules-template.md was not found\n const rulesContent = await mcpServer.getRulesContent(false);\n expect(rulesContent).to.be.a('string');\n expect(rulesContent).to.contain('# Bit MCP Agent Instructions');\n expect(rulesContent).to.contain('Core Objectives');\n });\n\n it('should get consumer project rules content without error', async () => {\n const rulesContent = await mcpServer.getRulesContent(true);\n expect(rulesContent).to.be.a('string');\n expect(rulesContent).to.contain('## How to Install and Use Bit Components');\n expect(rulesContent).to.contain('Bit Components are reusable pieces of code');\n });\n\n it('should write rules file for VS Code without error', async () => {\n await mcpServer.writeRulesFile(\n 'vscode',\n {\n isGlobal: false,\n consumerProject: false,\n },\n workspacePath\n );\n\n // Check that the rules file was created\n const rulesPath = path.join(workspacePath, '.github', 'instructions', 'bit.instructions.md');\n const rulesExists = await fs.pathExists(rulesPath);\n expect(rulesExists).to.be.true;\n\n // Check content\n const rulesContent = await fs.readFile(rulesPath, 'utf8');\n expect(rulesContent).to.contain('# Bit MCP Agent Instructions');\n expect(rulesContent).to.contain('Core Objectives');\n });\n\n it('should write consumer project rules file without error', async () => {\n await mcpServer.writeRulesFile(\n 'vscode',\n {\n isGlobal: false,\n consumerProject: true,\n },\n workspacePath\n );\n\n // Check that the rules file was created\n const rulesPath = path.join(workspacePath, '.github', 'instructions', 'bit.instructions.md');\n const rulesExists = await fs.pathExists(rulesPath);\n expect(rulesExists).to.be.true;\n\n // Check content is different for consumer project\n const rulesContent = await fs.readFile(rulesPath, 'utf8');\n expect(rulesContent).to.contain('## How to Install and Use Bit Components');\n expect(rulesContent).to.contain('Bit Components are reusable pieces of code');\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","parseToolJson","result","text","content","JSON","parse","Error","slice","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","consumerProjectClient","not","have","lengthOf","callTool","arguments","queries","property","includeStatus","includeList","componentIds","includeSchema","summary","components","retries","true","successful","firstComponent","Object","values","responseText","failed","a","tooManyComponents","errorText","commands","firstCommand","extendedDescription","internal","subcommand","description","flags","json","fail","error","exist","mcpServer","loadAspect","CliMcpServerAspect","setupWorkspaceData","setupWorkspacePath","setupMcpServer","setupEditor","isGlobal","message","vscodeMcpPath","path","join","mcpExists","fs","pathExists","mcpConfig","readJson","servers","deep","equal","type","consumerProject","includeAdditional","cursorConfigPath","configExists","config","mcpServers","bit","windsurfConfigPath","rooConfigPath","ensureDir","dirname","writeJson","rulesContent","getRulesContent","contain","writeRulesFile","rulesPath","rulesExists","readFile"],"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 type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport type { WorkspaceData } from '@teambit/workspace.testing.mock-workspace';\nimport { mockWorkspace, destroyWorkspace } 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 type { CliMcpServerMain } from './cli-mcp-server.main.runtime';\n\n/** Parse JSON from an MCP tool response, providing a clear error when the server returned a non-JSON error string. */\nfunction parseToolJson(result: CallToolResult): any {\n const text = (result.content[0] as any).text;\n try {\n return JSON.parse(text);\n } catch {\n throw new Error(`Expected JSON response from MCP tool but got: ${text.slice(0, 200)}`);\n }\n}\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', 'start'],\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('Consumer Project Mode', () => {\n let consumerProjectClient: Client;\n\n beforeEach(async () => {\n // Create MCP client for consumer project mode\n const transport = new StdioClientTransport({\n command: 'bit',\n args: ['mcp-server', 'start', '--consumer-project'],\n cwd: workspacePath,\n });\n\n consumerProjectClient = new Client(\n {\n name: 'test-consumer-client',\n version: '1.0.0',\n },\n {\n capabilities: {},\n }\n );\n\n await consumerProjectClient.connect(transport);\n });\n\n afterEach(async () => {\n if (consumerProjectClient) {\n await consumerProjectClient.close();\n }\n });\n\n it('should only enable bit_remote_search and bit_remote_component_details tools', async () => {\n const response = await consumerProjectClient.listTools();\n\n expect(response.tools).to.be.an('array');\n\n const toolNames = response.tools.map((tool) => tool.name);\n\n // Should include only these two tools\n expect(toolNames).to.include('bit_remote_search');\n expect(toolNames).to.include('bit_remote_component_details');\n\n // Should NOT include these tools that are available in regular mode\n expect(toolNames).to.not.include('bit_workspace_info');\n expect(toolNames).to.not.include('bit_component_details');\n expect(toolNames).to.not.include('bit_commands_list');\n expect(toolNames).to.not.include('bit_command_help');\n expect(toolNames).to.not.include('bit_query');\n expect(toolNames).to.not.include('bit_execute');\n\n // Should NOT include the old separate tools\n expect(toolNames).to.not.include('bit_show');\n expect(toolNames).to.not.include('bit_schema');\n\n // Should have exactly 2 tools\n expect(toolNames).to.have.lengthOf(2);\n });\n\n it('should work with bit_remote_search tool', async () => {\n const result = (await consumerProjectClient.callTool({\n name: 'bit_remote_search',\n arguments: {\n queries: ['button'],\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 });\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 = parseToolJson(result);\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 = parseToolJson(result);\n expect(content).to.have.property('status');\n });\n });\n\n describe('bit_component_details tool', () => {\n it('should get component details for multiple components', async () => {\n const componentIds = ['comp1', 'comp2'];\n\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentIds,\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 = parseToolJson(result);\n expect(content).to.have.property('summary');\n expect(content).to.have.property('components');\n expect(content.summary).to.have.property('requested', 2);\n expect(content.summary).to.have.property('successful');\n expect(content.components).to.be.an('object');\n });\n\n it('should get component details with schema', async function () {\n this.retries(2); // schema extraction is heavier and may hit transient socket hang-ups in CI\n const componentIds = ['comp1'];\n\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentIds,\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 = parseToolJson(result);\n expect(content).to.have.property('summary');\n expect(content).to.have.property('components');\n expect(content.summary.includeSchema).to.be.true;\n if (content.summary.successful > 0) {\n const firstComponent = Object.values(content.components)[0] as any;\n expect(firstComponent).to.have.property('publicAPI');\n }\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 componentIds: ['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 const responseText = (result.content[0] as any).text;\n\n // Try to parse as JSON first\n try {\n const content = JSON.parse(responseText);\n // Should have summary with failed components\n expect(content).to.have.property('summary');\n expect(content.summary).to.have.property('failed');\n expect(content.summary.failed).to.be.greaterThan(0);\n } catch {\n // If not JSON, should be an error message string\n expect(responseText).to.be.a('string');\n expect(responseText).to.include('Failed to get details for any components');\n }\n });\n\n it('should reject requests with more than 5 components', async () => {\n const tooManyComponents = ['comp1', 'comp2', 'comp3', 'comp4', 'comp5', 'comp6'];\n\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentIds: tooManyComponents,\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('Too many components requested');\n expect(content).to.include('Maximum allowed is 5');\n });\n\n it('should require componentIds parameter', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n // Missing componentIds parameter\n },\n })) as CallToolResult;\n\n // With new SDK (1.22+), validation errors are returned in result with isError flag\n expect(result).to.have.property('isError', true);\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n const errorText = (result.content[0] as any).text;\n expect(errorText).to.include('componentIds');\n expect(errorText).to.include('Required');\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 = parseToolJson(result);\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 commands info with extended description', 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 = parseToolJson(result);\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 = parseToolJson(result);\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 = parseToolJson(result);\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 = parseToolJson(result);\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, roo, cline');\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 mcp.json file was created in the workspace directory\n const vscodeMcpPath = path.join(setupWorkspacePath, '.vscode', 'mcp.json');\n const mcpExists = await fs.pathExists(vscodeMcpPath);\n expect(mcpExists).to.be.true;\n\n // Verify the content of the mcp.json file\n const mcpConfig = await fs.readJson(vscodeMcpPath);\n expect(mcpConfig).to.have.property('servers');\n expect(mcpConfig.servers).to.have.property('bit-cli');\n expect(mcpConfig.servers['bit-cli']).to.deep.equal({\n type: 'stdio',\n command: 'bit',\n args: ['mcp-server', 'start'],\n });\n });\n\n it('should setup VS Code integration with consumer project options', async () => {\n await setupMcpServer.setupEditor(\n 'vscode',\n {\n consumerProject: true,\n includeAdditional: 'status,list',\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n const vscodeMcpPath = path.join(setupWorkspacePath, '.vscode', 'mcp.json');\n const mcpConfig = await fs.readJson(vscodeMcpPath);\n\n expect(mcpConfig.servers['bit-cli'].args).to.include('--consumer-project');\n expect(mcpConfig.servers['bit-cli'].args).to.include('--include-additional');\n expect(mcpConfig.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', 'start'],\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', 'start'],\n });\n });\n\n it('should setup Roo Code integration directly', async () => {\n await setupMcpServer.setupEditor(\n 'roo',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that the mcp.json file was created in the workspace directory\n const rooConfigPath = path.join(setupWorkspacePath, '.roo', 'mcp.json');\n const configExists = await fs.pathExists(rooConfigPath);\n expect(configExists).to.be.true;\n\n // Verify the content of the config file\n const config = await fs.readJson(rooConfigPath);\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', 'start'],\n });\n });\n\n it('should throw error when trying to setup Roo Code globally', async () => {\n try {\n await setupMcpServer.setupEditor(\n 'roo',\n {\n isGlobal: true,\n },\n setupWorkspacePath\n );\n expect.fail('Should have thrown an error for global Roo Code setup');\n } catch (error) {\n expect(error).to.exist;\n expect((error as Error).message).to.include('Roo Code global configuration is not supported');\n expect((error as Error).message).to.include('VS Code internal storage that cannot be accessed');\n }\n });\n\n it('should merge with existing VS Code mcp.json config', async () => {\n // First, create existing MCP config\n const vscodeMcpPath = path.join(setupWorkspacePath, '.vscode', 'mcp.json');\n await fs.ensureDir(path.dirname(vscodeMcpPath));\n await fs.writeJson(vscodeMcpPath, {\n servers: {\n 'existing-server': {\n type: 'stdio',\n command: 'some-other-command',\n args: ['start'],\n },\n },\n });\n\n // Run setup\n await setupMcpServer.setupEditor(\n 'vscode',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that existing MCP config is preserved and Bit config is added\n const mcpConfig = await fs.readJson(vscodeMcpPath);\n expect(mcpConfig.servers).to.have.property('existing-server');\n expect(mcpConfig.servers['existing-server']).to.deep.equal({\n type: 'stdio',\n command: 'some-other-command',\n args: ['start'],\n });\n expect(mcpConfig.servers).to.have.property('bit-cli');\n expect(mcpConfig.servers['bit-cli']).to.deep.equal({\n type: 'stdio',\n command: 'bit',\n args: ['mcp-server', 'start'],\n });\n });\n });\n\n describe('Rules Methods', () => {\n it('should get rules content without error', async () => {\n // This test reproduces the bug where bit-rules-template.md was not found\n const rulesContent = await mcpServer.getRulesContent(false);\n expect(rulesContent).to.be.a('string');\n expect(rulesContent).to.contain('# Bit MCP Agent Instructions');\n expect(rulesContent).to.contain('Core Objectives');\n });\n\n it('should get consumer project rules content without error', async () => {\n const rulesContent = await mcpServer.getRulesContent(true);\n expect(rulesContent).to.be.a('string');\n expect(rulesContent).to.contain('## How to Install and Use Bit Components');\n expect(rulesContent).to.contain('Bit Components are reusable pieces of code');\n });\n\n it('should write rules file for VS Code without error', async () => {\n await mcpServer.writeRulesFile(\n 'vscode',\n {\n isGlobal: false,\n consumerProject: false,\n },\n workspacePath\n );\n\n // Check that the rules file was created\n const rulesPath = path.join(workspacePath, '.github', 'instructions', 'bit.instructions.md');\n const rulesExists = await fs.pathExists(rulesPath);\n expect(rulesExists).to.be.true;\n\n // Check content\n const rulesContent = await fs.readFile(rulesPath, 'utf8');\n expect(rulesContent).to.contain('# Bit MCP Agent Instructions');\n expect(rulesContent).to.contain('Core Objectives');\n });\n\n it('should write consumer project rules file without error', async () => {\n await mcpServer.writeRulesFile(\n 'vscode',\n {\n isGlobal: false,\n consumerProject: true,\n },\n workspacePath\n );\n\n // Check that the rules file was created\n const rulesPath = path.join(workspacePath, '.github', 'instructions', 'bit.instructions.md');\n const rulesExists = await fs.pathExists(rulesPath);\n expect(rulesExists).to.be.true;\n\n // Check content is different for consumer project\n const rulesContent = await fs.readFile(rulesPath, 'utf8');\n expect(rulesContent).to.contain('## How to Install and Use Bit Components');\n expect(rulesContent).to.contain('Bit Components are reusable pieces of code');\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.153/dist/README.docs.mdx';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.mcp_cli-mcp-server@0.0.154/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.153",
3
+ "version": "0.0.154",
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.153"
9
+ "version": "0.0.154"
10
10
  },
11
11
  "dependencies": {
12
12
  "comment-json": "4.2.5",
@@ -18,25 +18,25 @@
18
18
  "lodash": "4.17.21",
19
19
  "chalk": "4.1.2",
20
20
  "@teambit/harmony": "0.4.7",
21
- "@teambit/cli": "0.0.1306",
22
21
  "@teambit/legacy.constants": "0.0.24",
23
- "@teambit/logger": "0.0.1399",
24
22
  "@teambit/mcp.mcp-config-writer": "0.0.8",
25
23
  "@teambit/scope.network": "0.0.103",
26
24
  "@teambit/component-id": "1.2.4",
27
25
  "@teambit/component.modules.component-url": "0.0.187",
28
26
  "@teambit/legacy.consumer": "0.0.103",
29
27
  "@teambit/pkg.modules.component-package-name": "0.0.110",
30
- "@teambit/scope.remotes": "0.0.103"
28
+ "@teambit/scope.remotes": "0.0.103",
29
+ "@teambit/cli": "0.0.1307",
30
+ "@teambit/logger": "0.0.1400"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/fs-extra": "9.0.7",
34
34
  "@types/node-fetch": "2.5.12",
35
35
  "@types/lodash": "4.14.165",
36
- "@teambit/workspace.testing.mock-workspace": "0.0.167",
37
- "@teambit/harmony.envs.core-aspect-env": "0.1.4",
38
36
  "@teambit/component.testing.mock-components": "0.0.372",
39
- "@teambit/harmony.testing.load-aspect": "0.0.367"
37
+ "@teambit/harmony.testing.load-aspect": "0.0.367",
38
+ "@teambit/workspace.testing.mock-workspace": "0.0.167",
39
+ "@teambit/harmony.envs.core-aspect-env": "0.1.4"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "chai": "5.2.1",