@theia/ai-mcp 1.72.0-next.42 → 1.72.0-next.46

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.
@@ -44,7 +44,7 @@ export declare class McpFrontendApplicationContribution implements FrontendAppli
44
44
  protected updateBlockedServersStatusBar(): void;
45
45
  getRestrictions(): WorkspaceRestriction[];
46
46
  protected autoStartServers(servers: Map<string, MCPServerDescription>): Promise<void>;
47
- protected handleServerChanges(newServers: MCPServersPreference): void;
47
+ protected handleServerChanges(newServers: MCPServersPreference): Promise<void>;
48
48
  protected syncServers(servers: Map<string, MCPServerDescription>): void;
49
49
  protected convertToMap(servers: MCPServersPreference): Map<string, MCPServerDescription>;
50
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/mcp-frontend-application-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAmB,MAAM,aAAa,CAAC;AAEjE,OAAO,EACH,qBAAqB,EACrB,gCAAgC,EAChC,oBAAoB,EACvB,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAElF,UAAU,4BAA4B;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,6BAA8B,SAAQ,4BAA4B;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACnC;AAED,UAAU,8BAA+B,SAAQ,4BAA4B;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACvC;AAED,KAAK,yBAAyB,GAAG,6BAA6B,GAAG,8BAA8B,CAAC;AAEhG,UAAU,oBAAoB;IAC1B,CAAC,IAAI,EAAE,MAAM,GAAG,yBAAyB,CAAA;CAC5C;AAED,kBAAU,oBAAoB,CAAC;IAC3B,SAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,yBAAyB,CAWtE;CACJ;AAeD,qBACa,kCAAmC,YAAW,+BAA+B,EAAE,gCAAgC;IAGxH,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAGpC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAGjD,SAAS,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAGvD,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAE7C,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAa;IAErE,SAAS,CAAC,uBAAuB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAE3D,OAAO,IAAI,IAAI;cAyCC,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;cA6BrD,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC;cAe9C,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAY/C,SAAS,CAAC,6BAA6B,IAAI,IAAI;IAI/C,eAAe,IAAI,oBAAoB,EAAE;cAUzB,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB3F,SAAS,CAAC,mBAAmB,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI;IAoCrE,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,IAAI;IAavE,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC;CAgC3F"}
1
+ {"version":3,"file":"mcp-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/mcp-frontend-application-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAmB,MAAM,aAAa,CAAC;AAEjE,OAAO,EACH,qBAAqB,EACrB,gCAAgC,EAChC,oBAAoB,EACvB,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAElF,UAAU,4BAA4B;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,6BAA8B,SAAQ,4BAA4B;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACnC;AAED,UAAU,8BAA+B,SAAQ,4BAA4B;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACvC;AAED,KAAK,yBAAyB,GAAG,6BAA6B,GAAG,8BAA8B,CAAC;AAEhG,UAAU,oBAAoB;IAC1B,CAAC,IAAI,EAAE,MAAM,GAAG,yBAAyB,CAAA;CAC5C;AAED,kBAAU,oBAAoB,CAAC;IAC3B,SAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,yBAAyB,CAWtE;CACJ;AAeD,qBACa,kCAAmC,YAAW,+BAA+B,EAAE,gCAAgC;IAGxH,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAGpC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAGjD,SAAS,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAGvD,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAE7C,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAa;IAErE,SAAS,CAAC,uBAAuB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAE3D,OAAO,IAAI,IAAI;cAyCC,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;cA6BrD,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC;cAe9C,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAY/C,SAAS,CAAC,6BAA6B,IAAI,IAAI;IAI/C,eAAe,IAAI,oBAAoB,EAAE;cAUzB,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;cAqB3E,mBAAmB,CAAC,UAAU,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCpF,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,IAAI;IAavE,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC;CAgC3F"}
@@ -72,7 +72,7 @@ let McpFrontendApplicationContribution = class McpFrontendApplicationContributio
72
72
  await this.autoStartServers(this.prevServers);
73
73
  this.preferenceService.onPreferenceChanged(async (event) => {
74
74
  if (event.preferenceName === mcp_preferences_1.MCP_SERVERS_PREF) {
75
- this.handleServerChanges(filterValidValues(this.preferenceService.get(mcp_preferences_1.MCP_SERVERS_PREF, {})));
75
+ await this.handleServerChanges(filterValidValues(this.preferenceService.get(mcp_preferences_1.MCP_SERVERS_PREF, {})));
76
76
  }
77
77
  if (event.preferenceName === mcp_preferences_1.MCP_USE_WORKSPACE_AS_ROOT_PREF) {
78
78
  await this.updateWorkspaceRoots(true);
@@ -175,11 +175,12 @@ let McpFrontendApplicationContribution = class McpFrontendApplicationContributio
175
175
  }
176
176
  this.updateBlockedServersStatusBar();
177
177
  }
178
- handleServerChanges(newServers) {
178
+ async handleServerChanges(newServers) {
179
179
  const oldServers = this.prevServers;
180
180
  const updatedServers = this.convertToMap(newServers);
181
181
  for (const [name] of oldServers) {
182
182
  if (!updatedServers.has(name)) {
183
+ await this.frontendMCPService.stopServer(name);
183
184
  this.manager.removeServer(name);
184
185
  this.blockedUntrustedServers.delete(name);
185
186
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/mcp-frontend-application-contribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/mcp-frontend-application-contribution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import 'reflect-metadata';
2
+ //# sourceMappingURL=mcp-frontend-application-contribution.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-frontend-application-contribution.spec.d.ts","sourceRoot":"","sources":["../../src/browser/mcp-frontend-application-contribution.spec.ts"],"names":[],"mappings":"AAqBA,OAAO,kBAAkB,CAAC"}
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 EclipseSource and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const jsdom_1 = require("@theia/core/lib/browser/test/jsdom");
19
+ let disableJSDOM = (0, jsdom_1.enableJSDOM)();
20
+ const frontend_application_config_provider_1 = require("@theia/core/lib/browser/frontend-application-config-provider");
21
+ frontend_application_config_provider_1.FrontendApplicationConfigProvider.set({});
22
+ require("reflect-metadata");
23
+ const chai_1 = require("chai");
24
+ const sinon = require("sinon");
25
+ const inversify_1 = require("inversify");
26
+ const core_1 = require("@theia/core");
27
+ const mcp_frontend_application_contribution_1 = require("./mcp-frontend-application-contribution");
28
+ const common_1 = require("../common");
29
+ const mcp_server_manager_1 = require("../common/mcp-server-manager");
30
+ const workspace_trust_service_1 = require("@theia/workspace/lib/browser/workspace-trust-service");
31
+ const workspace_service_1 = require("@theia/workspace/lib/browser/workspace-service");
32
+ disableJSDOM();
33
+ describe('McpFrontendApplicationContribution', () => {
34
+ before(() => disableJSDOM = (0, jsdom_1.enableJSDOM)());
35
+ after(() => disableJSDOM());
36
+ let contribution;
37
+ let mockFrontendMCPService;
38
+ let mockManager;
39
+ beforeEach(() => {
40
+ const container = new inversify_1.Container();
41
+ mockFrontendMCPService = {
42
+ startServer: sinon.stub().resolves(),
43
+ stopServer: sinon.stub().resolves(),
44
+ hasServer: sinon.stub().resolves(false),
45
+ isServerStarted: sinon.stub().resolves(false),
46
+ registerToolsForAllStartedServers: sinon.stub().resolves(),
47
+ addOrUpdateServer: sinon.stub().resolves(),
48
+ getStartedServers: sinon.stub().resolves([]),
49
+ getServerNames: sinon.stub().resolves([]),
50
+ getServerDescription: sinon.stub().resolves(undefined),
51
+ getTools: sinon.stub().resolves(undefined),
52
+ getPromptTemplateId: sinon.stub().returns(''),
53
+ };
54
+ mockManager = {
55
+ callTool: sinon.stub().resolves({ content: [] }),
56
+ removeServer: sinon.stub(),
57
+ addOrUpdateServer: sinon.stub(),
58
+ getTools: sinon.stub().resolves({ tools: [] }),
59
+ getServerNames: sinon.stub().resolves([]),
60
+ getServerDescription: sinon.stub().resolves(undefined),
61
+ startServer: sinon.stub().resolves(),
62
+ stopServer: sinon.stub().resolves(),
63
+ getRunningServers: sinon.stub().resolves([]),
64
+ setClient: sinon.stub(),
65
+ disconnectClient: sinon.stub(),
66
+ readResource: sinon.stub().resolves({ contents: [] }),
67
+ getResources: sinon.stub().resolves({ resources: [] }),
68
+ setWorkspaceRoots: sinon.stub(),
69
+ };
70
+ const mockPreferenceService = {
71
+ ready: Promise.resolve(),
72
+ get: sinon.stub().returns({}),
73
+ onPreferenceChanged: sinon.stub().returns({ dispose: () => { } }),
74
+ };
75
+ const mockWorkspaceTrustService = {
76
+ getWorkspaceTrust: sinon.stub().resolves(true),
77
+ onDidChangeWorkspaceTrust: sinon.stub().returns({ dispose: () => { } }),
78
+ refreshRestrictedModeIndicator: sinon.stub(),
79
+ };
80
+ const mockWorkspaceService = {
81
+ tryGetRoots: sinon.stub().returns([]),
82
+ onWorkspaceChanged: sinon.stub().returns({ dispose: () => { } }),
83
+ };
84
+ container.bind(mcp_frontend_application_contribution_1.McpFrontendApplicationContribution).toSelf().inSingletonScope();
85
+ container.bind(core_1.PreferenceService).toConstantValue(mockPreferenceService);
86
+ container.bind(common_1.MCPServerManager).toConstantValue(mockManager);
87
+ container.bind(mcp_server_manager_1.MCPFrontendService).toConstantValue(mockFrontendMCPService);
88
+ container.bind(workspace_trust_service_1.WorkspaceTrustService).toConstantValue(mockWorkspaceTrustService);
89
+ container.bind(workspace_service_1.WorkspaceService).toConstantValue(mockWorkspaceService);
90
+ contribution = container.get(mcp_frontend_application_contribution_1.McpFrontendApplicationContribution);
91
+ });
92
+ afterEach(() => {
93
+ sinon.restore();
94
+ });
95
+ describe('handleServerChanges', () => {
96
+ it('calls stopServer before removeServer when a server is removed', async () => {
97
+ const callOrder = [];
98
+ mockFrontendMCPService.stopServer.callsFake(async () => { callOrder.push('stopServer'); });
99
+ mockManager.removeServer.callsFake(() => { callOrder.push('removeServer'); });
100
+ contribution.prevServers = new Map([
101
+ ['test-server', { name: 'test-server', command: 'node', args: ['server.js'], autostart: true }]
102
+ ]);
103
+ await contribution.handleServerChanges({});
104
+ (0, chai_1.expect)(mockFrontendMCPService.stopServer.calledOnce).to.be.true;
105
+ (0, chai_1.expect)(mockFrontendMCPService.stopServer.calledWith('test-server')).to.be.true;
106
+ (0, chai_1.expect)(mockManager.removeServer.calledOnce).to.be.true;
107
+ (0, chai_1.expect)(mockManager.removeServer.calledWith('test-server')).to.be.true;
108
+ (0, chai_1.expect)(callOrder).to.deep.equal(['stopServer', 'removeServer']);
109
+ });
110
+ it('calls stopServer and removeServer for each removed server', async () => {
111
+ contribution.prevServers = new Map([
112
+ ['server-a', { name: 'server-a', command: 'node', args: ['a.js'], autostart: false }],
113
+ ['server-b', { name: 'server-b', serverUrl: 'http://example.com', autostart: false }],
114
+ ['server-c', { name: 'server-c', command: 'node', args: ['c.js'], autostart: false }]
115
+ ]);
116
+ // Only server-b remains
117
+ await contribution.handleServerChanges({
118
+ 'server-b': { serverUrl: 'http://example.com' }
119
+ });
120
+ (0, chai_1.expect)(mockFrontendMCPService.stopServer.calledWith('server-a')).to.be.true;
121
+ (0, chai_1.expect)(mockFrontendMCPService.stopServer.calledWith('server-c')).to.be.true;
122
+ (0, chai_1.expect)(mockFrontendMCPService.stopServer.calledWith('server-b')).to.be.false;
123
+ (0, chai_1.expect)(mockManager.removeServer.calledWith('server-a')).to.be.true;
124
+ (0, chai_1.expect)(mockManager.removeServer.calledWith('server-c')).to.be.true;
125
+ (0, chai_1.expect)(mockManager.removeServer.calledWith('server-b')).to.be.false;
126
+ });
127
+ it('does not call stopServer or removeServer when no servers are removed', async () => {
128
+ contribution.prevServers = new Map([
129
+ ['existing-server', { name: 'existing-server', command: 'node', autostart: true }]
130
+ ]);
131
+ await contribution.handleServerChanges({
132
+ 'existing-server': { command: 'node' }
133
+ });
134
+ (0, chai_1.expect)(mockFrontendMCPService.stopServer.called).to.be.false;
135
+ (0, chai_1.expect)(mockManager.removeServer.called).to.be.false;
136
+ });
137
+ it('calls addOrUpdateServer for new servers', async () => {
138
+ contribution.prevServers = new Map();
139
+ await contribution.handleServerChanges({
140
+ 'new-server': { command: 'node', args: ['server.js'] }
141
+ });
142
+ (0, chai_1.expect)(mockManager.addOrUpdateServer.calledOnce).to.be.true;
143
+ const addedServer = mockManager.addOrUpdateServer.firstCall.args[0];
144
+ (0, chai_1.expect)(addedServer.name).to.equal('new-server');
145
+ });
146
+ it('calls addOrUpdateServer for updated servers', async () => {
147
+ contribution.prevServers = new Map([
148
+ ['my-server', { name: 'my-server', command: 'node', args: ['old.js'], autostart: true }]
149
+ ]);
150
+ await contribution.handleServerChanges({
151
+ 'my-server': { command: 'node', args: ['new.js'] }
152
+ });
153
+ (0, chai_1.expect)(mockFrontendMCPService.stopServer.called).to.be.false;
154
+ (0, chai_1.expect)(mockManager.removeServer.called).to.be.false;
155
+ (0, chai_1.expect)(mockManager.addOrUpdateServer.calledOnce).to.be.true;
156
+ });
157
+ it('clears blockedUntrustedServers entry when a server is removed', async () => {
158
+ contribution.prevServers = new Map([
159
+ ['blocked-server', { name: 'blocked-server', command: 'node', autostart: true }]
160
+ ]);
161
+ // Simulate the server having been blocked
162
+ contribution.blockedUntrustedServers.add('blocked-server');
163
+ await contribution.handleServerChanges({});
164
+ (0, chai_1.expect)(contribution.blockedUntrustedServers.has('blocked-server')).to.be.false;
165
+ });
166
+ it('updates prevServers after handling changes', async () => {
167
+ contribution.prevServers = new Map([
168
+ ['old-server', { name: 'old-server', command: 'node', autostart: true }]
169
+ ]);
170
+ await contribution.handleServerChanges({
171
+ 'new-server': { command: 'python', args: ['serve.py'] }
172
+ });
173
+ (0, chai_1.expect)(contribution.prevServers.has('old-server')).to.be.false;
174
+ (0, chai_1.expect)(contribution.prevServers.has('new-server')).to.be.true;
175
+ });
176
+ });
177
+ });
178
+ //# sourceMappingURL=mcp-frontend-application-contribution.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-frontend-application-contribution.spec.js","sourceRoot":"","sources":["../../src/browser/mcp-frontend-application-contribution.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@theia/ai-mcp",
3
- "version": "1.72.0-next.42+0bd5c7b25",
3
+ "version": "1.72.0-next.46+128342e9b",
4
4
  "description": "Theia - MCP Integration",
5
5
  "dependencies": {
6
6
  "@modelcontextprotocol/sdk": "^1.29.0",
7
- "@theia/ai-core": "1.72.0-next.42+0bd5c7b25",
8
- "@theia/core": "1.72.0-next.42+0bd5c7b25",
9
- "@theia/workspace": "1.72.0-next.42+0bd5c7b25"
7
+ "@theia/ai-core": "1.72.0-next.46+128342e9b",
8
+ "@theia/core": "1.72.0-next.46+128342e9b",
9
+ "@theia/workspace": "1.72.0-next.46+128342e9b"
10
10
  },
11
11
  "publishConfig": {
12
12
  "access": "public"
@@ -48,5 +48,5 @@
48
48
  "nyc": {
49
49
  "extends": "../../configs/nyc.json"
50
50
  },
51
- "gitHead": "0bd5c7b25cf6f444078681d4a24e263320b29907"
51
+ "gitHead": "128342e9ba53c273de5ef8a5bc9b93dbc0b931d4"
52
52
  }
@@ -0,0 +1,252 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2026 EclipseSource and others.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { enableJSDOM } from '@theia/core/lib/browser/test/jsdom';
18
+ let disableJSDOM = enableJSDOM();
19
+ import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/frontend-application-config-provider';
20
+ FrontendApplicationConfigProvider.set({});
21
+
22
+ import 'reflect-metadata';
23
+
24
+ import { expect } from 'chai';
25
+ import * as sinon from 'sinon';
26
+ import { Container } from 'inversify';
27
+ import { PreferenceService } from '@theia/core';
28
+ import { McpFrontendApplicationContribution } from './mcp-frontend-application-contribution';
29
+ import { MCPServerDescription, MCPServerManager } from '../common';
30
+ import { MCPFrontendService } from '../common/mcp-server-manager';
31
+ import { WorkspaceTrustService } from '@theia/workspace/lib/browser/workspace-trust-service';
32
+ import { WorkspaceService } from '@theia/workspace/lib/browser/workspace-service';
33
+
34
+ disableJSDOM();
35
+
36
+ type TestableContribution = McpFrontendApplicationContribution & {
37
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
+ handleServerChanges(newServers: any): Promise<void>;
39
+ prevServers: Map<string, MCPServerDescription>;
40
+ blockedUntrustedServers: Set<string>;
41
+ };
42
+
43
+ interface MockFrontendMCPService {
44
+ startServer: sinon.SinonStub;
45
+ stopServer: sinon.SinonStub;
46
+ hasServer: sinon.SinonStub;
47
+ isServerStarted: sinon.SinonStub;
48
+ registerToolsForAllStartedServers: sinon.SinonStub;
49
+ addOrUpdateServer: sinon.SinonStub;
50
+ getStartedServers: sinon.SinonStub;
51
+ getServerNames: sinon.SinonStub;
52
+ getServerDescription: sinon.SinonStub;
53
+ getTools: sinon.SinonStub;
54
+ getPromptTemplateId: sinon.SinonStub;
55
+ }
56
+
57
+ interface MockMCPServerManager {
58
+ callTool: sinon.SinonStub;
59
+ removeServer: sinon.SinonStub;
60
+ addOrUpdateServer: sinon.SinonStub;
61
+ getTools: sinon.SinonStub;
62
+ getServerNames: sinon.SinonStub;
63
+ getServerDescription: sinon.SinonStub;
64
+ startServer: sinon.SinonStub;
65
+ stopServer: sinon.SinonStub;
66
+ getRunningServers: sinon.SinonStub;
67
+ setClient: sinon.SinonStub;
68
+ disconnectClient: sinon.SinonStub;
69
+ readResource: sinon.SinonStub;
70
+ getResources: sinon.SinonStub;
71
+ setWorkspaceRoots: sinon.SinonStub;
72
+ }
73
+
74
+ describe('McpFrontendApplicationContribution', () => {
75
+ before(() => disableJSDOM = enableJSDOM());
76
+ after(() => disableJSDOM());
77
+
78
+ let contribution: TestableContribution;
79
+ let mockFrontendMCPService: MockFrontendMCPService;
80
+ let mockManager: MockMCPServerManager;
81
+
82
+ beforeEach(() => {
83
+ const container = new Container();
84
+
85
+ mockFrontendMCPService = {
86
+ startServer: sinon.stub().resolves(),
87
+ stopServer: sinon.stub().resolves(),
88
+ hasServer: sinon.stub().resolves(false),
89
+ isServerStarted: sinon.stub().resolves(false),
90
+ registerToolsForAllStartedServers: sinon.stub().resolves(),
91
+ addOrUpdateServer: sinon.stub().resolves(),
92
+ getStartedServers: sinon.stub().resolves([]),
93
+ getServerNames: sinon.stub().resolves([]),
94
+ getServerDescription: sinon.stub().resolves(undefined),
95
+ getTools: sinon.stub().resolves(undefined),
96
+ getPromptTemplateId: sinon.stub().returns(''),
97
+ };
98
+
99
+ mockManager = {
100
+ callTool: sinon.stub().resolves({ content: [] }),
101
+ removeServer: sinon.stub(),
102
+ addOrUpdateServer: sinon.stub(),
103
+ getTools: sinon.stub().resolves({ tools: [] }),
104
+ getServerNames: sinon.stub().resolves([]),
105
+ getServerDescription: sinon.stub().resolves(undefined),
106
+ startServer: sinon.stub().resolves(),
107
+ stopServer: sinon.stub().resolves(),
108
+ getRunningServers: sinon.stub().resolves([]),
109
+ setClient: sinon.stub(),
110
+ disconnectClient: sinon.stub(),
111
+ readResource: sinon.stub().resolves({ contents: [] }),
112
+ getResources: sinon.stub().resolves({ resources: [] }),
113
+ setWorkspaceRoots: sinon.stub(),
114
+ };
115
+
116
+ const mockPreferenceService = {
117
+ ready: Promise.resolve(),
118
+ get: sinon.stub().returns({}),
119
+ onPreferenceChanged: sinon.stub().returns({ dispose: () => { } }),
120
+ };
121
+
122
+ const mockWorkspaceTrustService = {
123
+ getWorkspaceTrust: sinon.stub().resolves(true),
124
+ onDidChangeWorkspaceTrust: sinon.stub().returns({ dispose: () => { } }),
125
+ refreshRestrictedModeIndicator: sinon.stub(),
126
+ };
127
+
128
+ const mockWorkspaceService = {
129
+ tryGetRoots: sinon.stub().returns([]),
130
+ onWorkspaceChanged: sinon.stub().returns({ dispose: () => { } }),
131
+ };
132
+
133
+ container.bind(McpFrontendApplicationContribution).toSelf().inSingletonScope();
134
+ container.bind(PreferenceService).toConstantValue(mockPreferenceService as unknown as PreferenceService);
135
+ container.bind(MCPServerManager).toConstantValue(mockManager as unknown as MCPServerManager);
136
+ container.bind(MCPFrontendService).toConstantValue(mockFrontendMCPService as unknown as MCPFrontendService);
137
+ container.bind(WorkspaceTrustService).toConstantValue(mockWorkspaceTrustService as unknown as WorkspaceTrustService);
138
+ container.bind(WorkspaceService).toConstantValue(mockWorkspaceService as unknown as WorkspaceService);
139
+
140
+ contribution = container.get<McpFrontendApplicationContribution>(McpFrontendApplicationContribution) as TestableContribution;
141
+ });
142
+
143
+ afterEach(() => {
144
+ sinon.restore();
145
+ });
146
+
147
+ describe('handleServerChanges', () => {
148
+
149
+ it('calls stopServer before removeServer when a server is removed', async () => {
150
+ const callOrder: string[] = [];
151
+ mockFrontendMCPService.stopServer.callsFake(async () => { callOrder.push('stopServer'); });
152
+ mockManager.removeServer.callsFake(() => { callOrder.push('removeServer'); });
153
+
154
+ contribution.prevServers = new Map([
155
+ ['test-server', { name: 'test-server', command: 'node', args: ['server.js'], autostart: true }]
156
+ ]);
157
+
158
+ await contribution.handleServerChanges({});
159
+
160
+ expect(mockFrontendMCPService.stopServer.calledOnce).to.be.true;
161
+ expect(mockFrontendMCPService.stopServer.calledWith('test-server')).to.be.true;
162
+ expect(mockManager.removeServer.calledOnce).to.be.true;
163
+ expect(mockManager.removeServer.calledWith('test-server')).to.be.true;
164
+ expect(callOrder).to.deep.equal(['stopServer', 'removeServer']);
165
+ });
166
+
167
+ it('calls stopServer and removeServer for each removed server', async () => {
168
+ contribution.prevServers = new Map([
169
+ ['server-a', { name: 'server-a', command: 'node', args: ['a.js'], autostart: false }],
170
+ ['server-b', { name: 'server-b', serverUrl: 'http://example.com', autostart: false }],
171
+ ['server-c', { name: 'server-c', command: 'node', args: ['c.js'], autostart: false }]
172
+ ]);
173
+
174
+ // Only server-b remains
175
+ await contribution.handleServerChanges({
176
+ 'server-b': { serverUrl: 'http://example.com' }
177
+ });
178
+
179
+ expect(mockFrontendMCPService.stopServer.calledWith('server-a')).to.be.true;
180
+ expect(mockFrontendMCPService.stopServer.calledWith('server-c')).to.be.true;
181
+ expect(mockFrontendMCPService.stopServer.calledWith('server-b')).to.be.false;
182
+
183
+ expect(mockManager.removeServer.calledWith('server-a')).to.be.true;
184
+ expect(mockManager.removeServer.calledWith('server-c')).to.be.true;
185
+ expect(mockManager.removeServer.calledWith('server-b')).to.be.false;
186
+ });
187
+
188
+ it('does not call stopServer or removeServer when no servers are removed', async () => {
189
+ contribution.prevServers = new Map([
190
+ ['existing-server', { name: 'existing-server', command: 'node', autostart: true }]
191
+ ]);
192
+
193
+ await contribution.handleServerChanges({
194
+ 'existing-server': { command: 'node' }
195
+ });
196
+
197
+ expect(mockFrontendMCPService.stopServer.called).to.be.false;
198
+ expect(mockManager.removeServer.called).to.be.false;
199
+ });
200
+
201
+ it('calls addOrUpdateServer for new servers', async () => {
202
+ contribution.prevServers = new Map();
203
+
204
+ await contribution.handleServerChanges({
205
+ 'new-server': { command: 'node', args: ['server.js'] }
206
+ });
207
+
208
+ expect(mockManager.addOrUpdateServer.calledOnce).to.be.true;
209
+ const addedServer = mockManager.addOrUpdateServer.firstCall.args[0];
210
+ expect(addedServer.name).to.equal('new-server');
211
+ });
212
+
213
+ it('calls addOrUpdateServer for updated servers', async () => {
214
+ contribution.prevServers = new Map([
215
+ ['my-server', { name: 'my-server', command: 'node', args: ['old.js'], autostart: true }]
216
+ ]);
217
+
218
+ await contribution.handleServerChanges({
219
+ 'my-server': { command: 'node', args: ['new.js'] }
220
+ });
221
+
222
+ expect(mockFrontendMCPService.stopServer.called).to.be.false;
223
+ expect(mockManager.removeServer.called).to.be.false;
224
+ expect(mockManager.addOrUpdateServer.calledOnce).to.be.true;
225
+ });
226
+
227
+ it('clears blockedUntrustedServers entry when a server is removed', async () => {
228
+ contribution.prevServers = new Map([
229
+ ['blocked-server', { name: 'blocked-server', command: 'node', autostart: true }]
230
+ ]);
231
+ // Simulate the server having been blocked
232
+ contribution.blockedUntrustedServers.add('blocked-server');
233
+
234
+ await contribution.handleServerChanges({});
235
+
236
+ expect(contribution.blockedUntrustedServers.has('blocked-server')).to.be.false;
237
+ });
238
+
239
+ it('updates prevServers after handling changes', async () => {
240
+ contribution.prevServers = new Map([
241
+ ['old-server', { name: 'old-server', command: 'node', autostart: true }]
242
+ ]);
243
+
244
+ await contribution.handleServerChanges({
245
+ 'new-server': { command: 'python', args: ['serve.py'] }
246
+ });
247
+
248
+ expect(contribution.prevServers.has('old-server')).to.be.false;
249
+ expect(contribution.prevServers.has('new-server')).to.be.true;
250
+ });
251
+ });
252
+ });
@@ -121,7 +121,7 @@ export class McpFrontendApplicationContribution implements FrontendApplicationCo
121
121
 
122
122
  this.preferenceService.onPreferenceChanged(async event => {
123
123
  if (event.preferenceName === MCP_SERVERS_PREF) {
124
- this.handleServerChanges(filterValidValues(this.preferenceService.get(MCP_SERVERS_PREF, {})));
124
+ await this.handleServerChanges(filterValidValues(this.preferenceService.get(MCP_SERVERS_PREF, {})));
125
125
  }
126
126
  if (event.preferenceName === MCP_USE_WORKSPACE_AS_ROOT_PREF) {
127
127
  await this.updateWorkspaceRoots(true);
@@ -234,12 +234,13 @@ export class McpFrontendApplicationContribution implements FrontendApplicationCo
234
234
  this.updateBlockedServersStatusBar();
235
235
  }
236
236
 
237
- protected handleServerChanges(newServers: MCPServersPreference): void {
237
+ protected async handleServerChanges(newServers: MCPServersPreference): Promise<void> {
238
238
  const oldServers = this.prevServers;
239
239
  const updatedServers = this.convertToMap(newServers);
240
240
 
241
241
  for (const [name] of oldServers) {
242
242
  if (!updatedServers.has(name)) {
243
+ await this.frontendMCPService.stopServer(name);
243
244
  this.manager.removeServer(name);
244
245
  this.blockedUntrustedServers.delete(name);
245
246
  }
@@ -1 +0,0 @@
1
- //# sourceMappingURL=package.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package.spec.d.ts","sourceRoot":"","sources":["../src/package.spec.ts"],"names":[],"mappings":""}
@@ -1,26 +0,0 @@
1
- // *****************************************************************************
2
- // Copyright (C) 2024 EclipseSource GmbH and others.
3
- //
4
- // This program and the accompanying materials are made available under the
5
- // terms of the Eclipse Public License v. 2.0 which is available at
6
- // http://www.eclipse.org/legal/epl-2.0.
7
- //
8
- // This Source Code may also be made available under the following Secondary
9
- // Licenses when the conditions for such availability set forth in the Eclipse
10
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
- // with the GNU Classpath Exception which is available at
12
- // https://www.gnu.org/software/classpath/license.html.
13
- //
14
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
- // *****************************************************************************
16
- /* note: this bogus test file is required so that
17
- we are able to run mocha unit tests on this
18
- package, without having any actual unit tests in it.
19
- This way a coverage report will be generated,
20
- showing 0% coverage, instead of no report.
21
- This file can be removed once we have real unit
22
- tests in place. */
23
- describe('ai-mcp package', () => {
24
- it('support code coverage statistics', () => true);
25
- });
26
- //# sourceMappingURL=package.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package.spec.js","sourceRoot":"","sources":["../src/package.spec.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAEhF;;;;;;qBAMqB;AAErB,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAE5B,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC"}
@@ -1,28 +0,0 @@
1
- // *****************************************************************************
2
- // Copyright (C) 2024 EclipseSource GmbH and others.
3
- //
4
- // This program and the accompanying materials are made available under the
5
- // terms of the Eclipse Public License v. 2.0 which is available at
6
- // http://www.eclipse.org/legal/epl-2.0.
7
- //
8
- // This Source Code may also be made available under the following Secondary
9
- // Licenses when the conditions for such availability set forth in the Eclipse
10
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
- // with the GNU Classpath Exception which is available at
12
- // https://www.gnu.org/software/classpath/license.html.
13
- //
14
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
- // *****************************************************************************
16
-
17
- /* note: this bogus test file is required so that
18
- we are able to run mocha unit tests on this
19
- package, without having any actual unit tests in it.
20
- This way a coverage report will be generated,
21
- showing 0% coverage, instead of no report.
22
- This file can be removed once we have real unit
23
- tests in place. */
24
-
25
- describe('ai-mcp package', () => {
26
-
27
- it('support code coverage statistics', () => true);
28
- });