@theia/ai-mcp 1.58.2 → 1.59.0-next.62
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/lib/browser/mcp-command-contribution.d.ts.map +1 -1
- package/lib/browser/mcp-command-contribution.js +9 -8
- package/lib/browser/mcp-command-contribution.js.map +1 -1
- package/lib/browser/mcp-frontend-application-contribution.d.ts.map +1 -1
- package/lib/browser/mcp-frontend-application-contribution.js +1 -0
- package/lib/browser/mcp-frontend-application-contribution.js.map +1 -1
- package/lib/browser/mcp-preferences.d.ts.map +1 -1
- package/lib/browser/mcp-preferences.js +39 -41
- package/lib/browser/mcp-preferences.js.map +1 -1
- package/package.json +5 -5
- package/src/browser/mcp-command-contribution.ts +10 -9
- package/src/browser/mcp-frontend-application-contribution.ts +1 -0
- package/src/browser/mcp-preferences.ts +63 -64
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-command-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/mcp-command-contribution.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AAChG,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"mcp-command-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/mcp-command-contribution.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AAChG,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAO,MAAM,aAAa,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,eAAO,MAAM,cAAc;;;CAG1B,CAAC;AACF,eAAO,MAAM,aAAa;;;CAGzB,CAAC;AAEF,qBACa,sBAAuB,YAAW,mBAAmB;IAE9D,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;IAGlE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IAGzC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;YAE5C,qBAAqB;IASnC,gBAAgB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;CAqD3D"}
|
|
@@ -24,11 +24,11 @@ const inversify_1 = require("@theia/core/shared/inversify");
|
|
|
24
24
|
const mcp_frontend_service_1 = require("./mcp-frontend-service");
|
|
25
25
|
exports.StartMCPServer = {
|
|
26
26
|
id: 'mcp.startserver',
|
|
27
|
-
label: 'MCP: Start MCP Server',
|
|
27
|
+
label: core_1.nls.localize('theia/ai/mcp/start/label', 'MCP: Start MCP Server'),
|
|
28
28
|
};
|
|
29
29
|
exports.StopMCPServer = {
|
|
30
30
|
id: 'mcp.stopserver',
|
|
31
|
-
label: 'MCP: Stop MCP Server',
|
|
31
|
+
label: core_1.nls.localize('theia/ai/mcp/stop/label', 'MCP: Stop MCP Server'),
|
|
32
32
|
};
|
|
33
33
|
let MCPCommandContribution = class MCPCommandContribution {
|
|
34
34
|
async getMCPServerSelection(serverNames) {
|
|
@@ -45,7 +45,7 @@ let MCPCommandContribution = class MCPCommandContribution {
|
|
|
45
45
|
try {
|
|
46
46
|
const startedServers = await this.mcpFrontendService.getStartedServers();
|
|
47
47
|
if (!startedServers || startedServers.length === 0) {
|
|
48
|
-
this.messageService.error('No MCP servers running.');
|
|
48
|
+
this.messageService.error(core_1.nls.localize('theia/ai/mcp/error/noRunningServers', 'No MCP servers running.'));
|
|
49
49
|
return;
|
|
50
50
|
}
|
|
51
51
|
const selection = await this.getMCPServerSelection(startedServers);
|
|
@@ -67,10 +67,10 @@ let MCPCommandContribution = class MCPCommandContribution {
|
|
|
67
67
|
const startableServers = servers.filter(server => !startedServers.includes(server));
|
|
68
68
|
if (!startableServers || startableServers.length === 0) {
|
|
69
69
|
if (startedServers && startedServers.length > 0) {
|
|
70
|
-
this.messageService.error('All MCP servers are already running.');
|
|
70
|
+
this.messageService.error(core_1.nls.localize('theia/ai/mcp/error/allServersRunning', 'All MCP servers are already running.'));
|
|
71
71
|
}
|
|
72
72
|
else {
|
|
73
|
-
this.messageService.error('No MCP servers configured.');
|
|
73
|
+
this.messageService.error(core_1.nls.localize('theia/ai/mcp/error/noServersConfigured', 'No MCP servers configured.'));
|
|
74
74
|
}
|
|
75
75
|
return;
|
|
76
76
|
}
|
|
@@ -80,11 +80,12 @@ let MCPCommandContribution = class MCPCommandContribution {
|
|
|
80
80
|
}
|
|
81
81
|
await this.mcpFrontendService.startServer(selection);
|
|
82
82
|
const { tools } = await this.mcpFrontendService.getTools(selection);
|
|
83
|
-
const toolNames = tools.map(tool => tool.name || 'Unnamed Tool').join(', ');
|
|
84
|
-
this.messageService.info(
|
|
83
|
+
const toolNames = tools.map(tool => tool.name || core_1.nls.localize('theia/ai/mcp/tool/unnamed', 'Unnamed Tool')).join(', ');
|
|
84
|
+
this.messageService.info(core_1.nls.localize('theia/ai/mcp/info/serverStarted', 'MCP server "{0}" successfully started. Registered tools: {1}', selection, toolNames ||
|
|
85
|
+
core_1.nls.localize('theia/ai/mcp/tool/noTools', 'No tools available.')));
|
|
85
86
|
}
|
|
86
87
|
catch (error) {
|
|
87
|
-
this.messageService.error('An error occurred while starting the MCP server.');
|
|
88
|
+
this.messageService.error(core_1.nls.localize('theia/ai/mcp/error/startFailed', 'An error occurred while starting the MCP server.'));
|
|
88
89
|
console.error('Error while starting MCP server:', error);
|
|
89
90
|
}
|
|
90
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-command-contribution.js","sourceRoot":"","sources":["../../src/browser/mcp-command-contribution.ts"],"names":[],"mappings":";;;;AAAA,gFAAgF;AAChF,yCAAyC;AACzC,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;AAChF,sGAAgG;AAChG,
|
|
1
|
+
{"version":3,"file":"mcp-command-contribution.js","sourceRoot":"","sources":["../../src/browser/mcp-command-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,EAAsB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjH,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAGnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,UAAU,yBAAyB;IAC/B,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;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,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,CAMtE;CACJ;AAeD,qBACa,kCAAmC,YAAW,+BAA+B;IAGtF,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAGpC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAEjD,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAa;IAErE,OAAO,IAAI,IAAI;cAmBC,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3F,SAAS,CAAC,mBAAmB,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI;IAgCrE,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;
|
|
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,EAAsB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjH,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAGnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,UAAU,yBAAyB;IAC/B,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;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,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,CAMtE;CACJ;AAeD,qBACa,kCAAmC,YAAW,+BAA+B;IAGtF,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAGpC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAEjD,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAa;IAErE,OAAO,IAAI,IAAI;cAmBC,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3F,SAAS,CAAC,mBAAmB,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI;IAgCrE,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;CAY3F"}
|
|
@@ -120,6 +120,7 @@ let McpFrontendApplicationContribution = class McpFrontendApplicationContributio
|
|
|
120
120
|
map.set(name, {
|
|
121
121
|
name,
|
|
122
122
|
...description,
|
|
123
|
+
autostart: 'autostart' in description ? description.autostart : true,
|
|
123
124
|
env: description.env || undefined
|
|
124
125
|
});
|
|
125
126
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/mcp-frontend-application-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,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,qDAAiH;AACjH,4DAAkE;AAClE,sCAAmE;AACnE,uDAAqD;AAErD,iEAA4D;AAO3D,CAAC;AAID,CAAC;AAEF,IAAU,oBAAoB,CAQ7B;AARD,WAAU,oBAAoB;IAC1B,SAAgB,OAAO,CAAC,GAAY;QAChC,OAAO,CAAC,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;YACnC,SAAS,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;YACnD,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;YAC/F,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;YACjI,CAAC,CAAC,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IACtE,CAAC;IANe,4BAAO,UAMtB,CAAA;AACL,CAAC,EARS,oBAAoB,KAApB,oBAAoB,QAQ7B;AAED,SAAS,iBAAiB,CAAC,OAAgB;IACvC,MAAM,MAAM,GAAyB,EAAE,CAAC;IACxC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAClD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACzB,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAGM,IAAM,kCAAkC,GAAxC,MAAM,kCAAkC;IAAxC;QAWO,gBAAW,GAAsC,IAAI,GAAG,EAAE,CAAC;
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-preferences.d.ts","sourceRoot":"","sources":["../../src/browser/mcp-preferences.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-preferences.d.ts","sourceRoot":"","sources":["../../src/browser/mcp-preferences.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6DAA6D,CAAC;AAE/F,eAAO,MAAM,gBAAgB,+BAA+B,CAAC;AAE7D,eAAO,MAAM,0BAA0B,EAAE,gBAmExC,CAAC"}
|
|
@@ -16,70 +16,68 @@
|
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.McpServersPreferenceSchema = exports.MCP_SERVERS_PREF = void 0;
|
|
19
|
+
const core_1 = require("@theia/core");
|
|
19
20
|
exports.MCP_SERVERS_PREF = 'ai-features.mcp.mcpServers';
|
|
20
21
|
exports.McpServersPreferenceSchema = {
|
|
21
22
|
type: 'object',
|
|
22
23
|
properties: {
|
|
23
24
|
[exports.MCP_SERVERS_PREF]: {
|
|
24
25
|
type: 'object',
|
|
25
|
-
title: 'MCP Servers Configuration',
|
|
26
|
-
markdownDescription: 'Configure MCP servers with command, arguments, optionally environment variables, and autostart
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
26
|
+
title: core_1.nls.localize('theia/ai/mcp/servers/title', 'MCP Servers Configuration'),
|
|
27
|
+
markdownDescription: core_1.nls.localize('theia/ai/mcp/servers/mdDescription', 'Configure MCP servers with command, arguments, optionally environment variables, and autostart \
|
|
28
|
+
(true by default). Each server is identified by a unique key, such as "brave-search" or "filesystem". \
|
|
29
|
+
To start a server, use the "MCP: Start MCP Server" command, which enables you to select the desired server. \
|
|
30
|
+
To stop a server, use the "MCP: Stop MCP Server" command. \
|
|
31
|
+
Please note that autostart will only take effect after a restart, you need to start a server manually for the first time.\
|
|
32
|
+
\n\
|
|
33
|
+
Example configuration:\n\
|
|
34
|
+
```\
|
|
35
|
+
{\n\
|
|
36
|
+
"brave-search": {\n\
|
|
37
|
+
"command": "npx",\n\
|
|
38
|
+
"args": [\n\
|
|
39
|
+
"-y",\n\
|
|
40
|
+
"@modelcontextprotocol/server-brave-search"\n\
|
|
41
|
+
],\n\
|
|
42
|
+
"env": {\n\
|
|
43
|
+
"BRAVE_API_KEY": "YOUR_API_KEY"\n\
|
|
44
|
+
},\n\
|
|
45
|
+
},\n\
|
|
46
|
+
"filesystem": {\n\
|
|
47
|
+
"command": "npx",\n\
|
|
48
|
+
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/YOUR_USERNAME/Desktop"],\n\
|
|
49
|
+
"env": {\n\
|
|
50
|
+
"CUSTOM_ENV_VAR": "custom-value"\n\
|
|
51
|
+
},\n\
|
|
52
|
+
"autostart": false\n\
|
|
53
|
+
}\n\
|
|
54
|
+
}\n```'),
|
|
54
55
|
additionalProperties: {
|
|
55
56
|
type: 'object',
|
|
56
57
|
properties: {
|
|
57
58
|
command: {
|
|
58
59
|
type: 'string',
|
|
59
|
-
title: 'Command to execute the MCP server',
|
|
60
|
-
markdownDescription: 'The command used to start the MCP server, e.g., "uvx" or "npx".'
|
|
60
|
+
title: core_1.nls.localize('theia/ai/mcp/servers/command/title', 'Command to execute the MCP server'),
|
|
61
|
+
markdownDescription: core_1.nls.localize('theia/ai/mcp/servers/command/mdDescription', 'The command used to start the MCP server, e.g., "uvx" or "npx".')
|
|
61
62
|
},
|
|
62
63
|
args: {
|
|
63
64
|
type: 'array',
|
|
64
|
-
title: 'Arguments for the command',
|
|
65
|
-
markdownDescription: 'An array of arguments to pass to the command.',
|
|
66
|
-
items: {
|
|
67
|
-
type: 'string'
|
|
68
|
-
}
|
|
65
|
+
title: core_1.nls.localize('theia/ai/mcp/servers/args/title', 'Arguments for the command'),
|
|
66
|
+
markdownDescription: core_1.nls.localize('theia/ai/mcp/servers/args/mdDescription', 'An array of arguments to pass to the command.'),
|
|
69
67
|
},
|
|
70
68
|
env: {
|
|
71
69
|
type: 'object',
|
|
72
|
-
title: 'Environment variables',
|
|
73
|
-
markdownDescription: 'Optional environment variables to set for the server, such as an API key.',
|
|
70
|
+
title: core_1.nls.localize('theia/ai/mcp/servers/env/title', 'Environment variables'),
|
|
71
|
+
markdownDescription: core_1.nls.localize('theia/ai/mcp/servers/env/mdDescription', 'Optional environment variables to set for the server, such as an API key.'),
|
|
74
72
|
additionalProperties: {
|
|
75
73
|
type: 'string'
|
|
76
74
|
}
|
|
77
75
|
},
|
|
78
76
|
autostart: {
|
|
79
77
|
type: 'boolean',
|
|
80
|
-
title: 'Autostart',
|
|
81
|
-
markdownDescription: 'Automatically start this server when the frontend starts. Newly added servers are not
|
|
82
|
-
default:
|
|
78
|
+
title: core_1.nls.localize('theia/ai/mcp/servers/autostart/title', 'Autostart'),
|
|
79
|
+
markdownDescription: core_1.nls.localize('theia/ai/mcp/servers/autostart/mdDescription', 'Automatically start this server when the frontend starts. Newly added servers are not immediately auto started, but on restart'),
|
|
80
|
+
default: true
|
|
83
81
|
}
|
|
84
82
|
},
|
|
85
83
|
required: ['command', 'args']
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-preferences.js","sourceRoot":"","sources":["../../src/browser/mcp-preferences.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,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;;;
|
|
1
|
+
{"version":3,"file":"mcp-preferences.js","sourceRoot":"","sources":["../../src/browser/mcp-preferences.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,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,sCAAkC;AAGrB,QAAA,gBAAgB,GAAG,4BAA4B,CAAC;AAEhD,QAAA,0BAA0B,GAAqB;IAC1D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,CAAC,wBAAgB,CAAC,EAAE;YAClB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,4BAA4B,EAAE,2BAA2B,CAAC;YAC9E,mBAAmB,EAAE,UAAG,CAAC,QAAQ,CAAC,oCAAoC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BvE,CAAC;YACF,oBAAoB,EAAE;gBACpB,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,oCAAoC,EAAE,mCAAmC,CAAC;wBAC9F,mBAAmB,EAAE,UAAG,CAAC,QAAQ,CAAC,4CAA4C,EAAE,iEAAiE,CAAC;qBACnJ;oBACD,IAAI,EAAE;wBACJ,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,iCAAiC,EAAE,2BAA2B,CAAC;wBACnF,mBAAmB,EAAE,UAAG,CAAC,QAAQ,CAAC,yCAAyC,EAAE,+CAA+C,CAAC;qBAC9H;oBACD,GAAG,EAAE;wBACH,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,gCAAgC,EAAE,uBAAuB,CAAC;wBAC9E,mBAAmB,EAAE,UAAG,CAAC,QAAQ,CAAC,wCAAwC,EAAE,2EAA2E,CAAC;wBACxJ,oBAAoB,EAAE;4BACpB,IAAI,EAAE,QAAQ;yBACf;qBACF;oBACD,SAAS,EAAE;wBACT,IAAI,EAAE,SAAS;wBACf,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,sCAAsC,EAAE,WAAW,CAAC;wBACxE,mBAAmB,EAAE,UAAG,CAAC,QAAQ,CAAC,8CAA8C,EAC9E,gIAAgI,CAAC;wBACnI,OAAO,EAAE,IAAI;qBACd;iBACF;gBACD,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;aAC9B;SACF;KACF;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.59.0-next.62+9e43c93ad",
|
|
4
4
|
"description": "Theia - MCP Integration",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@modelcontextprotocol/sdk": "1.0.1",
|
|
7
|
-
"@theia/ai-core": "1.
|
|
8
|
-
"@theia/core": "1.
|
|
7
|
+
"@theia/ai-core": "1.59.0-next.62+9e43c93ad",
|
|
8
|
+
"@theia/core": "1.59.0-next.62+9e43c93ad"
|
|
9
9
|
},
|
|
10
10
|
"publishConfig": {
|
|
11
11
|
"access": "public"
|
|
@@ -41,10 +41,10 @@
|
|
|
41
41
|
"watch": "theiaext watch"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@theia/ext-scripts": "1.58.
|
|
44
|
+
"@theia/ext-scripts": "1.58.0"
|
|
45
45
|
},
|
|
46
46
|
"nyc": {
|
|
47
47
|
"extends": "../../configs/nyc.json"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "9e43c93ad61ea977db3974207bac5d7c1fd3ccd6"
|
|
50
50
|
}
|
|
@@ -14,18 +14,18 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
import { AICommandHandlerFactory } from '@theia/ai-core/lib/browser/ai-command-handler-factory';
|
|
17
|
-
import { CommandContribution, CommandRegistry, MessageService } from '@theia/core';
|
|
17
|
+
import { CommandContribution, CommandRegistry, MessageService, nls } from '@theia/core';
|
|
18
18
|
import { QuickInputService } from '@theia/core/lib/browser';
|
|
19
19
|
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
20
20
|
import { MCPFrontendService } from './mcp-frontend-service';
|
|
21
21
|
|
|
22
22
|
export const StartMCPServer = {
|
|
23
23
|
id: 'mcp.startserver',
|
|
24
|
-
label: 'MCP: Start MCP Server',
|
|
24
|
+
label: nls.localize('theia/ai/mcp/start/label', 'MCP: Start MCP Server'),
|
|
25
25
|
};
|
|
26
26
|
export const StopMCPServer = {
|
|
27
27
|
id: 'mcp.stopserver',
|
|
28
|
-
label: 'MCP: Stop MCP Server',
|
|
28
|
+
label: nls.localize('theia/ai/mcp/stop/label', 'MCP: Stop MCP Server'),
|
|
29
29
|
};
|
|
30
30
|
|
|
31
31
|
@injectable()
|
|
@@ -57,7 +57,7 @@ export class MCPCommandContribution implements CommandContribution {
|
|
|
57
57
|
try {
|
|
58
58
|
const startedServers = await this.mcpFrontendService.getStartedServers();
|
|
59
59
|
if (!startedServers || startedServers.length === 0) {
|
|
60
|
-
this.messageService.error('No MCP servers running.');
|
|
60
|
+
this.messageService.error(nls.localize('theia/ai/mcp/error/noRunningServers', 'No MCP servers running.'));
|
|
61
61
|
return;
|
|
62
62
|
}
|
|
63
63
|
const selection = await this.getMCPServerSelection(startedServers);
|
|
@@ -79,9 +79,9 @@ export class MCPCommandContribution implements CommandContribution {
|
|
|
79
79
|
const startableServers = servers.filter(server => !startedServers.includes(server));
|
|
80
80
|
if (!startableServers || startableServers.length === 0) {
|
|
81
81
|
if (startedServers && startedServers.length > 0) {
|
|
82
|
-
this.messageService.error('All MCP servers are already running.');
|
|
82
|
+
this.messageService.error(nls.localize('theia/ai/mcp/error/allServersRunning', 'All MCP servers are already running.'));
|
|
83
83
|
} else {
|
|
84
|
-
this.messageService.error('No MCP servers configured.');
|
|
84
|
+
this.messageService.error(nls.localize('theia/ai/mcp/error/noServersConfigured', 'No MCP servers configured.'));
|
|
85
85
|
}
|
|
86
86
|
return;
|
|
87
87
|
}
|
|
@@ -92,12 +92,13 @@ export class MCPCommandContribution implements CommandContribution {
|
|
|
92
92
|
}
|
|
93
93
|
await this.mcpFrontendService.startServer(selection);
|
|
94
94
|
const { tools } = await this.mcpFrontendService.getTools(selection);
|
|
95
|
-
const toolNames = tools.map(tool => tool.name || 'Unnamed Tool').join(', ');
|
|
95
|
+
const toolNames = tools.map(tool => tool.name || nls.localize('theia/ai/mcp/tool/unnamed', 'Unnamed Tool')).join(', ');
|
|
96
96
|
this.messageService.info(
|
|
97
|
-
|
|
97
|
+
nls.localize('theia/ai/mcp/info/serverStarted', 'MCP server "{0}" successfully started. Registered tools: {1}', selection, toolNames ||
|
|
98
|
+
nls.localize('theia/ai/mcp/tool/noTools', 'No tools available.'))
|
|
98
99
|
);
|
|
99
100
|
} catch (error) {
|
|
100
|
-
this.messageService.error('An error occurred while starting the MCP server.');
|
|
101
|
+
this.messageService.error(nls.localize('theia/ai/mcp/error/startFailed', 'An error occurred while starting the MCP server.'));
|
|
101
102
|
console.error('Error while starting MCP server:', error);
|
|
102
103
|
}
|
|
103
104
|
}
|
|
@@ -150,6 +150,7 @@ export class McpFrontendApplicationContribution implements FrontendApplicationCo
|
|
|
150
150
|
map.set(name, {
|
|
151
151
|
name,
|
|
152
152
|
...description,
|
|
153
|
+
autostart: 'autostart' in description ? description.autostart : true,
|
|
153
154
|
env: description.env || undefined
|
|
154
155
|
});
|
|
155
156
|
});
|
|
@@ -14,77 +14,76 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
+
import { nls } from '@theia/core';
|
|
17
18
|
import { PreferenceSchema } from '@theia/core/lib/browser/preferences/preference-contribution';
|
|
18
19
|
|
|
19
20
|
export const MCP_SERVERS_PREF = 'ai-features.mcp.mcpServers';
|
|
20
21
|
|
|
21
22
|
export const McpServersPreferenceSchema: PreferenceSchema = {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
type: 'object',
|
|
24
|
+
properties: {
|
|
25
|
+
[MCP_SERVERS_PREF]: {
|
|
26
|
+
type: 'object',
|
|
27
|
+
title: nls.localize('theia/ai/mcp/servers/title', 'MCP Servers Configuration'),
|
|
28
|
+
markdownDescription: nls.localize('theia/ai/mcp/servers/mdDescription', 'Configure MCP servers with command, arguments, optionally environment variables, and autostart \
|
|
29
|
+
(true by default). Each server is identified by a unique key, such as "brave-search" or "filesystem". \
|
|
30
|
+
To start a server, use the "MCP: Start MCP Server" command, which enables you to select the desired server. \
|
|
31
|
+
To stop a server, use the "MCP: Stop MCP Server" command. \
|
|
32
|
+
Please note that autostart will only take effect after a restart, you need to start a server manually for the first time.\
|
|
33
|
+
\n\
|
|
34
|
+
Example configuration:\n\
|
|
35
|
+
```\
|
|
36
|
+
{\n\
|
|
37
|
+
"brave-search": {\n\
|
|
38
|
+
"command": "npx",\n\
|
|
39
|
+
"args": [\n\
|
|
40
|
+
"-y",\n\
|
|
41
|
+
"@modelcontextprotocol/server-brave-search"\n\
|
|
42
|
+
],\n\
|
|
43
|
+
"env": {\n\
|
|
44
|
+
"BRAVE_API_KEY": "YOUR_API_KEY"\n\
|
|
45
|
+
},\n\
|
|
46
|
+
},\n\
|
|
47
|
+
"filesystem": {\n\
|
|
48
|
+
"command": "npx",\n\
|
|
49
|
+
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/YOUR_USERNAME/Desktop"],\n\
|
|
50
|
+
"env": {\n\
|
|
51
|
+
"CUSTOM_ENV_VAR": "custom-value"\n\
|
|
52
|
+
},\n\
|
|
53
|
+
"autostart": false\n\
|
|
54
|
+
}\n\
|
|
55
|
+
}\n```'),
|
|
56
|
+
additionalProperties: {
|
|
57
|
+
type: 'object',
|
|
58
|
+
properties: {
|
|
59
|
+
command: {
|
|
60
|
+
type: 'string',
|
|
61
|
+
title: nls.localize('theia/ai/mcp/servers/command/title', 'Command to execute the MCP server'),
|
|
62
|
+
markdownDescription: nls.localize('theia/ai/mcp/servers/command/mdDescription', 'The command used to start the MCP server, e.g., "uvx" or "npx".')
|
|
63
|
+
},
|
|
64
|
+
args: {
|
|
65
|
+
type: 'array',
|
|
66
|
+
title: nls.localize('theia/ai/mcp/servers/args/title', 'Arguments for the command'),
|
|
67
|
+
markdownDescription: nls.localize('theia/ai/mcp/servers/args/mdDescription', 'An array of arguments to pass to the command.'),
|
|
68
|
+
},
|
|
69
|
+
env: {
|
|
25
70
|
type: 'object',
|
|
26
|
-
title: '
|
|
27
|
-
markdownDescription: '
|
|
28
|
-
Each server is identified by a unique key, such as "brave-search" or "filesystem".\
|
|
29
|
-
To start a server, use the "MCP: Start MCP Server" command, which enables you to select the desired server.\
|
|
30
|
-
To stop a server, use the "MCP: Stop MCP Server" command.\
|
|
31
|
-
\n\
|
|
32
|
-
Example configuration:\n\
|
|
33
|
-
```\
|
|
34
|
-
{\n\
|
|
35
|
-
"brave-search": {\n\
|
|
36
|
-
"command": "npx",\n\
|
|
37
|
-
"args": [\n\
|
|
38
|
-
"-y",\n\
|
|
39
|
-
"@modelcontextprotocol/server-brave-search"\n\
|
|
40
|
-
],\n\
|
|
41
|
-
"env": {\n\
|
|
42
|
-
"BRAVE_API_KEY": "YOUR_API_KEY"\n\
|
|
43
|
-
},\n\
|
|
44
|
-
"autostart": true\n\
|
|
45
|
-
},\n\
|
|
46
|
-
"filesystem": {\n\
|
|
47
|
-
"command": "npx",\n\
|
|
48
|
-
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/YOUR_USERNAME/Desktop"],\n\
|
|
49
|
-
"env": {\n\
|
|
50
|
-
"CUSTOM_ENV_VAR": "custom-value"\n\
|
|
51
|
-
},\n\
|
|
52
|
-
"autostart": false\n\
|
|
53
|
-
}\n\
|
|
54
|
-
}\n ```',
|
|
71
|
+
title: nls.localize('theia/ai/mcp/servers/env/title', 'Environment variables'),
|
|
72
|
+
markdownDescription: nls.localize('theia/ai/mcp/servers/env/mdDescription', 'Optional environment variables to set for the server, such as an API key.'),
|
|
55
73
|
additionalProperties: {
|
|
56
|
-
|
|
57
|
-
properties: {
|
|
58
|
-
command: {
|
|
59
|
-
type: 'string',
|
|
60
|
-
title: 'Command to execute the MCP server',
|
|
61
|
-
markdownDescription: 'The command used to start the MCP server, e.g., "uvx" or "npx".'
|
|
62
|
-
},
|
|
63
|
-
args: {
|
|
64
|
-
type: 'array',
|
|
65
|
-
title: 'Arguments for the command',
|
|
66
|
-
markdownDescription: 'An array of arguments to pass to the command.',
|
|
67
|
-
items: {
|
|
68
|
-
type: 'string'
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
env: {
|
|
72
|
-
type: 'object',
|
|
73
|
-
title: 'Environment variables',
|
|
74
|
-
markdownDescription: 'Optional environment variables to set for the server, such as an API key.',
|
|
75
|
-
additionalProperties: {
|
|
76
|
-
type: 'string'
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
autostart: {
|
|
80
|
-
type: 'boolean',
|
|
81
|
-
title: 'Autostart',
|
|
82
|
-
markdownDescription: 'Automatically start this server when the frontend starts. Newly added servers are not immediatly auto stated.',
|
|
83
|
-
default: false
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
required: ['command', 'args']
|
|
74
|
+
type: 'string'
|
|
87
75
|
}
|
|
88
|
-
|
|
76
|
+
},
|
|
77
|
+
autostart: {
|
|
78
|
+
type: 'boolean',
|
|
79
|
+
title: nls.localize('theia/ai/mcp/servers/autostart/title', 'Autostart'),
|
|
80
|
+
markdownDescription: nls.localize('theia/ai/mcp/servers/autostart/mdDescription',
|
|
81
|
+
'Automatically start this server when the frontend starts. Newly added servers are not immediately auto started, but on restart'),
|
|
82
|
+
default: true
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
required: ['command', 'args']
|
|
86
|
+
}
|
|
89
87
|
}
|
|
88
|
+
}
|
|
90
89
|
};
|