@opensumi/ide-ai-native 3.8.1-next-1741262660.0 → 3.8.1-next-1741331921.0
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/components/ChatInput.js +1 -1
- package/lib/browser/components/ChatInput.js.map +1 -1
- package/lib/browser/mcp/config/components/mcp-config.module.less +13 -0
- package/lib/browser/mcp/config/components/mcp-config.view.d.ts.map +1 -1
- package/lib/browser/mcp/config/components/mcp-config.view.js +46 -21
- package/lib/browser/mcp/config/components/mcp-config.view.js.map +1 -1
- package/lib/browser/mcp/config/components/mcp-server-form.d.ts +8 -4
- package/lib/browser/mcp/config/components/mcp-server-form.d.ts.map +1 -1
- package/lib/browser/mcp/config/components/mcp-server-form.js +113 -38
- package/lib/browser/mcp/config/components/mcp-server-form.js.map +1 -1
- package/lib/browser/mcp/config/components/mcp-server-form.module.less +24 -1
- package/lib/browser/mcp/mcp-server-proxy.service.d.ts +1 -1
- package/lib/browser/mcp/mcp-server-proxy.service.d.ts.map +1 -1
- package/lib/browser/mcp/mcp-server-proxy.service.js +1 -1
- package/lib/browser/mcp/mcp-server-proxy.service.js.map +1 -1
- package/lib/browser/types.d.ts.map +1 -1
- package/lib/browser/types.js.map +1 -1
- package/lib/common/index.d.ts +2 -0
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js.map +1 -1
- package/lib/common/mcp-server-manager.d.ts +21 -3
- package/lib/common/mcp-server-manager.d.ts.map +1 -1
- package/lib/common/mcp-server-manager.js.map +1 -1
- package/lib/common/types.d.ts +14 -1
- package/lib/common/types.d.ts.map +1 -1
- package/lib/common/types.js +7 -1
- package/lib/common/types.js.map +1 -1
- package/lib/node/mcp/sumi-mcp-server.d.ts +14 -3
- package/lib/node/mcp/sumi-mcp-server.d.ts.map +1 -1
- package/lib/node/mcp/sumi-mcp-server.js +30 -12
- package/lib/node/mcp/sumi-mcp-server.js.map +1 -1
- package/lib/node/mcp-server-manager-impl.d.ts.map +1 -1
- package/lib/node/mcp-server-manager-impl.js +22 -8
- package/lib/node/mcp-server-manager-impl.js.map +1 -1
- package/lib/node/mcp-server.sse.d.ts +192 -0
- package/lib/node/mcp-server.sse.d.ts.map +1 -0
- package/lib/node/mcp-server.sse.js +93 -0
- package/lib/node/mcp-server.sse.js.map +1 -0
- package/lib/node/{mcp-server.d.ts → mcp-server.stdio.d.ts} +2 -2
- package/lib/node/mcp-server.stdio.d.ts.map +1 -0
- package/lib/node/{mcp-server.js → mcp-server.stdio.js} +8 -6
- package/lib/node/mcp-server.stdio.js.map +1 -0
- package/package.json +24 -23
- package/src/browser/components/ChatInput.tsx +1 -1
- package/src/browser/mcp/config/components/mcp-config.module.less +13 -0
- package/src/browser/mcp/config/components/mcp-config.view.tsx +128 -91
- package/src/browser/mcp/config/components/mcp-server-form.module.less +24 -1
- package/src/browser/mcp/config/components/mcp-server-form.tsx +188 -70
- package/src/browser/mcp/mcp-server-proxy.service.ts +1 -1
- package/src/browser/types.ts +0 -1
- package/src/common/index.ts +2 -0
- package/src/common/mcp-server-manager.ts +22 -3
- package/src/common/types.ts +16 -1
- package/src/node/mcp/sumi-mcp-server.ts +31 -14
- package/src/node/mcp-server-manager-impl.ts +20 -9
- package/src/node/mcp-server.sse.ts +103 -0
- package/src/node/{mcp-server.ts → mcp-server.stdio.ts} +4 -3
- package/lib/node/mcp-server.d.ts.map +0 -1
- package/lib/node/mcp-server.js.map +0 -1
package/src/common/index.ts
CHANGED
|
@@ -137,6 +137,8 @@ export interface ISumiMCPServerBackend {
|
|
|
137
137
|
getServers(): Promise<Array<{ name: string; isStarted: boolean }>>;
|
|
138
138
|
startServer(serverName: string): Promise<void>;
|
|
139
139
|
stopServer(serverName: string): Promise<void>;
|
|
140
|
+
addOrUpdateServer(description: MCPServerDescription): void;
|
|
141
|
+
removeServer(name: string): void;
|
|
140
142
|
}
|
|
141
143
|
|
|
142
144
|
export const SumiMCPServerProxyServicePath = 'SumiMCPServerProxyServicePath';
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
2
2
|
|
|
3
|
+
import { MCP_SERVER_TYPE } from './types';
|
|
4
|
+
|
|
3
5
|
export interface IMCPServer {
|
|
4
6
|
isStarted(): boolean;
|
|
5
7
|
start(): Promise<void>;
|
|
@@ -36,7 +38,18 @@ export type MCPTool = Awaited<ReturnType<MCPServerManager['getTools']>>['tools']
|
|
|
36
38
|
|
|
37
39
|
export type MCPToolParameter = Awaited<ReturnType<MCPServerManager['getTools']>>['tools'][number]['inputSchema'];
|
|
38
40
|
|
|
39
|
-
export interface
|
|
41
|
+
export interface BaseMCPServerDescription {
|
|
42
|
+
/**
|
|
43
|
+
* The unique name of the MCP server.
|
|
44
|
+
*/
|
|
45
|
+
name: string;
|
|
46
|
+
/**
|
|
47
|
+
* Whether to enable the MCP server.
|
|
48
|
+
*/
|
|
49
|
+
enabled?: boolean;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export interface StdioMCPServerDescription extends BaseMCPServerDescription {
|
|
40
53
|
/**
|
|
41
54
|
* The unique name of the MCP server.
|
|
42
55
|
*/
|
|
@@ -56,12 +69,18 @@ export interface MCPServerDescription {
|
|
|
56
69
|
* Optional environment variables to set when starting the server.
|
|
57
70
|
*/
|
|
58
71
|
env?: { [key: string]: string };
|
|
72
|
+
}
|
|
59
73
|
|
|
74
|
+
export interface SSEMCPServerDescription extends BaseMCPServerDescription {
|
|
60
75
|
/**
|
|
61
|
-
*
|
|
76
|
+
* The host of the MCP server.
|
|
62
77
|
*/
|
|
63
|
-
|
|
78
|
+
serverHost: string;
|
|
64
79
|
}
|
|
65
80
|
|
|
81
|
+
export type MCPServerDescription =
|
|
82
|
+
| ({ type: MCP_SERVER_TYPE.STDIO } & StdioMCPServerDescription)
|
|
83
|
+
| ({ type: MCP_SERVER_TYPE.SSE } & SSEMCPServerDescription);
|
|
84
|
+
|
|
66
85
|
export const MCPServerManager = Symbol('MCPServerManager');
|
|
67
86
|
export const MCPServerManagerPath = 'ServicesMCPServerManager';
|
package/src/common/types.ts
CHANGED
|
@@ -31,7 +31,7 @@ export interface IMCPServerProxyService {
|
|
|
31
31
|
isError?: boolean;
|
|
32
32
|
}>;
|
|
33
33
|
// 获取 browser 层注册的 MCP 工具列表 (Browser tab 维度)
|
|
34
|
-
$
|
|
34
|
+
$getBuiltinMCPTools(): Promise<MCPTool[]>;
|
|
35
35
|
// 通知前端 MCP 服务注册表发生了变化
|
|
36
36
|
$updateMCPServers(): Promise<void>;
|
|
37
37
|
// 获取所有 MCP 服务器列表
|
|
@@ -42,6 +42,15 @@ export interface IMCPServerProxyService {
|
|
|
42
42
|
$stopServer(serverName: string): Promise<void>;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
+
export interface MCPServer {
|
|
46
|
+
name: string;
|
|
47
|
+
isStarted: boolean;
|
|
48
|
+
tools?: string[];
|
|
49
|
+
command?: string;
|
|
50
|
+
type?: string;
|
|
51
|
+
serverHost?: string;
|
|
52
|
+
}
|
|
53
|
+
|
|
45
54
|
export interface MCPTool {
|
|
46
55
|
name: string;
|
|
47
56
|
description: string;
|
|
@@ -49,6 +58,12 @@ export interface MCPTool {
|
|
|
49
58
|
providerName: string;
|
|
50
59
|
}
|
|
51
60
|
|
|
61
|
+
export enum MCP_SERVER_TYPE {
|
|
62
|
+
STDIO = 'stdio',
|
|
63
|
+
SSE = 'sse',
|
|
64
|
+
BUILTIN = 'builtin',
|
|
65
|
+
}
|
|
66
|
+
|
|
52
67
|
export interface CodeBlockData {
|
|
53
68
|
messageId: string;
|
|
54
69
|
toolCallId: string;
|
|
@@ -10,12 +10,14 @@ import { RPCService } from '@opensumi/ide-connection';
|
|
|
10
10
|
import { ILogger } from '@opensumi/ide-core-common';
|
|
11
11
|
import { INodeLogger } from '@opensumi/ide-core-node';
|
|
12
12
|
|
|
13
|
+
import pkg from '../../../package.json';
|
|
13
14
|
import { BUILTIN_MCP_SERVER_NAME, ISumiMCPServerBackend } from '../../common';
|
|
14
15
|
import { IMCPServer, MCPServerDescription } from '../../common/mcp-server-manager';
|
|
15
16
|
import { IToolInvocationRegistryManager, ToolInvocationRegistryManager } from '../../common/tool-invocation-registry';
|
|
16
|
-
import { IMCPServerProxyService, MCPTool } from '../../common/types';
|
|
17
|
-
import { StdioMCPServerImpl } from '../mcp-server';
|
|
17
|
+
import { IMCPServerProxyService, MCPTool, MCP_SERVER_TYPE } from '../../common/types';
|
|
18
18
|
import { MCPServerManagerImpl } from '../mcp-server-manager-impl';
|
|
19
|
+
import { SSEMCPServer } from '../mcp-server.sse';
|
|
20
|
+
import { StdioMCPServer } from '../mcp-server.stdio';
|
|
19
21
|
|
|
20
22
|
// 每个 BrowserTab 都对应了一个 SumiMCPServerBackend 实例
|
|
21
23
|
// SumiMCPServerBackend 需要做的事情:
|
|
@@ -49,12 +51,12 @@ export class SumiMCPServerBackend extends RPCService<IMCPServerProxyService> imp
|
|
|
49
51
|
this.mcpServerManager.setClientId(clientId);
|
|
50
52
|
}
|
|
51
53
|
|
|
52
|
-
async getMCPTools() {
|
|
54
|
+
async $getMCPTools() {
|
|
53
55
|
if (!this.client) {
|
|
54
56
|
throw new Error('SUMI MCP RPC Client not initialized');
|
|
55
57
|
}
|
|
56
|
-
// 获取 MCP
|
|
57
|
-
const tools = await this.client.$
|
|
58
|
+
// 获取 MCP 工具,这里的 client 为 MCPServerProxyService
|
|
59
|
+
const tools = await this.client.$getBuiltinMCPTools();
|
|
58
60
|
return tools;
|
|
59
61
|
}
|
|
60
62
|
|
|
@@ -98,7 +100,7 @@ export class SumiMCPServerBackend extends RPCService<IMCPServerProxyService> imp
|
|
|
98
100
|
this.server = new Server(
|
|
99
101
|
{
|
|
100
102
|
name: 'sumi-ide-mcp-server',
|
|
101
|
-
version:
|
|
103
|
+
version: pkg.version,
|
|
102
104
|
},
|
|
103
105
|
{
|
|
104
106
|
capabilities: {
|
|
@@ -108,8 +110,8 @@ export class SumiMCPServerBackend extends RPCService<IMCPServerProxyService> imp
|
|
|
108
110
|
);
|
|
109
111
|
|
|
110
112
|
// 设置工具列表请求处理器
|
|
111
|
-
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
112
|
-
const tools = await this
|
|
113
|
+
this.server.setRequestHandler(ListToolsRequestSchema, async (event) => {
|
|
114
|
+
const tools = await this.$getMCPTools();
|
|
113
115
|
return { tools };
|
|
114
116
|
});
|
|
115
117
|
|
|
@@ -138,6 +140,7 @@ export class SumiMCPServerBackend extends RPCService<IMCPServerProxyService> imp
|
|
|
138
140
|
if (server.isStarted()) {
|
|
139
141
|
// 只获取正在运行的 MCP Server 的工具列表
|
|
140
142
|
const toolsResponse = await server.getTools();
|
|
143
|
+
this.logger.log(`Server ${serverName} tools:`, toolsResponse.tools);
|
|
141
144
|
toolNames = toolsResponse.tools.map((tool) => tool.name);
|
|
142
145
|
}
|
|
143
146
|
|
|
@@ -146,24 +149,30 @@ export class SumiMCPServerBackend extends RPCService<IMCPServerProxyService> imp
|
|
|
146
149
|
return {
|
|
147
150
|
name: server.getServerName(),
|
|
148
151
|
isStarted: server.isStarted(),
|
|
149
|
-
type:
|
|
152
|
+
type: MCP_SERVER_TYPE.BUILTIN,
|
|
150
153
|
tools: toolNames,
|
|
151
154
|
};
|
|
152
155
|
}
|
|
153
156
|
|
|
154
157
|
// 第三方 Stdio 类型的 MCP Server
|
|
155
|
-
if (server instanceof
|
|
158
|
+
if (server instanceof StdioMCPServer) {
|
|
156
159
|
return {
|
|
157
160
|
name: server.getServerName(),
|
|
158
161
|
isStarted: server.isStarted(),
|
|
159
|
-
type:
|
|
162
|
+
type: MCP_SERVER_TYPE.STDIO,
|
|
160
163
|
command: server.command + ' ' + (server.args?.join(' ') || ''),
|
|
161
164
|
tools: toolNames,
|
|
162
165
|
};
|
|
166
|
+
} else if (server instanceof SSEMCPServer) {
|
|
167
|
+
return {
|
|
168
|
+
name: server.getServerName(),
|
|
169
|
+
isStarted: server.isStarted(),
|
|
170
|
+
type: MCP_SERVER_TYPE.SSE,
|
|
171
|
+
serverHost: server.serverHost,
|
|
172
|
+
tools: toolNames,
|
|
173
|
+
};
|
|
163
174
|
}
|
|
164
175
|
|
|
165
|
-
// TODO SSE 类型的 MCP Server
|
|
166
|
-
|
|
167
176
|
return {
|
|
168
177
|
name: server.getServerName(),
|
|
169
178
|
isStarted: server.isStarted(),
|
|
@@ -189,6 +198,14 @@ export class SumiMCPServerBackend extends RPCService<IMCPServerProxyService> imp
|
|
|
189
198
|
await this.mcpServerManager.stopServer(serverName);
|
|
190
199
|
this.client?.$updateMCPServers();
|
|
191
200
|
}
|
|
201
|
+
|
|
202
|
+
public addOrUpdateServer(description: MCPServerDescription) {
|
|
203
|
+
this.mcpServerManager.addOrUpdateServer(description);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
public removeServer(name: string) {
|
|
207
|
+
this.mcpServerManager.removeServer(name);
|
|
208
|
+
}
|
|
192
209
|
}
|
|
193
210
|
|
|
194
211
|
export const TokenBuiltinMCPServer = Symbol('TokenBuiltinMCPServer');
|
|
@@ -240,7 +257,7 @@ export class BuiltinMCPServer implements IMCPServer {
|
|
|
240
257
|
if (!this.started) {
|
|
241
258
|
throw new Error('MCP Server not started');
|
|
242
259
|
}
|
|
243
|
-
const tools = await this.sumiMCPServer
|
|
260
|
+
const tools = await this.sumiMCPServer.$getMCPTools();
|
|
244
261
|
return { tools } as any;
|
|
245
262
|
}
|
|
246
263
|
|
|
@@ -4,10 +4,12 @@ import { ILogger } from '@opensumi/ide-core-common';
|
|
|
4
4
|
|
|
5
5
|
import { IMCPServer, MCPServerDescription, MCPServerManager, MCPTool } from '../common/mcp-server-manager';
|
|
6
6
|
import { IToolInvocationRegistryManager, ToolRequest } from '../common/tool-invocation-registry';
|
|
7
|
+
import { MCP_SERVER_TYPE } from '../common/types';
|
|
7
8
|
import { getToolName } from '../common/utils';
|
|
8
9
|
|
|
9
10
|
import { BuiltinMCPServer } from './mcp/sumi-mcp-server';
|
|
10
|
-
import {
|
|
11
|
+
import { SSEMCPServer } from './mcp-server.sse';
|
|
12
|
+
import { StdioMCPServer } from './mcp-server.stdio';
|
|
11
13
|
// 这应该是 Browser Tab 维度的,每个 Tab 对应一个 MCPServerManagerImpl
|
|
12
14
|
export class MCPServerManagerImpl implements MCPServerManager {
|
|
13
15
|
protected servers: Map<string, IMCPServer> = new Map();
|
|
@@ -127,14 +129,23 @@ export class MCPServerManagerImpl implements MCPServerManager {
|
|
|
127
129
|
}
|
|
128
130
|
|
|
129
131
|
addOrUpdateServer(description: MCPServerDescription): void {
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
132
|
+
const existingServer = this.servers.get(description.name);
|
|
133
|
+
if (description.type === MCP_SERVER_TYPE.STDIO) {
|
|
134
|
+
const { name, command, args, env } = description;
|
|
135
|
+
if (existingServer) {
|
|
136
|
+
existingServer.update(command, args, env);
|
|
137
|
+
} else {
|
|
138
|
+
const newServer = new StdioMCPServer(name, command, args, env, this.logger);
|
|
139
|
+
this.servers.set(name, newServer);
|
|
140
|
+
}
|
|
141
|
+
} else if (description.type === MCP_SERVER_TYPE.SSE) {
|
|
142
|
+
const { name, serverHost } = description;
|
|
143
|
+
if (existingServer) {
|
|
144
|
+
existingServer.update(serverHost);
|
|
145
|
+
} else {
|
|
146
|
+
const newServer = new SSEMCPServer(name, serverHost, this.logger);
|
|
147
|
+
this.servers.set(name, newServer);
|
|
148
|
+
}
|
|
138
149
|
}
|
|
139
150
|
}
|
|
140
151
|
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// have to import with extension since the exports map is ./* -> ./dist/cjs/*
|
|
2
|
+
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
3
|
+
import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
|
|
4
|
+
import { EventSource } from 'eventsource';
|
|
5
|
+
|
|
6
|
+
import { ILogger } from '@opensumi/ide-core-common';
|
|
7
|
+
|
|
8
|
+
import pkg from '../../package.json';
|
|
9
|
+
import { IMCPServer } from '../common/mcp-server-manager';
|
|
10
|
+
|
|
11
|
+
global.EventSource = EventSource as any;
|
|
12
|
+
export class SSEMCPServer implements IMCPServer {
|
|
13
|
+
private name: string;
|
|
14
|
+
public serverHost: string;
|
|
15
|
+
private client: Client;
|
|
16
|
+
private started: boolean = false;
|
|
17
|
+
|
|
18
|
+
constructor(name: string, serverHost: string, private readonly logger?: ILogger) {
|
|
19
|
+
this.name = name;
|
|
20
|
+
this.serverHost = serverHost;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
isStarted(): boolean {
|
|
24
|
+
return this.started;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
getServerName(): string {
|
|
28
|
+
return this.name;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
async start(): Promise<void> {
|
|
32
|
+
if (this.started) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
this.logger?.log(`Starting server "${this.name}" with serverHost: ${this.serverHost}`);
|
|
36
|
+
|
|
37
|
+
const transport = new SSEClientTransport(new URL(this.serverHost), {
|
|
38
|
+
eventSourceInit: {},
|
|
39
|
+
});
|
|
40
|
+
transport.onerror = (error) => {
|
|
41
|
+
this.logger?.error('Transport Error:', error);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
this.client = new Client(
|
|
45
|
+
{
|
|
46
|
+
name: 'sumi-ide-sse-mcp-client',
|
|
47
|
+
version: pkg.version,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
capabilities: {},
|
|
51
|
+
},
|
|
52
|
+
);
|
|
53
|
+
this.client.onerror = (error) => {
|
|
54
|
+
this.logger?.error('Error in MCP client:', error);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
await this.client.connect(transport);
|
|
58
|
+
this.started = true;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
async callTool(toolName: string, toolCallId: string, arg_string: string) {
|
|
62
|
+
let args;
|
|
63
|
+
try {
|
|
64
|
+
args = JSON.parse(arg_string);
|
|
65
|
+
} catch (error) {
|
|
66
|
+
this.logger?.error(
|
|
67
|
+
`Failed to parse arguments for calling tool "${toolName}" in MCP server "${this.name}" with serverHost "${this.serverHost}".
|
|
68
|
+
Invalid JSON: ${arg_string}`,
|
|
69
|
+
error,
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
const params = {
|
|
73
|
+
name: toolName,
|
|
74
|
+
arguments: args,
|
|
75
|
+
toolCallId,
|
|
76
|
+
};
|
|
77
|
+
return this.client.callTool(params);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
async getTools() {
|
|
81
|
+
const tools = await this.client.listTools();
|
|
82
|
+
this.logger?.log(`Got tools from MCP server "${this.name}" with serverHost "${this.serverHost}":`, tools);
|
|
83
|
+
return tools;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
update(serverHost: string): void {
|
|
87
|
+
this.serverHost = serverHost;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
async stop(): Promise<void> {
|
|
91
|
+
if (!this.started || !this.client) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
this.logger?.log(`Stopping MCP server "${this.name}"`);
|
|
95
|
+
try {
|
|
96
|
+
await this.client.close();
|
|
97
|
+
} catch (error) {
|
|
98
|
+
this.logger?.error(`Failed to stop MCP server "${this.name}":`, error);
|
|
99
|
+
}
|
|
100
|
+
this.logger?.log(`MCP server "${this.name}" stopped`);
|
|
101
|
+
this.started = false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -4,9 +4,10 @@ import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js'
|
|
|
4
4
|
|
|
5
5
|
import { ILogger } from '@opensumi/ide-core-common';
|
|
6
6
|
|
|
7
|
+
import pkg from '../../package.json';
|
|
7
8
|
import { IMCPServer } from '../common/mcp-server-manager';
|
|
8
9
|
|
|
9
|
-
export class
|
|
10
|
+
export class StdioMCPServer implements IMCPServer {
|
|
10
11
|
private name: string;
|
|
11
12
|
public command: string;
|
|
12
13
|
public args?: string[];
|
|
@@ -64,8 +65,8 @@ export class StdioMCPServerImpl implements IMCPServer {
|
|
|
64
65
|
|
|
65
66
|
this.client = new Client(
|
|
66
67
|
{
|
|
67
|
-
name: '
|
|
68
|
-
version:
|
|
68
|
+
name: 'sumi-ide-stdio-mcp-client',
|
|
69
|
+
version: pkg.version,
|
|
69
70
|
},
|
|
70
71
|
{
|
|
71
72
|
capabilities: {},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/node/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/node/mcp-server.ts"],"names":[],"mappings":"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"}
|