FigmaMind MCP Server
by joao-loker
Verified
# FigmaMind
Aplicação que extrai componentes e padrões do Figma usando a API oficial, com implementação do Model Calling Protocol (MCP).
## Sobre o projeto
FigmaMind é uma ferramenta que analisa designs do Figma e os transforma em representações JSON padronizadas. Identifica componentes como botões, campos de entrada, cabeçalhos e mais, extraindo suas propriedades e relações.
A aplicação expõe dois tipos de APIs:
- **REST API**: Para uso tradicional via HTTP
- **MCP (Model Calling Protocol)**: Para integração com LLMs e outros sistemas compatíveis com MCP
## Características principais
- Extração de componentes do Figma via API oficial
- Identificação automática de tipos de componentes (botões, inputs, headers, etc.)
- Normalização de posicionamento e propriedades
- Extração de assets (imagens e ícones)
- Implementação do Model Calling Protocol (MCP)
- Totalmente escrito em TypeScript
## Requisitos
- Node.js 18.0.0 ou superior
- Token de API do Figma
## Instalação
1. Clone o repositório:
```bash
git clone https://github.com/seu-usuario/figmamind.git
cd figmamind
```
2. Instale as dependências:
```bash
npm install
```
3. Crie um arquivo `.env` na raiz do projeto com seu token do Figma:
```
FIGMA_TOKEN=seu_token_aqui
PORT=3000
```
4. Compile o projeto:
```bash
npm run build
```
## Uso
### Iniciar o servidor
```bash
npm start
```
Para desenvolvimento com recarregamento automático:
```bash
npm run dev
```
### Exemplos de uso
#### Via REST API
Transformar um design do Figma:
```bash
curl -X POST -H "Content-Type: application/json" \
--data '{"figmaUrl": "https://www.figma.com/file/FILE_KEY/FILE_NAME?node-id=NODE_ID"}' \
http://localhost:3000/api/transform
```
#### Via MCP
Listar ferramentas disponíveis:
```bash
curl -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc": "2.0", "method": "tools.list", "id": 1}' \
http://localhost:3000/tools/list
```
Executar uma ferramenta:
```bash
curl -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc": "2.0", "method": "run", "id": 2, "params": {"name": "figmamind.transform", "arguments": {"figmaUrl": "https://www.figma.com/file/FILE_KEY/FILE_NAME?node-id=NODE_ID"}}}' \
http://localhost:3000/run
```
## Estrutura do projeto
```
figmamind/
├── docs/ # Documentação detalhada
├── examples/ # Exemplos de uso
│ ├── input/ # Dados de exemplo para entrada
│ └── output/ # Dados de exemplo de saída
├── src/ # Código-fonte
│ ├── mcp/ # Implementação do MCP
│ ├── processor/ # Processamento de componentes
│ ├── services/ # Serviços (Figma API)
│ ├── transformers/ # Transformadores específicos
│ ├── types/ # Definições de tipos TypeScript
│ └── utils/ # Utilitários
├── tests/ # Testes automatizados
└── scripts/ # Scripts utilitários
```
## Testes
Execute os testes automatizados:
```bash
# Teste da transformação do Figma
npm run test:transform
# Teste dos endpoints MCP
npm run test:mcp
# Teste da API REST de transformação
npm run test:api
# Executa o teste principal
npm test
```
## Documentação
Consulte a pasta `docs/` para documentação detalhada sobre:
- [Transformação de componentes](./docs/component-types.md)
- [Limitações da API do Figma](./docs/figma-api-limitations.md)
- [Extração de assets](./docs/assets-extraction.md)
- [Detalhes técnicos](./docs/technical-details.md)
- [Segurança](./docs/security.md)
## Conversão para TypeScript
Este projeto foi convertido de JavaScript para TypeScript para melhorar a tipagem, robustez do código e manutenção. A conversão incluiu:
- Adição de interfaces e tipos para todas as estruturas de dados
- Conversão de todos os arquivos `.js` para `.ts`
- Implementação de tipagem forte para parâmetros e retornos de funções
- Criação de testes automatizados com TypeScript
## Licença
MIT
---
Desenvolvido por João Pereira