#!/usr/bin/env node /** * Copyright (c) 2026, Salesforce, Inc., * All rights reserved. * For full license text, see the LICENSE.txt file */ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createServer } from "./server.js"; async function main(): Promise { const server = createServer(); const transport = new StdioServerTransport(); // FR-1.7: register onclose before connect — a synchronous close during // connect() would otherwise be missed and main would hang indefinitely. const closed = new Promise((resolve) => { transport.onclose = () => resolve(); }); await server.connect(transport); await closed; } main().catch((err) => { // CRITICAL: never write to stdout — that channel is the JSON-RPC frame stream. process.stderr.write( `graphiti-mcp fatal: ${err instanceof Error ? (err.stack ?? err.message) : String(err)}\n`, ); process.exit(1); });