# Figma MCP

Два инструмента для Figma REST API: перечислить верхние фреймы файла и выкачать один кадр в PNG вместе с JSON узла. Пригодится, когда агенту нужен макет, а не скриншот из чата.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI
- Автор: scalably-io
- Лицензия: MIT · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/scalably-io/figma-mcp
- Обновлён: 2026-10-20
- HTML: https://affpapa.org/nevibecode/mcp/figma-mcp

## Что делает

Сервер даёт агенту `list_frames` и `fetch_frame`. Первый проходит по верхним узлам типа FRAME в файле Figma и отдаёт страницу, имя, node-id, размеры и метаданные файла. Второй берёт один кадр и сохраняет рядом три файла: `frame.png`, `node.json` и `fills.json` с нормализованной картой заливок-картинок.

Запись на диск умеет только `fetch_frame`, поэтому read-only помечен лишь второй инструмент. Всё складывается в подкаталог под `FIGMA_OUTPUT_ROOT` (по умолчанию `./figma-output`, создаётся при первом обращении). Без `FIGMA_TOKEN` сервер запустится и покажет список инструментов, но каждый вызов вернёт `FIGMA_NOT_CONFIGURED`.

Токен — личный, из настроек аккаунта Figma, со скоупом `file_content:read`. Ключ файла берётся из адреса: сегмент после `/design/` или `/file/`. Кадры рендерятся через image API Figma, так что очень крупный фрейм или большой `scale` упрётся в лимиты байт на JSON и PNG; тогда поможет меньший масштаб или разбиение кадра. Ссылки внутри `fills.json` временные.

## Требования
- Нужно: Node.js (команды через npx)
- Переменные окружения: `FIGMA_TOKEN`, `FIGMA_API_BASE_URL`, `FIGMA_REQUEST_TIMEOUT_MS`, `FIGMA_MAX_JSON_BYTES`, `FIGMA_MAX_FRAME_BYTES`, `FIGMA_OUTPUT_ROOT`, `FIGMA_ALLOW_HTTP_FOR_TESTS` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.
- Работает с: Figma

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env FIGMA_TOKEN=<FIGMA_TOKEN> --env FIGMA_API_BASE_URL=<FIGMA_API_BASE_URL> --env FIGMA_REQUEST_TIMEOUT_MS=<FIGMA_REQUEST_TIMEOUT_MS> --env FIGMA_MAX_JSON_BYTES=<FIGMA_MAX_JSON_BYTES> --env FIGMA_MAX_FRAME_BYTES=<FIGMA_MAX_FRAME_BYTES> --transport stdio figma-mcp -- npx -y @scalably-io/figma-mcp
```
Вместо <…> подставьте свои значения. Ещё 2 переменные окружения — в README сервера

### Codex

**Командой платформы**
```bash
codex mcp add figma-mcp --env FIGMA_TOKEN=<FIGMA_TOKEN> --env FIGMA_API_BASE_URL=<FIGMA_API_BASE_URL> --env FIGMA_REQUEST_TIMEOUT_MS=<FIGMA_REQUEST_TIMEOUT_MS> --env FIGMA_MAX_JSON_BYTES=<FIGMA_MAX_JSON_BYTES> --env FIGMA_MAX_FRAME_BYTES=<FIGMA_MAX_FRAME_BYTES> -- npx -y @scalably-io/figma-mcp
```
Вместо <…> подставьте свои значения. Ещё 2 переменные окружения — в README сервера

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "figma-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "@scalably-io/figma-mcp"
            ],
            "env": {
                "FIGMA_TOKEN": "<FIGMA_TOKEN>",
                "FIGMA_API_BASE_URL": "<FIGMA_API_BASE_URL>",
                "FIGMA_REQUEST_TIMEOUT_MS": "<FIGMA_REQUEST_TIMEOUT_MS>",
                "FIGMA_MAX_JSON_BYTES": "<FIGMA_MAX_JSON_BYTES>",
                "FIGMA_MAX_FRAME_BYTES": "<FIGMA_MAX_FRAME_BYTES>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. Ещё 2 переменные окружения — в README сервера

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "figma-mcp": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@scalably-io/figma-mcp"
            ],
            "env": {
                "FIGMA_TOKEN": "<FIGMA_TOKEN>",
                "FIGMA_API_BASE_URL": "<FIGMA_API_BASE_URL>",
                "FIGMA_REQUEST_TIMEOUT_MS": "<FIGMA_REQUEST_TIMEOUT_MS>",
                "FIGMA_MAX_JSON_BYTES": "<FIGMA_MAX_JSON_BYTES>",
                "FIGMA_MAX_FRAME_BYTES": "<FIGMA_MAX_FRAME_BYTES>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. Ещё 2 переменные окружения — в README сервера

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e FIGMA_TOKEN=<FIGMA_TOKEN> -e FIGMA_API_BASE_URL=<FIGMA_API_BASE_URL> -e FIGMA_REQUEST_TIMEOUT_MS=<FIGMA_REQUEST_TIMEOUT_MS> -e FIGMA_MAX_JSON_BYTES=<FIGMA_MAX_JSON_BYTES> -e FIGMA_MAX_FRAME_BYTES=<FIGMA_MAX_FRAME_BYTES> figma-mcp npx -y @scalably-io/figma-mcp
```
Вместо <…> подставьте свои значения. Ещё 2 переменные окружения — в README сервера

## Когда брать
- получить список фреймов файла Figma с точными node-id
- вытащить один кадр в PNG для сверки вёрстки
- отдать агенту JSON узла и карту заливок
- найти ключ файла из ссылки на макет
- ограничить размер ответа Figma API через переменные окружения

## Примеры запросов агенту
- Перечисли верхние фреймы в файле `AbC123xyz` через `list_frames`
- Скачай фрейм `12:34` из файла `AbC123xyz` через `fetch_frame` в `./figma-output`
- Покажи, какие заливки-картинки есть в `fills.json` этого кадра

## Похожие
- [Next AI Draw.io](https://affpapa.org/nevibecode/mcp/next-ai-drawio.md) — MCP-сервер · ★ 36427
- [tldraw](https://affpapa.org/nevibecode/mcp/tldraw.md) — MCP-сервер · ★ 51104
- [Figma-Context-MCP](https://affpapa.org/nevibecode/mcp/figma-context-mcp.md) — MCP-сервер · ★ 16073
- [Agent-Native Assets](https://affpapa.org/nevibecode/mcp/agent-native-assets.md) — MCP-сервер · ★ 7527
- [Remove AI Watermarks](https://affpapa.org/nevibecode/mcp/remove-ai-watermarks.md) — MCP-сервер · ★ 6144
- [Dembrandt](https://affpapa.org/nevibecode/mcp/dembrandt.md) — MCP-сервер · ★ 3851

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
