@teambit/cli-mcp-server 0.0.11 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.docs.mdx +52 -30
- package/dist/README.docs.mdx +52 -30
- package/dist/cli-mcp-server.main.runtime.d.ts +13 -1
- package/dist/cli-mcp-server.main.runtime.js +213 -138
- package/dist/cli-mcp-server.main.runtime.js.map +1 -1
- package/dist/cli-mcp-server.spec.d.ts +1 -0
- package/dist/cli-mcp-server.spec.js +532 -0
- package/dist/cli-mcp-server.spec.js.map +1 -0
- package/dist/mcp-server.cmd.d.ts +15 -2
- package/dist/mcp-server.cmd.js +29 -2
- package/dist/mcp-server.cmd.js.map +1 -1
- package/dist/{preview-1748575149030.js → preview-1749007248643.js} +1 -1
- package/dist/setup-cmd.d.ts +23 -0
- package/dist/setup-cmd.js +58 -0
- package/dist/setup-cmd.js.map +1 -0
- package/dist/setup-utils.d.ts +53 -0
- package/dist/setup-utils.js +259 -0
- package/dist/setup-utils.js.map +1 -0
- package/package.json +17 -6
|
@@ -0,0 +1,532 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _chai() {
|
|
4
|
+
const data = require("chai");
|
|
5
|
+
_chai = function () {
|
|
6
|
+
return data;
|
|
7
|
+
};
|
|
8
|
+
return data;
|
|
9
|
+
}
|
|
10
|
+
function _index() {
|
|
11
|
+
const data = require("@modelcontextprotocol/sdk/client/index.js");
|
|
12
|
+
_index = function () {
|
|
13
|
+
return data;
|
|
14
|
+
};
|
|
15
|
+
return data;
|
|
16
|
+
}
|
|
17
|
+
function _stdio() {
|
|
18
|
+
const data = require("@modelcontextprotocol/sdk/client/stdio.js");
|
|
19
|
+
_stdio = function () {
|
|
20
|
+
return data;
|
|
21
|
+
};
|
|
22
|
+
return data;
|
|
23
|
+
}
|
|
24
|
+
function _workspaceTesting() {
|
|
25
|
+
const data = require("@teambit/workspace.testing.mock-workspace");
|
|
26
|
+
_workspaceTesting = function () {
|
|
27
|
+
return data;
|
|
28
|
+
};
|
|
29
|
+
return data;
|
|
30
|
+
}
|
|
31
|
+
function _componentTesting() {
|
|
32
|
+
const data = require("@teambit/component.testing.mock-components");
|
|
33
|
+
_componentTesting = function () {
|
|
34
|
+
return data;
|
|
35
|
+
};
|
|
36
|
+
return data;
|
|
37
|
+
}
|
|
38
|
+
function _harmonyTesting() {
|
|
39
|
+
const data = require("@teambit/harmony.testing.load-aspect");
|
|
40
|
+
_harmonyTesting = function () {
|
|
41
|
+
return data;
|
|
42
|
+
};
|
|
43
|
+
return data;
|
|
44
|
+
}
|
|
45
|
+
function _fsExtra() {
|
|
46
|
+
const data = _interopRequireDefault(require("fs-extra"));
|
|
47
|
+
_fsExtra = function () {
|
|
48
|
+
return data;
|
|
49
|
+
};
|
|
50
|
+
return data;
|
|
51
|
+
}
|
|
52
|
+
function _path() {
|
|
53
|
+
const data = _interopRequireDefault(require("path"));
|
|
54
|
+
_path = function () {
|
|
55
|
+
return data;
|
|
56
|
+
};
|
|
57
|
+
return data;
|
|
58
|
+
}
|
|
59
|
+
function _cliMcpServer() {
|
|
60
|
+
const data = require("./cli-mcp-server.aspect");
|
|
61
|
+
_cliMcpServer = function () {
|
|
62
|
+
return data;
|
|
63
|
+
};
|
|
64
|
+
return data;
|
|
65
|
+
}
|
|
66
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
67
|
+
/* eslint-disable import/extensions */
|
|
68
|
+
/* eslint-disable import/no-unresolved */
|
|
69
|
+
|
|
70
|
+
describe('CliMcpServer Integration Tests', function () {
|
|
71
|
+
this.timeout(30000); // Increased timeout for MCP server operations
|
|
72
|
+
|
|
73
|
+
let workspaceData;
|
|
74
|
+
let mcpClient;
|
|
75
|
+
let workspacePath;
|
|
76
|
+
before(async () => {
|
|
77
|
+
// Set up mock workspace with components
|
|
78
|
+
workspaceData = (0, _workspaceTesting().mockWorkspace)();
|
|
79
|
+
workspacePath = workspaceData.workspacePath;
|
|
80
|
+
await (0, _componentTesting().mockComponents)(workspacePath);
|
|
81
|
+
});
|
|
82
|
+
after(async () => {
|
|
83
|
+
await (0, _workspaceTesting().destroyWorkspace)(workspaceData);
|
|
84
|
+
});
|
|
85
|
+
beforeEach(async () => {
|
|
86
|
+
// Create MCP client and connect directly to the MCP server command
|
|
87
|
+
const transport = new (_stdio().StdioClientTransport)({
|
|
88
|
+
command: 'bit',
|
|
89
|
+
args: ['mcp-server'],
|
|
90
|
+
cwd: workspacePath
|
|
91
|
+
});
|
|
92
|
+
mcpClient = new (_index().Client)({
|
|
93
|
+
name: 'test-client',
|
|
94
|
+
version: '1.0.0'
|
|
95
|
+
}, {
|
|
96
|
+
capabilities: {}
|
|
97
|
+
});
|
|
98
|
+
await mcpClient.connect(transport);
|
|
99
|
+
});
|
|
100
|
+
afterEach(async () => {
|
|
101
|
+
// Clean up MCP client
|
|
102
|
+
if (mcpClient) {
|
|
103
|
+
await mcpClient.close();
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
describe('MCP Server Protocol', () => {
|
|
107
|
+
it('should list available tools', async () => {
|
|
108
|
+
const response = await mcpClient.listTools();
|
|
109
|
+
(0, _chai().expect)(response.tools).to.be.an('array');
|
|
110
|
+
(0, _chai().expect)(response.tools.length).to.be.greaterThan(0);
|
|
111
|
+
|
|
112
|
+
// Check for essential MCP tools
|
|
113
|
+
const toolNames = response.tools.map(tool => tool.name);
|
|
114
|
+
(0, _chai().expect)(toolNames).to.include('bit_workspace_info');
|
|
115
|
+
(0, _chai().expect)(toolNames).to.include('bit_component_details');
|
|
116
|
+
(0, _chai().expect)(toolNames).to.include('bit_commands_list');
|
|
117
|
+
(0, _chai().expect)(toolNames).to.include('bit_query');
|
|
118
|
+
(0, _chai().expect)(toolNames).to.include('bit_execute');
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
describe('bit_workspace_info tool', () => {
|
|
122
|
+
it('should get workspace information', async () => {
|
|
123
|
+
const result = await mcpClient.callTool({
|
|
124
|
+
name: 'bit_workspace_info',
|
|
125
|
+
arguments: {
|
|
126
|
+
cwd: workspacePath,
|
|
127
|
+
includeStatus: true,
|
|
128
|
+
includeList: true
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
(0, _chai().expect)(result).to.have.property('content');
|
|
132
|
+
(0, _chai().expect)(result.content).to.be.an('array');
|
|
133
|
+
(0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
|
|
134
|
+
const content = JSON.parse(result.content[0].text);
|
|
135
|
+
(0, _chai().expect)(content).to.have.property('status');
|
|
136
|
+
(0, _chai().expect)(content).to.have.property('list');
|
|
137
|
+
});
|
|
138
|
+
it('should handle workspace info without optional parameters', async () => {
|
|
139
|
+
const result = await mcpClient.callTool({
|
|
140
|
+
name: 'bit_workspace_info',
|
|
141
|
+
arguments: {
|
|
142
|
+
cwd: workspacePath
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
(0, _chai().expect)(result).to.have.property('content');
|
|
146
|
+
(0, _chai().expect)(result.content).to.be.an('array');
|
|
147
|
+
(0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
|
|
148
|
+
const content = JSON.parse(result.content[0].text);
|
|
149
|
+
(0, _chai().expect)(content).to.have.property('status');
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
describe('bit_component_details tool', () => {
|
|
153
|
+
it('should get component details for an existing component', async () => {
|
|
154
|
+
const firstComponentId = 'comp1';
|
|
155
|
+
const result = await mcpClient.callTool({
|
|
156
|
+
name: 'bit_component_details',
|
|
157
|
+
arguments: {
|
|
158
|
+
cwd: workspacePath,
|
|
159
|
+
componentName: firstComponentId,
|
|
160
|
+
includeSchema: false
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
(0, _chai().expect)(result).to.have.property('content');
|
|
164
|
+
(0, _chai().expect)(result.content).to.be.an('array');
|
|
165
|
+
(0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
|
|
166
|
+
const content = JSON.parse(result.content[0].text);
|
|
167
|
+
(0, _chai().expect)(content).to.have.property('show');
|
|
168
|
+
});
|
|
169
|
+
it('should get component details with schema', async () => {
|
|
170
|
+
const firstComponentId = 'comp1';
|
|
171
|
+
const result = await mcpClient.callTool({
|
|
172
|
+
name: 'bit_component_details',
|
|
173
|
+
arguments: {
|
|
174
|
+
cwd: workspacePath,
|
|
175
|
+
componentName: firstComponentId,
|
|
176
|
+
includeSchema: true
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
(0, _chai().expect)(result).to.have.property('content');
|
|
180
|
+
(0, _chai().expect)(result.content).to.be.an('array');
|
|
181
|
+
(0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
|
|
182
|
+
const content = JSON.parse(result.content[0].text);
|
|
183
|
+
(0, _chai().expect)(content).to.have.property('show');
|
|
184
|
+
});
|
|
185
|
+
it('should handle non-existent component gracefully', async () => {
|
|
186
|
+
const result = await mcpClient.callTool({
|
|
187
|
+
name: 'bit_component_details',
|
|
188
|
+
arguments: {
|
|
189
|
+
cwd: workspacePath,
|
|
190
|
+
componentName: 'non-existent/component'
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
(0, _chai().expect)(result).to.have.property('content');
|
|
194
|
+
(0, _chai().expect)(result.content).to.be.an('array');
|
|
195
|
+
(0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
|
|
196
|
+
|
|
197
|
+
// Should return error information or component details
|
|
198
|
+
const content = result.content[0].text;
|
|
199
|
+
(0, _chai().expect)(content).to.be.a('string');
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
describe('bit_commands_list tool', () => {
|
|
203
|
+
it('should get basic commands list', async () => {
|
|
204
|
+
const result = await mcpClient.callTool({
|
|
205
|
+
name: 'bit_commands_list',
|
|
206
|
+
arguments: {}
|
|
207
|
+
});
|
|
208
|
+
(0, _chai().expect)(result).to.have.property('content');
|
|
209
|
+
(0, _chai().expect)(result.content).to.be.an('array');
|
|
210
|
+
(0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
|
|
211
|
+
const content = JSON.parse(result.content[0].text);
|
|
212
|
+
(0, _chai().expect)(content).to.have.property('commands');
|
|
213
|
+
(0, _chai().expect)(content.commands).to.be.an('array');
|
|
214
|
+
(0, _chai().expect)(content.commands.length).to.be.greaterThan(0);
|
|
215
|
+
|
|
216
|
+
// Check command structure
|
|
217
|
+
const firstCommand = content.commands[0];
|
|
218
|
+
(0, _chai().expect)(firstCommand).to.have.property('name');
|
|
219
|
+
(0, _chai().expect)(firstCommand).to.have.property('description');
|
|
220
|
+
});
|
|
221
|
+
it('should get extended commands info', async () => {
|
|
222
|
+
const result = await mcpClient.callTool({
|
|
223
|
+
name: 'bit_commands_list',
|
|
224
|
+
arguments: {
|
|
225
|
+
extendedDescription: true,
|
|
226
|
+
internal: false
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
(0, _chai().expect)(result).to.have.property('content');
|
|
230
|
+
(0, _chai().expect)(result.content).to.be.an('array');
|
|
231
|
+
(0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
|
|
232
|
+
const content = JSON.parse(result.content[0].text);
|
|
233
|
+
(0, _chai().expect)(content).to.have.property('commands');
|
|
234
|
+
(0, _chai().expect)(content.commands).to.be.an('array');
|
|
235
|
+
(0, _chai().expect)(content.commands.length).to.be.greaterThan(0);
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
describe('bit_command_help tool', () => {
|
|
239
|
+
it('should get help for a main command', async () => {
|
|
240
|
+
const result = await mcpClient.callTool({
|
|
241
|
+
name: 'bit_command_help',
|
|
242
|
+
arguments: {
|
|
243
|
+
command: 'status'
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
(0, _chai().expect)(result).to.have.property('content');
|
|
247
|
+
(0, _chai().expect)(result.content).to.be.an('array');
|
|
248
|
+
(0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
|
|
249
|
+
const content = JSON.parse(result.content[0].text);
|
|
250
|
+
(0, _chai().expect)(content).to.have.property('name', 'status');
|
|
251
|
+
(0, _chai().expect)(content).to.have.property('description');
|
|
252
|
+
(0, _chai().expect)(content).to.have.property('options');
|
|
253
|
+
});
|
|
254
|
+
it('should get help for lane switch subcommand (private command)', async () => {
|
|
255
|
+
const result = await mcpClient.callTool({
|
|
256
|
+
name: 'bit_command_help',
|
|
257
|
+
arguments: {
|
|
258
|
+
command: 'lane',
|
|
259
|
+
subcommand: 'switch'
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
(0, _chai().expect)(result).to.have.property('content');
|
|
263
|
+
(0, _chai().expect)(result.content).to.be.an('array');
|
|
264
|
+
(0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
|
|
265
|
+
const content = JSON.parse(result.content[0].text);
|
|
266
|
+
(0, _chai().expect)(content).to.have.property('name', 'lane switch');
|
|
267
|
+
(0, _chai().expect)(content).to.have.property('description');
|
|
268
|
+
(0, _chai().expect)(content.description).to.include('switch to the specified lane');
|
|
269
|
+
(0, _chai().expect)(content).to.have.property('private', true);
|
|
270
|
+
(0, _chai().expect)(content).to.have.property('arguments');
|
|
271
|
+
(0, _chai().expect)(content.arguments).to.be.an('array');
|
|
272
|
+
(0, _chai().expect)(content.arguments[0]).to.have.property('name', 'lane');
|
|
273
|
+
(0, _chai().expect)(content.arguments[0]).to.have.property('description');
|
|
274
|
+
});
|
|
275
|
+
it('should get help for a subcommand that exists', async () => {
|
|
276
|
+
const result = await mcpClient.callTool({
|
|
277
|
+
name: 'bit_command_help',
|
|
278
|
+
arguments: {
|
|
279
|
+
command: 'lane',
|
|
280
|
+
subcommand: 'show'
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
(0, _chai().expect)(result).to.have.property('content');
|
|
284
|
+
(0, _chai().expect)(result.content).to.be.an('array');
|
|
285
|
+
(0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
|
|
286
|
+
const content = JSON.parse(result.content[0].text);
|
|
287
|
+
(0, _chai().expect)(content).to.have.property('name', 'lane show');
|
|
288
|
+
(0, _chai().expect)(content).to.have.property('description');
|
|
289
|
+
});
|
|
290
|
+
it('should return error for non-existent command', async () => {
|
|
291
|
+
const result = await mcpClient.callTool({
|
|
292
|
+
name: 'bit_command_help',
|
|
293
|
+
arguments: {
|
|
294
|
+
command: 'nonexistent'
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
(0, _chai().expect)(result).to.have.property('content');
|
|
298
|
+
(0, _chai().expect)(result.content).to.be.an('array');
|
|
299
|
+
(0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
|
|
300
|
+
const content = result.content[0].text;
|
|
301
|
+
(0, _chai().expect)(content).to.include('Command not found: nonexistent');
|
|
302
|
+
});
|
|
303
|
+
it('should return error for non-existent subcommand', async () => {
|
|
304
|
+
const result = await mcpClient.callTool({
|
|
305
|
+
name: 'bit_command_help',
|
|
306
|
+
arguments: {
|
|
307
|
+
command: 'lane',
|
|
308
|
+
subcommand: 'nonexistent'
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
(0, _chai().expect)(result).to.have.property('content');
|
|
312
|
+
(0, _chai().expect)(result.content).to.be.an('array');
|
|
313
|
+
(0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
|
|
314
|
+
const content = result.content[0].text;
|
|
315
|
+
(0, _chai().expect)(content).to.include('Command not found: lane nonexistent');
|
|
316
|
+
});
|
|
317
|
+
});
|
|
318
|
+
describe('bit_query tool', () => {
|
|
319
|
+
it('should execute read-only commands', async () => {
|
|
320
|
+
const result = await mcpClient.callTool({
|
|
321
|
+
name: 'bit_query',
|
|
322
|
+
arguments: {
|
|
323
|
+
cwd: workspacePath,
|
|
324
|
+
command: 'status'
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
(0, _chai().expect)(result).to.have.property('content');
|
|
328
|
+
(0, _chai().expect)(result.content).to.be.an('array');
|
|
329
|
+
(0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
|
|
330
|
+
|
|
331
|
+
// Should return command output
|
|
332
|
+
const content = result.content[0].text;
|
|
333
|
+
(0, _chai().expect)(content).to.be.a('string');
|
|
334
|
+
});
|
|
335
|
+
it('should handle commands with arguments and flags', async () => {
|
|
336
|
+
const result = await mcpClient.callTool({
|
|
337
|
+
name: 'bit_query',
|
|
338
|
+
arguments: {
|
|
339
|
+
cwd: workspacePath,
|
|
340
|
+
command: 'list',
|
|
341
|
+
args: [],
|
|
342
|
+
flags: {
|
|
343
|
+
json: true
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
});
|
|
347
|
+
(0, _chai().expect)(result).to.have.property('content');
|
|
348
|
+
(0, _chai().expect)(result.content).to.be.an('array');
|
|
349
|
+
(0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
|
|
350
|
+
const content = result.content[0].text;
|
|
351
|
+
(0, _chai().expect)(content).to.be.a('string');
|
|
352
|
+
});
|
|
353
|
+
});
|
|
354
|
+
describe('Error Handling', () => {
|
|
355
|
+
it('should handle invalid tool calls gracefully', async () => {
|
|
356
|
+
try {
|
|
357
|
+
await mcpClient.callTool({
|
|
358
|
+
name: 'non_existent_tool',
|
|
359
|
+
arguments: {}
|
|
360
|
+
});
|
|
361
|
+
_chai().expect.fail('Should have thrown an error for non-existent tool');
|
|
362
|
+
} catch (error) {
|
|
363
|
+
(0, _chai().expect)(error).to.exist;
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
it('should handle invalid workspace directory', async () => {
|
|
367
|
+
const result = await mcpClient.callTool({
|
|
368
|
+
name: 'bit_workspace_info',
|
|
369
|
+
arguments: {
|
|
370
|
+
cwd: '/non/existent/path'
|
|
371
|
+
}
|
|
372
|
+
});
|
|
373
|
+
(0, _chai().expect)(result).to.have.property('content');
|
|
374
|
+
(0, _chai().expect)(result.content).to.be.an('array');
|
|
375
|
+
(0, _chai().expect)(result.content[0]).to.have.property('type', 'text');
|
|
376
|
+
|
|
377
|
+
// Should return error information
|
|
378
|
+
const content = result.content[0].text;
|
|
379
|
+
(0, _chai().expect)(content).to.be.a('string');
|
|
380
|
+
});
|
|
381
|
+
});
|
|
382
|
+
});
|
|
383
|
+
describe('CliMcpServer Direct Aspect Tests', function () {
|
|
384
|
+
this.timeout(30000);
|
|
385
|
+
let workspaceData;
|
|
386
|
+
let mcpServer;
|
|
387
|
+
let workspacePath;
|
|
388
|
+
before(async () => {
|
|
389
|
+
// Set up mock workspace with components
|
|
390
|
+
workspaceData = (0, _workspaceTesting().mockWorkspace)();
|
|
391
|
+
workspacePath = workspaceData.workspacePath;
|
|
392
|
+
await (0, _componentTesting().mockComponents)(workspacePath);
|
|
393
|
+
|
|
394
|
+
// Load the aspect directly
|
|
395
|
+
mcpServer = await (0, _harmonyTesting().loadAspect)(_cliMcpServer().CliMcpServerAspect, workspacePath);
|
|
396
|
+
});
|
|
397
|
+
after(async () => {
|
|
398
|
+
await (0, _workspaceTesting().destroyWorkspace)(workspaceData);
|
|
399
|
+
});
|
|
400
|
+
describe('Setup Editor Methods', () => {
|
|
401
|
+
let setupWorkspaceData;
|
|
402
|
+
let setupWorkspacePath;
|
|
403
|
+
let setupMcpServer;
|
|
404
|
+
beforeEach(async () => {
|
|
405
|
+
// Create a separate mock workspace for setup testing
|
|
406
|
+
setupWorkspaceData = (0, _workspaceTesting().mockWorkspace)();
|
|
407
|
+
setupWorkspacePath = setupWorkspaceData.workspacePath;
|
|
408
|
+
await (0, _componentTesting().mockComponents)(setupWorkspacePath);
|
|
409
|
+
|
|
410
|
+
// Load the aspect for this workspace
|
|
411
|
+
setupMcpServer = await (0, _harmonyTesting().loadAspect)(_cliMcpServer().CliMcpServerAspect, setupWorkspacePath);
|
|
412
|
+
});
|
|
413
|
+
afterEach(async () => {
|
|
414
|
+
// Clean up the setup workspace
|
|
415
|
+
if (setupWorkspaceData) {
|
|
416
|
+
await (0, _workspaceTesting().destroyWorkspace)(setupWorkspaceData);
|
|
417
|
+
}
|
|
418
|
+
});
|
|
419
|
+
it('should handle unsupported editor gracefully', async () => {
|
|
420
|
+
try {
|
|
421
|
+
await mcpServer.setupEditor('unsupported-editor', {
|
|
422
|
+
isGlobal: false
|
|
423
|
+
});
|
|
424
|
+
_chai().expect.fail('Should have thrown an error for unsupported editor');
|
|
425
|
+
} catch (error) {
|
|
426
|
+
(0, _chai().expect)(error).to.exist;
|
|
427
|
+
(0, _chai().expect)(error.message).to.include('Editor "unsupported-editor" is not supported yet');
|
|
428
|
+
(0, _chai().expect)(error.message).to.include('Currently supported: vscode, cursor, windsurf');
|
|
429
|
+
}
|
|
430
|
+
});
|
|
431
|
+
it('should setup VS Code integration directly', async () => {
|
|
432
|
+
await setupMcpServer.setupEditor('vscode', {
|
|
433
|
+
isGlobal: false
|
|
434
|
+
}, setupWorkspacePath);
|
|
435
|
+
|
|
436
|
+
// Verify that the settings.json file was created in the workspace directory
|
|
437
|
+
const vscodeSettingsPath = _path().default.join(setupWorkspacePath, '.vscode', 'settings.json');
|
|
438
|
+
const settingsExists = await _fsExtra().default.pathExists(vscodeSettingsPath);
|
|
439
|
+
(0, _chai().expect)(settingsExists).to.be.true;
|
|
440
|
+
|
|
441
|
+
// Verify the content of the settings file
|
|
442
|
+
const settings = await _fsExtra().default.readJson(vscodeSettingsPath);
|
|
443
|
+
(0, _chai().expect)(settings).to.have.property('mcp');
|
|
444
|
+
(0, _chai().expect)(settings.mcp).to.have.property('servers');
|
|
445
|
+
(0, _chai().expect)(settings.mcp.servers).to.have.property('bit-cli');
|
|
446
|
+
(0, _chai().expect)(settings.mcp.servers['bit-cli']).to.deep.equal({
|
|
447
|
+
command: 'bit',
|
|
448
|
+
args: ['mcp-server']
|
|
449
|
+
});
|
|
450
|
+
});
|
|
451
|
+
it('should setup VS Code integration with extended options', async () => {
|
|
452
|
+
await setupMcpServer.setupEditor('vscode', {
|
|
453
|
+
extended: true,
|
|
454
|
+
consumerProject: true,
|
|
455
|
+
includeOnly: 'status,list',
|
|
456
|
+
isGlobal: false
|
|
457
|
+
}, setupWorkspacePath);
|
|
458
|
+
const vscodeSettingsPath = _path().default.join(setupWorkspacePath, '.vscode', 'settings.json');
|
|
459
|
+
const settings = await _fsExtra().default.readJson(vscodeSettingsPath);
|
|
460
|
+
(0, _chai().expect)(settings.mcp.servers['bit-cli'].args).to.include('--extended');
|
|
461
|
+
(0, _chai().expect)(settings.mcp.servers['bit-cli'].args).to.include('--consumer-project');
|
|
462
|
+
(0, _chai().expect)(settings.mcp.servers['bit-cli'].args).to.include('--include-only');
|
|
463
|
+
(0, _chai().expect)(settings.mcp.servers['bit-cli'].args).to.include('status,list');
|
|
464
|
+
});
|
|
465
|
+
it('should setup Cursor integration directly', async () => {
|
|
466
|
+
await setupMcpServer.setupEditor('cursor', {
|
|
467
|
+
isGlobal: false
|
|
468
|
+
}, setupWorkspacePath);
|
|
469
|
+
|
|
470
|
+
// Verify that the mcp.json file was created in the workspace directory
|
|
471
|
+
const cursorConfigPath = _path().default.join(setupWorkspacePath, '.cursor', 'mcp.json');
|
|
472
|
+
const configExists = await _fsExtra().default.pathExists(cursorConfigPath);
|
|
473
|
+
(0, _chai().expect)(configExists).to.be.true;
|
|
474
|
+
|
|
475
|
+
// Verify the content of the config file
|
|
476
|
+
const config = await _fsExtra().default.readJson(cursorConfigPath);
|
|
477
|
+
(0, _chai().expect)(config).to.have.property('mcpServers');
|
|
478
|
+
(0, _chai().expect)(config.mcpServers).to.have.property('bit');
|
|
479
|
+
(0, _chai().expect)(config.mcpServers.bit).to.deep.equal({
|
|
480
|
+
type: 'stdio',
|
|
481
|
+
command: 'bit',
|
|
482
|
+
args: ['mcp-server']
|
|
483
|
+
});
|
|
484
|
+
});
|
|
485
|
+
it('should setup Windsurf integration directly', async () => {
|
|
486
|
+
await setupMcpServer.setupEditor('windsurf', {
|
|
487
|
+
isGlobal: false
|
|
488
|
+
}, setupWorkspacePath);
|
|
489
|
+
|
|
490
|
+
// Verify that the mcp.json file was created in the workspace directory
|
|
491
|
+
const windsurfConfigPath = _path().default.join(setupWorkspacePath, '.windsurf', 'mcp.json');
|
|
492
|
+
const configExists = await _fsExtra().default.pathExists(windsurfConfigPath);
|
|
493
|
+
(0, _chai().expect)(configExists).to.be.true;
|
|
494
|
+
|
|
495
|
+
// Verify the content of the config file
|
|
496
|
+
const config = await _fsExtra().default.readJson(windsurfConfigPath);
|
|
497
|
+
(0, _chai().expect)(config).to.have.property('mcpServers');
|
|
498
|
+
(0, _chai().expect)(config.mcpServers).to.have.property('bit');
|
|
499
|
+
(0, _chai().expect)(config.mcpServers.bit).to.deep.equal({
|
|
500
|
+
type: 'stdio',
|
|
501
|
+
command: 'bit',
|
|
502
|
+
args: ['mcp-server']
|
|
503
|
+
});
|
|
504
|
+
});
|
|
505
|
+
it('should merge with existing VS Code settings', async () => {
|
|
506
|
+
// First, create existing settings
|
|
507
|
+
const vscodeSettingsPath = _path().default.join(setupWorkspacePath, '.vscode', 'settings.json');
|
|
508
|
+
await _fsExtra().default.ensureDir(_path().default.dirname(vscodeSettingsPath));
|
|
509
|
+
await _fsExtra().default.writeJson(vscodeSettingsPath, {
|
|
510
|
+
'editor.formatOnSave': true,
|
|
511
|
+
'typescript.preferences.includePackageJsonAutoImports': 'off'
|
|
512
|
+
});
|
|
513
|
+
|
|
514
|
+
// Run setup
|
|
515
|
+
await setupMcpServer.setupEditor('vscode', {
|
|
516
|
+
isGlobal: false
|
|
517
|
+
}, setupWorkspacePath);
|
|
518
|
+
|
|
519
|
+
// Verify that existing settings are preserved and MCP config is added
|
|
520
|
+
const settings = await _fsExtra().default.readJson(vscodeSettingsPath);
|
|
521
|
+
(0, _chai().expect)(settings).to.have.property('editor.formatOnSave', true);
|
|
522
|
+
(0, _chai().expect)(settings).to.have.property('typescript.preferences.includePackageJsonAutoImports', 'off');
|
|
523
|
+
(0, _chai().expect)(settings).to.have.property('mcp');
|
|
524
|
+
(0, _chai().expect)(settings.mcp.servers['bit-cli']).to.deep.equal({
|
|
525
|
+
command: 'bit',
|
|
526
|
+
args: ['mcp-server']
|
|
527
|
+
});
|
|
528
|
+
});
|
|
529
|
+
});
|
|
530
|
+
});
|
|
531
|
+
|
|
532
|
+
//# sourceMappingURL=cli-mcp-server.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_chai","data","require","_index","_stdio","_workspaceTesting","_componentTesting","_harmonyTesting","_fsExtra","_interopRequireDefault","_path","_cliMcpServer","e","__esModule","default","describe","timeout","workspaceData","mcpClient","workspacePath","before","mockWorkspace","mockComponents","after","destroyWorkspace","beforeEach","transport","StdioClientTransport","command","args","cwd","Client","name","version","capabilities","connect","afterEach","close","it","response","listTools","expect","tools","to","be","an","length","greaterThan","toolNames","map","tool","include","result","callTool","arguments","includeStatus","includeList","have","property","content","JSON","parse","text","firstComponentId","componentName","includeSchema","a","commands","firstCommand","extendedDescription","internal","subcommand","description","flags","json","fail","error","exist","mcpServer","loadAspect","CliMcpServerAspect","setupWorkspaceData","setupWorkspacePath","setupMcpServer","setupEditor","isGlobal","message","vscodeSettingsPath","path","join","settingsExists","fs","pathExists","true","settings","readJson","mcp","servers","deep","equal","extended","consumerProject","includeOnly","cursorConfigPath","configExists","config","mcpServers","bit","type","windsurfConfigPath","ensureDir","dirname","writeJson"],"sources":["cli-mcp-server.spec.ts"],"sourcesContent":["/* eslint-disable import/extensions */\n/* eslint-disable import/no-unresolved */\n\nimport { expect } from 'chai';\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';\nimport { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport { mockWorkspace, destroyWorkspace, WorkspaceData } from '@teambit/workspace.testing.mock-workspace';\nimport { mockComponents } from '@teambit/component.testing.mock-components';\nimport { loadAspect } from '@teambit/harmony.testing.load-aspect';\nimport fs from 'fs-extra';\nimport path from 'path';\n\nimport { CliMcpServerAspect } from './cli-mcp-server.aspect';\nimport { CliMcpServerMain } from './cli-mcp-server.main.runtime';\n\ndescribe('CliMcpServer Integration Tests', function () {\n this.timeout(30000); // Increased timeout for MCP server operations\n\n let workspaceData: WorkspaceData;\n let mcpClient: Client;\n let workspacePath: string;\n\n before(async () => {\n // Set up mock workspace with components\n workspaceData = mockWorkspace();\n workspacePath = workspaceData.workspacePath;\n await mockComponents(workspacePath);\n });\n\n after(async () => {\n await destroyWorkspace(workspaceData);\n });\n\n beforeEach(async () => {\n // Create MCP client and connect directly to the MCP server command\n const transport = new StdioClientTransport({\n command: 'bit',\n args: ['mcp-server'],\n cwd: workspacePath,\n });\n\n mcpClient = new Client(\n {\n name: 'test-client',\n version: '1.0.0',\n },\n {\n capabilities: {},\n }\n );\n\n await mcpClient.connect(transport);\n });\n\n afterEach(async () => {\n // Clean up MCP client\n if (mcpClient) {\n await mcpClient.close();\n }\n });\n\n describe('MCP Server Protocol', () => {\n it('should list available tools', async () => {\n const response = await mcpClient.listTools();\n\n expect(response.tools).to.be.an('array');\n expect(response.tools.length).to.be.greaterThan(0);\n\n // Check for essential MCP tools\n const toolNames = response.tools.map((tool) => tool.name);\n expect(toolNames).to.include('bit_workspace_info');\n expect(toolNames).to.include('bit_component_details');\n expect(toolNames).to.include('bit_commands_list');\n expect(toolNames).to.include('bit_query');\n expect(toolNames).to.include('bit_execute');\n });\n });\n\n describe('bit_workspace_info tool', () => {\n it('should get workspace information', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_workspace_info',\n arguments: {\n cwd: workspacePath,\n includeStatus: true,\n includeList: true,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('status');\n expect(content).to.have.property('list');\n });\n\n it('should handle workspace info without optional parameters', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_workspace_info',\n arguments: {\n cwd: workspacePath,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('status');\n });\n });\n\n describe('bit_component_details tool', () => {\n it('should get component details for an existing component', async () => {\n const firstComponentId = 'comp1';\n\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentName: firstComponentId,\n includeSchema: false,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('show');\n });\n\n it('should get component details with schema', async () => {\n const firstComponentId = 'comp1';\n\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentName: firstComponentId,\n includeSchema: true,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('show');\n });\n\n it('should handle non-existent component gracefully', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentName: 'non-existent/component',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n // Should return error information or component details\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n });\n\n describe('bit_commands_list tool', () => {\n it('should get basic commands list', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_commands_list',\n arguments: {},\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('commands');\n expect(content.commands).to.be.an('array');\n expect(content.commands.length).to.be.greaterThan(0);\n\n // Check command structure\n const firstCommand = content.commands[0];\n expect(firstCommand).to.have.property('name');\n expect(firstCommand).to.have.property('description');\n });\n\n it('should get extended commands info', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_commands_list',\n arguments: {\n extendedDescription: true,\n internal: false,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('commands');\n expect(content.commands).to.be.an('array');\n expect(content.commands.length).to.be.greaterThan(0);\n });\n });\n\n describe('bit_command_help tool', () => {\n it('should get help for a main command', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'status',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('name', 'status');\n expect(content).to.have.property('description');\n expect(content).to.have.property('options');\n });\n\n it('should get help for lane switch subcommand (private command)', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'lane',\n subcommand: 'switch',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('name', 'lane switch');\n expect(content).to.have.property('description');\n expect(content.description).to.include('switch to the specified lane');\n expect(content).to.have.property('private', true);\n expect(content).to.have.property('arguments');\n expect(content.arguments).to.be.an('array');\n expect(content.arguments[0]).to.have.property('name', 'lane');\n expect(content.arguments[0]).to.have.property('description');\n });\n\n it('should get help for a subcommand that exists', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'lane',\n subcommand: 'show',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('name', 'lane show');\n expect(content).to.have.property('description');\n });\n\n it('should return error for non-existent command', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'nonexistent',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = (result.content[0] as any).text;\n expect(content).to.include('Command not found: nonexistent');\n });\n\n it('should return error for non-existent subcommand', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'lane',\n subcommand: 'nonexistent',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = (result.content[0] as any).text;\n expect(content).to.include('Command not found: lane nonexistent');\n });\n });\n\n describe('bit_query tool', () => {\n it('should execute read-only commands', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_query',\n arguments: {\n cwd: workspacePath,\n command: 'status',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n // Should return command output\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n\n it('should handle commands with arguments and flags', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_query',\n arguments: {\n cwd: workspacePath,\n command: 'list',\n args: [],\n flags: {\n json: true,\n },\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n });\n\n describe('Error Handling', () => {\n it('should handle invalid tool calls gracefully', async () => {\n try {\n await mcpClient.callTool({\n name: 'non_existent_tool',\n arguments: {},\n });\n expect.fail('Should have thrown an error for non-existent tool');\n } catch (error) {\n expect(error).to.exist;\n }\n });\n\n it('should handle invalid workspace directory', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_workspace_info',\n arguments: {\n cwd: '/non/existent/path',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n // Should return error information\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n });\n});\n\ndescribe('CliMcpServer Direct Aspect Tests', function () {\n this.timeout(30000);\n\n let workspaceData: WorkspaceData;\n let mcpServer: CliMcpServerMain;\n let workspacePath: string;\n\n before(async () => {\n // Set up mock workspace with components\n workspaceData = mockWorkspace();\n workspacePath = workspaceData.workspacePath;\n await mockComponents(workspacePath);\n\n // Load the aspect directly\n mcpServer = await loadAspect(CliMcpServerAspect, workspacePath);\n });\n\n after(async () => {\n await destroyWorkspace(workspaceData);\n });\n\n describe('Setup Editor Methods', () => {\n let setupWorkspaceData: WorkspaceData;\n let setupWorkspacePath: string;\n let setupMcpServer: CliMcpServerMain;\n\n beforeEach(async () => {\n // Create a separate mock workspace for setup testing\n setupWorkspaceData = mockWorkspace();\n setupWorkspacePath = setupWorkspaceData.workspacePath;\n await mockComponents(setupWorkspacePath);\n\n // Load the aspect for this workspace\n setupMcpServer = await loadAspect(CliMcpServerAspect, setupWorkspacePath);\n });\n\n afterEach(async () => {\n // Clean up the setup workspace\n if (setupWorkspaceData) {\n await destroyWorkspace(setupWorkspaceData);\n }\n });\n\n it('should handle unsupported editor gracefully', async () => {\n try {\n await mcpServer.setupEditor('unsupported-editor', {\n isGlobal: false,\n });\n expect.fail('Should have thrown an error for unsupported editor');\n } catch (error) {\n expect(error).to.exist;\n expect((error as Error).message).to.include('Editor \"unsupported-editor\" is not supported yet');\n expect((error as Error).message).to.include('Currently supported: vscode, cursor, windsurf');\n }\n });\n\n it('should setup VS Code integration directly', async () => {\n await setupMcpServer.setupEditor(\n 'vscode',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that the settings.json file was created in the workspace directory\n const vscodeSettingsPath = path.join(setupWorkspacePath, '.vscode', 'settings.json');\n const settingsExists = await fs.pathExists(vscodeSettingsPath);\n expect(settingsExists).to.be.true;\n\n // Verify the content of the settings file\n const settings = await fs.readJson(vscodeSettingsPath);\n expect(settings).to.have.property('mcp');\n expect(settings.mcp).to.have.property('servers');\n expect(settings.mcp.servers).to.have.property('bit-cli');\n expect(settings.mcp.servers['bit-cli']).to.deep.equal({\n command: 'bit',\n args: ['mcp-server'],\n });\n });\n\n it('should setup VS Code integration with extended options', async () => {\n await setupMcpServer.setupEditor(\n 'vscode',\n {\n extended: true,\n consumerProject: true,\n includeOnly: 'status,list',\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n const vscodeSettingsPath = path.join(setupWorkspacePath, '.vscode', 'settings.json');\n const settings = await fs.readJson(vscodeSettingsPath);\n\n expect(settings.mcp.servers['bit-cli'].args).to.include('--extended');\n expect(settings.mcp.servers['bit-cli'].args).to.include('--consumer-project');\n expect(settings.mcp.servers['bit-cli'].args).to.include('--include-only');\n expect(settings.mcp.servers['bit-cli'].args).to.include('status,list');\n });\n\n it('should setup Cursor integration directly', async () => {\n await setupMcpServer.setupEditor(\n 'cursor',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that the mcp.json file was created in the workspace directory\n const cursorConfigPath = path.join(setupWorkspacePath, '.cursor', 'mcp.json');\n const configExists = await fs.pathExists(cursorConfigPath);\n expect(configExists).to.be.true;\n\n // Verify the content of the config file\n const config = await fs.readJson(cursorConfigPath);\n expect(config).to.have.property('mcpServers');\n expect(config.mcpServers).to.have.property('bit');\n expect(config.mcpServers.bit).to.deep.equal({\n type: 'stdio',\n command: 'bit',\n args: ['mcp-server'],\n });\n });\n\n it('should setup Windsurf integration directly', async () => {\n await setupMcpServer.setupEditor(\n 'windsurf',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that the mcp.json file was created in the workspace directory\n const windsurfConfigPath = path.join(setupWorkspacePath, '.windsurf', 'mcp.json');\n const configExists = await fs.pathExists(windsurfConfigPath);\n expect(configExists).to.be.true;\n\n // Verify the content of the config file\n const config = await fs.readJson(windsurfConfigPath);\n expect(config).to.have.property('mcpServers');\n expect(config.mcpServers).to.have.property('bit');\n expect(config.mcpServers.bit).to.deep.equal({\n type: 'stdio',\n command: 'bit',\n args: ['mcp-server'],\n });\n });\n\n it('should merge with existing VS Code settings', async () => {\n // First, create existing settings\n const vscodeSettingsPath = path.join(setupWorkspacePath, '.vscode', 'settings.json');\n await fs.ensureDir(path.dirname(vscodeSettingsPath));\n await fs.writeJson(vscodeSettingsPath, {\n 'editor.formatOnSave': true,\n 'typescript.preferences.includePackageJsonAutoImports': 'off',\n });\n\n // Run setup\n await setupMcpServer.setupEditor(\n 'vscode',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that existing settings are preserved and MCP config is added\n const settings = await fs.readJson(vscodeSettingsPath);\n expect(settings).to.have.property('editor.formatOnSave', true);\n expect(settings).to.have.property('typescript.preferences.includePackageJsonAutoImports', 'off');\n expect(settings).to.have.property('mcp');\n expect(settings.mcp.servers['bit-cli']).to.deep.equal({\n command: 'bit',\n args: ['mcp-server'],\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
package/dist/mcp-server.cmd.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CLIArgs, Command, CommandOptions } from '@teambit/cli';
|
|
2
2
|
import { CliMcpServerMain } from './cli-mcp-server.main.runtime';
|
|
3
|
-
export type
|
|
3
|
+
export type McpStartCmdOptions = {
|
|
4
4
|
extended?: boolean;
|
|
5
5
|
includeOnly?: string;
|
|
6
6
|
includeAdditional?: string;
|
|
@@ -16,6 +16,19 @@ export declare class McpServerCmd implements Command {
|
|
|
16
16
|
group: string;
|
|
17
17
|
loader: boolean;
|
|
18
18
|
options: CommandOptions;
|
|
19
|
+
commands: Command[];
|
|
19
20
|
constructor(mcpServer: CliMcpServerMain);
|
|
20
|
-
wait(args: CLIArgs, flags:
|
|
21
|
+
wait(args: CLIArgs, flags: McpStartCmdOptions): Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
export declare class McpStartCmd implements Command {
|
|
24
|
+
private mcpServer;
|
|
25
|
+
name: string;
|
|
26
|
+
description: string;
|
|
27
|
+
extendedDescription: string;
|
|
28
|
+
alias: string;
|
|
29
|
+
group: string;
|
|
30
|
+
loader: boolean;
|
|
31
|
+
options: CommandOptions;
|
|
32
|
+
constructor(mcpServer: CliMcpServerMain);
|
|
33
|
+
wait(args: CLIArgs, flags: McpStartCmdOptions): Promise<void>;
|
|
21
34
|
}
|