Skip to content

Commit fcee77c

Browse files
authored
fix(amazonq): fix to add filewatcher for mcp config files (aws#2295)
1 parent 41c99af commit fcee77c

File tree

3 files changed

+24
-11
lines changed

3 files changed

+24
-11
lines changed

server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,14 @@ import {
1212
Status,
1313
} from '@aws/language-server-runtimes/protocol'
1414

15-
import { getGlobalAgentConfigPath, getWorkspaceAgentConfigPaths, sanitizeName, normalizePathFromUri } from './mcpUtils'
15+
import {
16+
getGlobalAgentConfigPath,
17+
getWorkspaceAgentConfigPaths,
18+
sanitizeName,
19+
normalizePathFromUri,
20+
getWorkspaceMcpConfigPaths,
21+
getGlobalMcpConfigPath,
22+
} from './mcpUtils'
1623
import {
1724
McpPermissionType,
1825
MCPServerConfig,
@@ -1472,13 +1479,15 @@ export class McpEventHandler {
14721479
this.#features.logging.warn(`Failed to get user home directory: ${e}`)
14731480
}
14741481

1475-
// Only watch agent config files
1482+
// Watch both agent config files and MCP config files
14761483
const agentPaths = [
14771484
...getWorkspaceAgentConfigPaths(wsUris),
14781485
...(homeDir ? [getGlobalAgentConfigPath(homeDir)] : []),
14791486
]
14801487

1481-
const allPaths = [...agentPaths]
1488+
const mcpPaths = [...getWorkspaceMcpConfigPaths(wsUris), ...(homeDir ? [getGlobalMcpConfigPath(homeDir)] : [])]
1489+
1490+
const allPaths = [...agentPaths, ...mcpPaths]
14821491

14831492
this.#fileWatcher.watchPaths(allPaths, () => {
14841493
// Store the current programmatic state when the event is triggered

server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1003,7 +1003,8 @@ export class McpManager {
10031003
null, // Don't save server config to agent file for legacy servers
10041004
serverTools,
10051005
serverAllowedTools,
1006-
agentPath
1006+
agentPath,
1007+
isLegacyMcpServer
10071008
)
10081009
}
10091010

server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1010,7 +1010,8 @@ export async function saveServerSpecificAgentConfig(
10101010
serverConfig: any,
10111011
serverTools: string[],
10121012
serverAllowedTools: string[],
1013-
configPath: string
1013+
configPath: string,
1014+
isLegacyMcpServer: boolean = false
10141015
): Promise<void> {
10151016
try {
10161017
await workspace.fs.mkdir(path.dirname(configPath), { recursive: true })
@@ -1043,12 +1044,14 @@ export async function saveServerSpecificAgentConfig(
10431044
tool => tool !== serverPrefix && !tool.startsWith(`${serverPrefix}/`)
10441045
)
10451046

1046-
if (serverConfig === null) {
1047-
// Remove server entirely
1048-
delete existingConfig.mcpServers[serverName]
1049-
} else {
1050-
// Update or add server
1051-
existingConfig.mcpServers[serverName] = serverConfig
1047+
if (!isLegacyMcpServer) {
1048+
if (serverConfig === null) {
1049+
// Remove server entirely
1050+
delete existingConfig.mcpServers[serverName]
1051+
} else {
1052+
// Update or add server
1053+
existingConfig.mcpServers[serverName] = serverConfig
1054+
}
10521055
}
10531056

10541057
// Add new server tools

0 commit comments

Comments
 (0)