smoke-mcp.mjs 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. #!/usr/bin/env node
  2. import assert from "node:assert/strict";
  3. import { dirname, resolve } from "node:path";
  4. import { fileURLToPath } from "node:url";
  5. import { Client } from "@modelcontextprotocol/sdk/client/index.js";
  6. import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
  7. const root = resolve(dirname(fileURLToPath(import.meta.url)), "..");
  8. export async function smokeMcp() {
  9. const client = new Client({ name: "fmode-image-set-smoke", version: "0.1.0" });
  10. const transport = new StdioClientTransport({
  11. command: process.execPath,
  12. args: [resolve(root, "mcp", "src", "server.mjs")],
  13. cwd: root,
  14. stderr: "pipe",
  15. });
  16. await client.connect(transport);
  17. try {
  18. const result = await client.listTools();
  19. const names = result.tools.map((tool) => tool.name);
  20. assert.ok(names.includes("fmode_image_set_run"));
  21. assert.ok(names.includes("fmode_image_set_validate"));
  22. return { status: "ok", tools: names, toolDefinitions: result.tools };
  23. } finally {
  24. await client.close();
  25. }
  26. }
  27. if (process.argv[1] && resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
  28. console.log(JSON.stringify(await smokeMcp(), null, 2));
  29. }