Skip to content

Commit ebcc8fd

Browse files
author
purpleroc
committed
修复bug
1 parent 4691f9c commit ebcc8fd

File tree

4 files changed

+30
-7
lines changed

4 files changed

+30
-7
lines changed

src/components/ConfigPanel.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,36 +51,50 @@ const ConfigPanel: React.FC<ConfigPanelProps> = ({ onConfigLoad, selectedConfig,
5151
auth: authConfig // 添加认证配置
5252
};
5353

54+
console.log('[ConfigPanel] 开始连接服务器:', serverConfig);
5455
const result = await dispatch(connectToServer(serverConfig) as any).unwrap();
56+
console.log('[ConfigPanel] 连接成功,结果:', result);
5557
message.success(t.config.messages.connectSuccess);
5658

5759
// 确定最终的配置(如果服务器返回了名称且用户没有填写名称,使用服务器名称)
5860
const finalConfig = (result.serverInfo && (!values.name || values.name === 'MCP Server'))
5961
? { ...serverConfig, name: result.serverInfo.serverInfo.name }
6062
: serverConfig;
6163

64+
console.log('[ConfigPanel] 最终配置:', finalConfig);
65+
6266
// 如果服务器返回了名称且用户没有填写名称,更新表单显示
6367
if (result.serverInfo && (!values.name || values.name === 'MCP Server')) {
6468
form.setFieldsValue({ name: result.serverInfo.serverInfo.name });
6569
}
6670

6771
// 连接成功后自动保存配置
6872
if (autoSave) {
73+
console.log('[ConfigPanel] 自动保存配置,autoSave:', autoSave);
6974
const saved = storage.saveMCPConfig(finalConfig);
75+
console.log('[ConfigPanel] 配置保存结果:', saved);
7076
if (saved) {
7177
message.success(t.config.messages.configSavedAuto);
7278
// 通知刷新配置列表
7379
if (onConfigSaved) {
80+
console.log('[ConfigPanel] 通知刷新配置列表');
7481
onConfigSaved();
7582
}
83+
} else {
84+
console.error('[ConfigPanel] 配置保存失败');
85+
message.error(t.errors.saveConfigFailed);
7686
}
87+
} else {
88+
console.log('[ConfigPanel] 自动保存已禁用,autoSave:', autoSave);
7789
}
7890

7991
// 通知父组件配置已加载
8092
if (onConfigLoad) {
93+
console.log('[ConfigPanel] 通知父组件配置已加载');
8194
onConfigLoad(finalConfig);
8295
}
8396
} catch (error) {
97+
console.error('[ConfigPanel] 连接失败:', error);
8498
message.error(`${t.config.messages.connectFailed}: ${error}`);
8599
}
86100
};

src/services/mcpClient.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,7 @@ class BrowserMCPClient {
282282
const wrappedResolve = (value: any) => {
283283
clearTimeout(timeout);
284284
console.log('[BrowserMCPClient] 初始化成功,清除超时器');
285+
console.log('[BrowserMCPClient] 收到的响应值:', value);
285286

286287
// 检查响应是否是初始化响应
287288
if (value && (value.protocolVersion || value.serverInfo || value.capabilities)) {
@@ -295,6 +296,7 @@ class BrowserMCPClient {
295296
capabilities: { tools: true, resources: true, prompts: true },
296297
serverInfo: { name: 'MCP Server', version: '1.0.0' }
297298
};
299+
console.log('[BrowserMCPClient] 使用默认响应:', defaultResponse);
298300
resolve(defaultResponse);
299301
}
300302
};
@@ -352,13 +354,8 @@ class BrowserMCPClient {
352354
}
353355

354356
console.log('[BrowserMCPClient] 准备resolve Promise, ID:', message.id);
355-
// 确保返回正确的响应格式
356-
const response = {
357-
result: message.result,
358-
error: message.error,
359-
id: message.id
360-
};
361-
pending.resolve(response);
357+
// 直接返回result部分,因为wrappedResolve期望的是result
358+
pending.resolve(message.result);
362359
console.log('[BrowserMCPClient] Promise已resolve, ID:', message.id);
363360
}
364361
} else {

src/store/mcpSlice.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,9 @@ export const connectToServer = createAsyncThunk(
8282
dispatch(setPrompts([]));
8383

8484
mcpClient.configure(config);
85+
console.log('[mcpSlice] 开始连接MCP服务器,配置:', config);
8586
const serverInfo = await mcpClient.connect();
87+
console.log('[mcpSlice] MCP服务器连接成功,服务器信息:', serverInfo);
8688

8789
// 连接成功后,使用MCPClient已经预处理好的组件数据
8890
let hasAnyData = false;
@@ -454,6 +456,8 @@ const mcpSlice = createSlice({
454456
state.connectionStatus = 'connected';
455457
state.isLoading = false;
456458

459+
console.log('[mcpSlice] 连接成功,payload:', action.payload);
460+
457461
// 如果用户没有填写名称或使用默认名称,则使用服务器返回的名称
458462
let finalConfig = action.payload.config;
459463
if (action.payload.serverInfo &&
@@ -464,10 +468,13 @@ const mcpSlice = createSlice({
464468
};
465469
}
466470

471+
console.log('[mcpSlice] 最终配置:', finalConfig);
472+
467473
state.serverConfig = finalConfig;
468474
state.serverInfo = action.payload.serverInfo;
469475
// 保存服务器配置到localStorage(使用最终的配置)
470476
storage.saveServerConfig(finalConfig);
477+
console.log('[mcpSlice] 服务器配置已保存到localStorage');
471478
})
472479
.addCase(connectToServer.rejected, (state, action) => {
473480
state.connectionStatus = 'error';

src/utils/storage.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,22 @@ export const storage = {
4545
*/
4646
saveMCPConfig: (config: MCPServerConfig) => {
4747
try {
48+
console.log('[storage] 开始保存MCP配置:', config);
4849
const configs = storage.getSavedConfigs();
50+
console.log('[storage] 当前已保存的配置数量:', configs.length);
4951

5052
// 检查是否已存在相同名称的配置,如果存在则更新
5153
const existingIndex = configs.findIndex(c => c.name === config.name);
5254
if (existingIndex >= 0) {
55+
console.log('[storage] 更新已存在的配置:', config.name);
5356
configs[existingIndex] = { ...config, updatedAt: Date.now() };
5457
} else {
58+
console.log('[storage] 添加新配置:', config.name);
5559
configs.push({ ...config, createdAt: Date.now(), updatedAt: Date.now() });
5660
}
5761

5862
localStorage.setItem(STORAGE_KEYS.SAVED_CONFIGS, JSON.stringify(configs));
63+
console.log('[storage] 配置保存成功,当前配置总数:', configs.length);
5964
return true;
6065
} catch (error) {
6166
console.error('保存MCP配置失败:', error);

0 commit comments

Comments
 (0)