Files
gh-ulasbilgen-mcp-skills-pl…/skills/mcp-figma-desktop/scripts/get_figjam.js
2025-11-30 09:03:47 +08:00

48 lines
2.8 KiB
JavaScript
Executable File

#!/usr/bin/env node
/**
* MCP Server: figma-desktop
* Server Version: 1.0.0
* Generated: 2025-11-23
* Tool: get_figjam
*
* Generate UI code for a given FigJam node or the currently selected FigJam node in the Figma desktop app. Use the nodeId parameter to specify a node id. If no node id is provided, the currently selected node will be used. If a URL is provided, extract the node id from the URL, for example, if given the URL https://figma.com/board/:fileKey/:fileName?node-id=1-2, the extracted nodeId would be `1:2`. IMPORTANT: This tool only works for FigJam files, not other Figma files.
*/
import { program } from 'commander';
import { callTool } from './mcp_client.js';
program
.name('get_figjam')
.description('Generate UI code for a given FigJam node or the currently selected FigJam node in the Figma desktop app. Use the nodeId parameter to specify a node id. If no node id is provided, the currently selected node will be used. If a URL is provided, extract the node id from the URL, for example, if given the URL https://figma.com/board/:fileKey/:fileName?node-id=1-2, the extracted nodeId would be `1:2`. IMPORTANT: This tool only works for FigJam files, not other Figma files.')
.option('--nodeId <value>', 'The ID of the node in the Figma document, eg. \"123:456\" or \"123-456\". This should be a valid node ID in the Figma document.')
.option('--clientLanguages <value>', 'A comma separated list of programming languages used by the client in the current context in string form, e.g. `javascript`, `html,css,typescript`, etc. If you do not know, please list `unknown`. This is used for logging purposes to understand which languages are being used. If you are unsure, it is better to list `unknown` than to make a guess.')
.option('--clientFrameworks <value>', 'A comma separated list of frameworks used by the client in the current context, e.g. `react`, `vue`, `django` etc. If you do not know, please list `unknown`. This is used for logging purposes to understand which frameworks are being used. If you are unsure, it is better to list `unknown` than to make a guess')
.option('--includeImagesOfNodes', 'Whether to include images of nodes in the response')
.parse();
const options = program.opts();
// Build arguments object
const args = {};
if (options.nodeId !== undefined) {
args['nodeId'] = options.nodeId;
}
if (options.clientLanguages !== undefined) {
args['clientLanguages'] = options.clientLanguages;
}
if (options.clientFrameworks !== undefined) {
args['clientFrameworks'] = options.clientFrameworks;
}
if (options.includeImagesOfNodes) {
args['includeImagesOfNodes'] = true;
}
// Call the tool
try {
const result = await callTool('figma-desktop', 'get_figjam', args);
console.log(result);
} catch (error) {
console.error('Error:', error.message);
process.exit(1);
}