Files
forma-engine/scripts/update-reference.ts
T
2026-09-12 04:58:59 +03:00

36 lines
1.3 KiB
TypeScript

import { writeFile } from "node:fs/promises";
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js";
import { createMcp, commandReference, scriptReference } from "../server/mcp.ts";
import { ProjectStore } from "../engine/store.ts";
import { emptyProject } from "../engine/schema.ts";
// Enumerate the real registration schemas without opening ports or touching user projects.
const unavailable = async () => {
throw Error("Documentation generator cannot execute tools");
};
const server = createMcp({
store: new ProjectStore(emptyProject()),
status: () => ({}),
save: unavailable,
exportWeb: unavailable,
importModel: unavailable,
importImage: unavailable,
runtime: unavailable,
});
const client = new Client({ name: "forma-reference", version: "1" }),
[a, b] = InMemoryTransport.createLinkedPair();
try {
await server.connect(a);
await client.connect(b);
const tools = await client.listTools();
for (const [name, data] of [
["COMMANDS", commandReference],
["SCRIPT_API", scriptReference],
["MCP_TOOLS", tools],
] as const)
await writeFile(`docs/${name}.json`, JSON.stringify(data, null, 2) + "\n");
} finally {
await client.close();
await server.close();
}