testLiveMcpServers

tcmts.cli.mcp.testLiveMcpServers · #xmdqa2zw · term

A running server is seen as one; a stopped one's record is cleared. One running that can't be signalled (pid 1, here) is running all the same, and so is one whose record can't be read (named by its process).

import { liveMcpServers, serversDir } from "#codebase/tcmts/cli/mcp";
import assert from "node:assert/strict";
import fs from "node:fs";
import os from "node:os";
import path from "node:path";

export const testLiveMcpServers = () => {
  const root = fs.mkdtempSync(path.join(os.tmpdir(), "tcm mcp servers "));
  fs.mkdirSync(serversDir(root), { recursive: true });
  fs.writeFileSync(
    path.join(serversDir(root), "1.json"),
    JSON.stringify({ pid: process.pid, branch: "session/x" }),
  );
  fs.writeFileSync(path.join(serversDir(root), "2.json"), JSON.stringify({ pid: 2 ** 22 + 12345 }));
  fs.writeFileSync(
    path.join(serversDir(root), "3.json"),
    JSON.stringify({ pid: 1, branch: "session/y" }),
  );
  fs.writeFileSync(path.join(serversDir(root), `${process.pid}.json`), "{");
  // (and what isn't a record isn't one)
  fs.writeFileSync(path.join(serversDir(root), `${process.pid}.json.1234.part`), "{");
  const live = liveMcpServers(root).sort((a, b) => (a.branch ?? "").localeCompare(b.branch ?? ""));
  assert.deepEqual(live, [
    { pid: process.pid },
    { pid: process.pid, branch: "session/x" },
    { pid: 1, branch: "session/y" },
  ]);
  assert.deepEqual(
    fs.readdirSync(serversDir(root)).sort(),
    ["1.json", "3.json", `${process.pid}.json`, `${process.pid}.json.1234.part`].sort(),
  );
  fs.rmSync(root, { recursive: true, force: true });
}

uses