2025-10-30 16:09:19 +08:00
|
|
|
import fs from "fs";
|
|
|
|
|
import path from "path";
|
|
|
|
|
import { z } from "zod";
|
|
|
|
|
import { McpServerConfig } from "../../entities/mcp.js";
|
2025-11-05 13:28:38 +05:30
|
|
|
import { WorkDir } from "../../config/config.js";
|
2025-10-30 16:09:19 +08:00
|
|
|
|
|
|
|
|
export function mcpConfigPath(): string {
|
2025-11-05 13:28:38 +05:30
|
|
|
return path.join(WorkDir, "mcp", "servers.json");
|
2025-10-30 16:09:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function readMcpConfig(): z.infer<typeof McpServerConfig> {
|
|
|
|
|
const p = mcpConfigPath();
|
2025-11-07 11:42:10 +05:30
|
|
|
if (!fs.existsSync(p)) return { mcpServers: {} };
|
2025-10-30 16:09:19 +08:00
|
|
|
const raw = fs.readFileSync(p, "utf8");
|
|
|
|
|
return McpServerConfig.parse(JSON.parse(raw));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function writeMcpConfig(value: z.infer<typeof McpServerConfig>): void {
|
|
|
|
|
const p = mcpConfigPath();
|
|
|
|
|
const parsed = McpServerConfig.parse(value);
|
|
|
|
|
fs.writeFileSync(p, JSON.stringify(parsed, null, 2) + "\n", "utf8");
|
|
|
|
|
}
|