import { Client } from 'file:///C:/Users/qmj/AppData/Roaming/npm/node_modules/mcp-lanhu/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.js'; import { StdioClientTransport } from 'file:///C:/Users/qmj/AppData/Roaming/npm/node_modules/mcp-lanhu/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.js'; import { mkdir, writeFile } from 'node:fs/promises'; const projectUrl = 'https://lanhuapp.com/web/#/item/project/stage?tid=15517692-8265-47f1-9ba9-7616f57c770f&pid=498cd54f-39c7-4fcc-abf7-cb4e8fcb8f61&corpId=null'; const transport = new StdioClientTransport({ command: 'C:\\Users\\qmj\\AppData\\Roaming\\npm\\mcp-lanhu.cmd', args: [], env: process.env }); const client = new Client({ name: 'codex-lanhu-reader', version: '1.0.0' }); await client.connect(transport); try { const result = await client.callTool({ name: 'lanhu_design', arguments: { url: projectUrl, mode: 'analyze', design_names: ['1', '2', '3', '4', '5', '6', '7'], include: ['image', 'tokens', 'layout', 'layers'], layer_depth: 2 } }); const payload = result.structuredContent ?? {}; const designs = Array.isArray(payload.designs) ? payload.designs : []; const outDir = new URL('./lanhu-flash-delivery/', import.meta.url); await mkdir(outDir, { recursive: true }); const images = result.content?.filter(item => item.type === 'image') ?? []; for (let index = 0; index < images.length; index += 1) { await writeFile(new URL(`mcp-${String(index + 1).padStart(2, '0')}.png`, outDir), Buffer.from(images[index].data, 'base64')); } await writeFile(new URL('analysis.json', outDir), JSON.stringify(payload, null, 2), 'utf8'); console.log(JSON.stringify({ isError: Boolean(result.isError), projectName: payload.project_name ?? null, status: payload.status ?? null, totalDesigns: payload.total_designs ?? designs.length, imageCount: images.length, designs: designs.map(item => ({ name: item.name, status: item.status, outputs: item.outputs, layerDepth: item.layer_depth, layerTreeTruncated: item.layer_tree_truncated })) })); } finally { await client.close(); }