Add support for MCP server instructions behind config option (#13432)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
This commit is contained in:
christine betts
2025-11-26 13:08:47 -05:00
committed by GitHub
parent 558c8ece2c
commit bc365f1eaa
9 changed files with 129 additions and 1 deletions

View File

@@ -934,4 +934,43 @@ included directory memory
expect(config.getGeminiMdFilePaths()).equals(refreshResult.filePaths);
expect(mockEventListener).toHaveBeenCalledExactlyOnceWith(refreshResult);
});
it('should include MCP instructions in user memory', async () => {
const mockConfig = {
getWorkingDir: vi.fn().mockReturnValue(cwd),
shouldLoadMemoryFromIncludeDirectories: vi.fn().mockReturnValue(false),
getDebugMode: vi.fn().mockReturnValue(false),
getFileService: vi
.fn()
.mockReturnValue(new FileDiscoveryService(projectRoot)),
getExtensionLoader: vi
.fn()
.mockReturnValue(new SimpleExtensionLoader([])),
isTrustedFolder: vi.fn().mockReturnValue(true),
getImportFormat: vi.fn().mockReturnValue('tree'),
getFileFilteringOptions: vi.fn().mockReturnValue(undefined),
getDiscoveryMaxDirs: vi.fn().mockReturnValue(200),
setUserMemory: vi.fn(),
setGeminiMdFileCount: vi.fn(),
setGeminiMdFilePaths: vi.fn(),
getMcpClientManager: vi.fn().mockReturnValue({
getMcpInstructions: vi
.fn()
.mockReturnValue(
"\n\n# Instructions for MCP Server 'extension-server'\nAlways be polite.",
),
}),
} as unknown as Config;
await refreshServerHierarchicalMemory(mockConfig);
expect(mockConfig.setUserMemory).toHaveBeenCalledWith(
expect.stringContaining(
"# Instructions for MCP Server 'extension-server'",
),
);
expect(mockConfig.setUserMemory).toHaveBeenCalledWith(
expect.stringContaining('Always be polite.'),
);
});
});

View File

@@ -569,7 +569,12 @@ export async function refreshServerHierarchicalMemory(config: Config) {
config.getFileFilteringOptions(),
config.getDiscoveryMaxDirs(),
);
config.setUserMemory(result.memoryContent);
const mcpInstructions =
config.getMcpClientManager()?.getMcpInstructions() || '';
const finalMemory = [result.memoryContent, mcpInstructions.trimStart()]
.filter(Boolean)
.join('\n\n');
config.setUserMemory(finalMemory);
config.setGeminiMdFileCount(result.fileCount);
config.setGeminiMdFilePaths(result.filePaths);
coreEvents.emit(CoreEvent.MemoryChanged, result);