writeServerRecord
uses node:fs
Write a server's record whole (to a file beside it, then renamed over it): a server reading the records as it's written never sees half of one.
import { serverRecord } from "#codebase/tcmts/cli/mcp"; import type { McpServer } from "#codebase/tcmts/cli/mcp"; import { randomBytes } from "node:crypto"; import fs from "node:fs"; import path from "node:path"; export function writeServerRecord(root: string, server: McpServer) { const file = serverRecord(root, server.pid); fs.mkdirSync(path.dirname(file), { recursive: true }); const part = `${file}.${randomBytes(4).toString("hex")}.part`; fs.writeFileSync(part, JSON.stringify(server)); fs.renameSync(part, file); }