#!/usr/bin/env node // Live smoke test: spawn the built server over stdio, list tools, call get_bars against the real API. // Usage: node scripts/live-smoke.mjs (requires `npm run build`; respects HFMD_API_KEY / HFMD_BASE_URL) import { Client } from '@modelcontextprotocol/sdk/client/index.js'; import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js'; import { fileURLToPath } from 'node:url'; import path from 'node:path'; const here = path.dirname(fileURLToPath(import.meta.url)); const transport = new StdioClientTransport({ command: process.execPath, args: [path.join(here, '..', 'dist', 'index.js')], env: { ...process.env } }); const client = new Client({ name: 'live-smoke', version: '1.0.0' }); await client.connect(transport); const tools = await client.listTools(); console.log(`tools: ${tools.tools.length} → ${tools.tools.map((t) => t.name).join(', ')}`); const t0 = Date.now(); const res = await client.callTool({ name: 'get_bars', arguments: { asset: 'stock', symbol: 'AAPL', timeframe: '1day', start: '2025-01-02', end: '2025-01-10' } }); console.log(`get_bars AAPL (${Date.now() - t0} ms, isError=${!!res.isError}):`); console.log(res.content[0].text.slice(0, 700)); const status = await client.readResource({ uri: 'hfmarketdata://limits' }); console.log(status.contents[0].text.slice(0, 300)); await client.close();