MCPcopy Create free account
hub / github.com/claude-code-best/claude-code / doWork

Function doWork

src/cli/print.ts:1584–1632  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1582 // Serialize calls to prevent race conditions between concurrent callers
1583 // (background plugin install and mcp_set_servers control messages)
1584 const doWork = async (): Promise<{
1585 response: SDKControlMcpSetServersResponse
1586 sdkServersChanged: boolean
1587 }> => {
1588 const oldSdkClientNames = new Set(sdkClients.map(c => c.name))
1589
1590 const result = await handleMcpSetServers(
1591 servers,
1592 { configs: sdkMcpConfigs, clients: sdkClients, tools: sdkTools },
1593 dynamicMcpState,
1594 setAppState,
1595 )
1596
1597 // Update SDK state (need to mutate sdkMcpConfigs since it's shared)
1598 for (const key of Object.keys(sdkMcpConfigs)) {
1599 delete sdkMcpConfigs[key]
1600 }
1601 Object.assign(sdkMcpConfigs, result.newSdkState.configs)
1602 sdkClients = result.newSdkState.clients
1603 sdkTools = result.newSdkState.tools
1604 dynamicMcpState = result.newDynamicState
1605
1606 // Keep appState.mcp.tools in sync so subagents can see SDK MCP tools.
1607 // Use both old and new SDK client names to remove stale tools.
1608 if (result.sdkServersChanged) {
1609 const newSdkClientNames = new Set(sdkClients.map(c => c.name))
1610 const allSdkNames = uniq([...oldSdkClientNames, ...newSdkClientNames])
1611 setAppState(prev => ({
1612 ...prev,
1613 mcp: {
1614 ...prev.mcp,
1615 tools: [
1616 ...prev.mcp.tools.filter(
1617 t =>
1618 !allSdkNames.some(name =>
1619 t.name.startsWith(getMcpPrefix(name)),
1620 ),
1621 ),
1622 ...sdkTools,
1623 ],
1624 },
1625 }))
1626 }
1627
1628 return {
1629 response: result.response,
1630 sdkServersChanged: result.sdkServersChanged,
1631 }
1632 }
1633
1634 mcpChangesPromise = mcpChangesPromise.then(doWork, doWork)
1635 return mcpChangesPromise

Callers

nothing calls this directly

Calls 5

handleMcpSetServersFunction · 0.85
uniqFunction · 0.85
keysMethod · 0.65
setAppStateFunction · 0.50
getMcpPrefixFunction · 0.50

Tested by

no test coverage detected