blob: 507e3ce442cb7b20cd824d27950bafb9a7975c92 [file]
import type { UiLocale } from '@maka/core';
import type { McpConfigFile, McpServerConfig } from '@maka/core/mcp';
import { getMcpCopy } from './locales/mcp-copy.js';
export function parseMcpImport(source: string, locale: UiLocale = 'zh'): McpConfigFile {
const copy = getMcpCopy(locale);
const value: unknown = JSON.parse(source);
if (!isRecord(value)) throw new Error(copy.errors.importObject);
if ('mcpServers' in value || 'version' in value) {
if ('version' in value && value.version !== 1) {
throw new Error(copy.errors.importVersion(String(value.version)));
}
if (!isRecord(value.mcpServers)) throw new Error(copy.errors.importServersObject);
return { version: 1, mcpServers: value.mcpServers as Record<string, McpServerConfig> };
}
return { version: 1, mcpServers: value as Record<string, McpServerConfig> };
}
function isRecord(value: unknown): value is Record<string, unknown> {
return typeof value === 'object' && value !== null && !Array.isArray(value);
}