50
* enriched from the SDK's `mcpServerStatus()` by the projector.
51
*/
53
>
workingDirectory: URI | undefined,
54
>
userHome: URI,
55
>
fileService: IFileService,
56
>
): Promise<readonly McpServerCustomization[]> {
57
>
const seen = new Set<string>();
58
>
const result: McpServerCustomization[] = [];
59
>
for (const uri of claudeMcpFiles(workingDirectory, userHome)) {
60
>
const raw = await readJsonFile(uri, fileService);
61
>
const servers = extractMcpServerMap(uri, raw);
62
>
if (!servers) {
63
>
continue;
64
>
}
65
for (const [name, config] of Object.entries(servers)) {
66
if (!config || typeof config !== 'object' || Array.isArray(config) || seen.has(name)) {