mcp-figma

import axios from 'axios'; import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js'; export const BASE_URL = 'https://api.figma.com/v1'; export class FigmaApi { constructor(authManager) { this.authManager = authManager; } async makeRequest(path, method = 'GET', data) { try { const token = await this.authManager.getAccessToken(); const response = await axios({ method, url: `${BASE_URL}${path}`, headers: { 'X-Figma-Token': token }, data }); return response.data; } catch (error) { if (axios.isAxiosError(error)) { const figmaError = error.response?.data; throw new McpError(ErrorCode.InternalError, `Figma API error: ${figmaError?.err ?? figmaError?.message ?? error.message}`); } throw error; } } buildQueryString(params) { const urlParams = new URLSearchParams(); Object.entries(params).forEach(([key, value]) => { if (value !== undefined) { urlParams.set(key, value.toString()); } }); const queryString = urlParams.toString(); return queryString ? `?${queryString}` : ''; } }