Skip to content

Commit 6e2fb7c

Browse files
committed
perf(agent): parallelize MCP server discovery across multiple servers
1 parent 8fa5dca commit 6e2fb7c

File tree

1 file changed

+34
-34
lines changed

1 file changed

+34
-34
lines changed

apps/sim/executor/handlers/agent/agent-handler.ts

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -287,44 +287,44 @@ export class AgentBlockHandler implements BlockHandler {
287287
): Promise<any[]> {
288288
if (mcpServerSelections.length === 0) return []
289289

290-
const results: any[] = []
291-
292-
for (const serverSelection of mcpServerSelections) {
293-
const serverId = serverSelection.params?.serverId
294-
const serverName = serverSelection.params?.serverName
295-
const usageControl = serverSelection.usageControl || 'auto'
296-
297-
if (!serverId) {
298-
logger.error('MCP server selection missing serverId:', serverSelection)
299-
continue
300-
}
290+
const results = await Promise.all(
291+
mcpServerSelections.map(async (serverSelection) => {
292+
const serverId = serverSelection.params?.serverId
293+
const serverName = serverSelection.params?.serverName
294+
const usageControl = serverSelection.usageControl || 'auto'
295+
296+
if (!serverId) {
297+
logger.error('MCP server selection missing serverId:', serverSelection)
298+
return []
299+
}
301300

302-
try {
303-
// Discover all tools from this server
304-
const discoveredTools = await this.discoverMcpToolsForServer(ctx, serverId)
305-
306-
// Create tool definitions for each discovered tool
307-
const createdTools = await Promise.all(
308-
discoveredTools.map((mcpTool) =>
309-
this.createMcpToolFromDiscoveredServerTool(
310-
mcpTool,
311-
serverId,
312-
serverName || serverId,
313-
usageControl
301+
try {
302+
const discoveredTools = await this.discoverMcpToolsForServer(ctx, serverId)
303+
const createdTools = await Promise.all(
304+
discoveredTools.map((mcpTool) =>
305+
this.createMcpToolFromDiscoveredServerTool(
306+
mcpTool,
307+
serverId,
308+
serverName || serverId,
309+
usageControl
310+
)
314311
)
315312
)
316-
)
317-
results.push(...createdTools.filter(Boolean))
318-
319-
logger.info(
320-
`[AgentHandler] Expanded MCP server ${serverName} into ${discoveredTools.length} tools`
321-
)
322-
} catch (error) {
323-
logger.error(`[AgentHandler] Failed to process MCP server selection:`, { serverId, error })
324-
}
325-
}
313+
logger.info(
314+
`[AgentHandler] Expanded MCP server ${serverName} into ${discoveredTools.length} tools`
315+
)
316+
return createdTools.filter(Boolean)
317+
} catch (error) {
318+
logger.error(`[AgentHandler] Failed to process MCP server selection:`, {
319+
serverId,
320+
error,
321+
})
322+
return []
323+
}
324+
})
325+
)
326326

327-
return results
327+
return results.flat()
328328
}
329329

330330
/**

0 commit comments

Comments
 (0)