Files
m2pack-secure/scripts/mcp_smoke_test.mjs
2026-04-14 12:00:06 +02:00

51 lines
1.3 KiB
JavaScript

#!/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);
});