Add MCP smoke test client
This commit is contained in:
50
scripts/mcp_smoke_test.mjs
Normal file
50
scripts/mcp_smoke_test.mjs
Normal file
@@ -0,0 +1,50 @@
|
||||
#!/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);
|
||||
});
|
||||
Reference in New Issue
Block a user