Use yargs array type for the allowedMcpServerNames flag instead of processing the list directly ourselves. (#3600)

This commit is contained in:
Tyler 2025-07-09 11:38:38 -07:00 committed by GitHub
parent 017a0a6c86
commit 6c12f9e0d9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 12 additions and 9 deletions

View File

@ -527,7 +527,9 @@ describe('loadCliConfig with allowed-mcp-server-names', () => {
'node',
'script.js',
'--allowed-mcp-server-names',
'server1,server3',
'server1',
'--allowed-mcp-server-names',
'server3',
];
const config = await loadCliConfig(baseSettings, [], 'test-session');
expect(config.getMcpServers()).toEqual({
@ -541,7 +543,9 @@ describe('loadCliConfig with allowed-mcp-server-names', () => {
'node',
'script.js',
'--allowed-mcp-server-names',
'server1,server4',
'server1',
'--allowed-mcp-server-names',
'server4',
];
const config = await loadCliConfig(baseSettings, [], 'test-session');
expect(config.getMcpServers()).toEqual({
@ -549,10 +553,10 @@ describe('loadCliConfig with allowed-mcp-server-names', () => {
});
});
it('should allow all MCP servers if the flag is an empty string', async () => {
it('should allow no MCP servers if the flag is provided but empty', async () => {
process.argv = ['node', 'script.js', '--allowed-mcp-server-names', ''];
const config = await loadCliConfig(baseSettings, [], 'test-session');
expect(config.getMcpServers()).toEqual(baseSettings.mcpServers);
expect(config.getMcpServers()).toEqual({});
});
});

View File

@ -50,7 +50,7 @@ interface CliArgs {
telemetryTarget: string | undefined;
telemetryOtlpEndpoint: string | undefined;
telemetryLogPrompts: boolean | undefined;
allowedMcpServerNames: string | undefined;
allowedMcpServerNames: string[] | undefined;
extensions: string[] | undefined;
listExtensions: boolean | undefined;
}
@ -152,7 +152,8 @@ async function parseArguments(): Promise<CliArgs> {
default: false,
})
.option('allowed-mcp-server-names', {
type: 'string',
type: 'array',
string: true,
description: 'Allowed MCP server names',
})
.option('extensions', {
@ -247,9 +248,7 @@ export async function loadCliConfig(
const excludeTools = mergeExcludeTools(settings, activeExtensions);
if (argv.allowedMcpServerNames) {
const allowedNames = new Set(
argv.allowedMcpServerNames.split(',').filter(Boolean),
);
const allowedNames = new Set(argv.allowedMcpServerNames.filter(Boolean));
if (allowedNames.size > 0) {
mcpServers = Object.fromEntries(
Object.entries(mcpServers).filter(([key]) => allowedNames.has(key)),