#!/usr/bin/env node import path from "node:path"; import { fileURLToPath } from "node:url"; import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const repoRoot = path.resolve(__dirname, ".."); async function main() { const client = new Client({ name: "m2pack-smoke-test", version: "0.1.0", }); const transport = new StdioClientTransport({ command: "node", args: [path.join(repoRoot, "mcp_server.mjs")], cwd: repoRoot, env: { ...process.env, M2PACK_BINARY: process.env.M2PACK_BINARY || path.join(repoRoot, "build", "m2pack"), }, stderr: "inherit", }); await client.connect(transport); const tools = await client.listTools(); const binaryInfo = await client.callTool({ name: "pack_binary_info", arguments: {}, }); console.log(JSON.stringify({ ok: true, tool_count: tools.tools.length, tool_names: tools.tools.map((tool) => tool.name), binary_info: binaryInfo.structuredContent ?? null, }, null, 2)); await transport.close(); } main().catch((error) => { console.error(error); process.exit(1); });