51 lines
1.3 KiB
JavaScript
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);
|
|
});
|