Skip to main content
Glama
index.ts2.69 kB
/** * @fileoverview Figma MCP Server - Model Context Protocol implementation for Figma API integration * * Provides capabilities for: * - Extracting file keys and node IDs from Figma URLs * - Fetching images of Figma frames/nodes * - Converting Figma designs to JSX/CSS pseudo-code * - Processing Figma components with semantic inference */ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import "dotenv/config"; import { logger } from "./utils/error-handling.js"; import { FigmaApiClient } from "./api/figma-client.js"; import { validateApiToken } from "./utils/validation.js"; import { createMcpServer } from "./server/mcp-server-setup.js"; /** * Initializes and starts the Figma MCP Server * @returns {Promise<void>} Promise that resolves when server setup is complete */ const main = async (): Promise<void> => { const appStartTime = Date.now(); logger.info("Starting Figma MCP Server"); // Get Figma API token from CLI argument or environment variable const args = process.argv.slice(2); const figmaApiKeyArg = args.find(arg => arg.startsWith('--figma_api_key=')); const TOKEN = figmaApiKeyArg ? figmaApiKeyArg.split('=')[1] : process.env.FIGMA_API_TOKEN; if (!TOKEN) { logger.error("Figma API token not provided. Please set FIGMA_API_TOKEN environment variable or use --figma_api_key=<token> CLI argument."); process.exit(1); } // Validate API token format const tokenValidation = validateApiToken(TOKEN); if (!tokenValidation.isValid) { logger.error("Invalid API token:", { error: tokenValidation.error }); process.exit(1); } logger.info("API token validation successful"); // Initialize Figma API client const figmaClient = new FigmaApiClient({ apiToken: TOKEN, timeout: 30000, }); logger.info("Figma API client initialized"); const server = createMcpServer(figmaClient); const transport = new StdioServerTransport(); await server.connect(transport); // server.server.sendLoggingMessage({ // level: "info", // message: "Figma MCP Server started successfully"}); const appStartupTime = Date.now() - appStartTime; logger.performance("server-startup", appStartupTime); logger.memory("server-startup"); logger.info("Figma MCP Server running on stdio", { serverName: "figma-mcp-server", version: "1.0.0", startupTime: `${appStartupTime}ms`, logLevel: logger.getLevel(), }); }; /** * Error handler for uncaught exceptions */ main().catch((error) => { logger.error("Fatal error in main():", { message: error.message, stack: error.stack, timestamp: new Date().toISOString(), }); process.exit(1); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/toddle-edu/figma-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server