d48cda4081
CI / Test (ubuntu-latest, Node 18.x, bun) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, npm) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, pnpm) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, yarn) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 20.x, bun) (push) Failing after 17m13s
CI / Test (ubuntu-latest, Node 20.x, npm) (push) Failing after 18m42s
CI / Test (ubuntu-latest, Node 20.x, pnpm) (push) Failing after 15m0s
CI / Test (ubuntu-latest, Node 20.x, yarn) (push) Failing after 49m44s
CI / Test (ubuntu-latest, Node 22.x, bun) (push) Failing after 51m55s
CI / Test (ubuntu-latest, Node 22.x, pnpm) (push) Failing after 21m57s
CI / Test (ubuntu-latest, Node 22.x, npm) (push) Failing after 37m39s
CI / Test (ubuntu-latest, Node 22.x, yarn) (push) Failing after 34m7s
CI / Validate Components (push) Failing after 37m15s
CI / Python Tests (push) Failing after 10m1s
CI / Security Scan (push) Failing after 10m1s
CI / Lint (push) Failing after 17m12s
CI / Coverage (push) Failing after 20m19s
CI / Test (macos-latest, Node 18.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, yarn) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, yarn) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, yarn) (push) Has been cancelled
57 lines
1.2 KiB
JavaScript
57 lines
1.2 KiB
JavaScript
'use strict';
|
|
|
|
function parseDisabledMcpServers(value) {
|
|
return [...new Set(
|
|
String(value || '')
|
|
.split(',')
|
|
.map((entry) => entry.trim())
|
|
.filter(Boolean)
|
|
)];
|
|
}
|
|
|
|
function filterMcpConfig(config, disabledServerNames = []) {
|
|
if (!config || typeof config !== 'object' || Array.isArray(config)) {
|
|
throw new Error('MCP config must be a JSON object');
|
|
}
|
|
|
|
const servers = config.mcpServers;
|
|
if (!servers || typeof servers !== 'object' || Array.isArray(servers)) {
|
|
throw new Error('MCP config must include an mcpServers object');
|
|
}
|
|
|
|
const disabled = new Set(parseDisabledMcpServers(disabledServerNames));
|
|
if (disabled.size === 0) {
|
|
return {
|
|
config: {
|
|
...config,
|
|
mcpServers: { ...servers },
|
|
},
|
|
removed: [],
|
|
};
|
|
}
|
|
|
|
const nextServers = {};
|
|
const removed = [];
|
|
|
|
for (const [name, serverConfig] of Object.entries(servers)) {
|
|
if (disabled.has(name)) {
|
|
removed.push(name);
|
|
continue;
|
|
}
|
|
nextServers[name] = serverConfig;
|
|
}
|
|
|
|
return {
|
|
config: {
|
|
...config,
|
|
mcpServers: nextServers,
|
|
},
|
|
removed,
|
|
};
|
|
}
|
|
|
|
module.exports = {
|
|
filterMcpConfig,
|
|
parseDisabledMcpServers,
|
|
};
|