| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- 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();
- }
|