Этот проект представляет собой MCP-сервер (Model Context Protocol), который позволяет LLM (например, Claude) взаимодействовать с вашим дизайн-файлом в Pixso через кастомный плагин.
- MCP Server (index.js): Локальный Node.js сервер, который реализует протокол MCP через Streamable HTTP (порт 3668, эндпоинт /mcp) и запускает WebSocket-сервер (порт 3667).
- Pixso Plugin (main.js + ui.html): Плагин для Pixso, который подключается к локальному серверу через WebSocket и извлекает данные из дизайна.
get_selection: Получает данные о текущих выделенных элементах (оптимизировано для экономии токенов).get_selection_png: Экспортирует выбранные или адресованные поnodeIdsрастровые ассеты в PNG.get_selection_svg: Экспортирует выбранные или адресованные поnodeIdsвекторные ассеты в SVG.
get_selection используется как инструмент для layout/codegen. Если в ответе у ноды есть:
{
"id": "123:456",
"assetExport": {
"kind": "raster",
"preferredTool": "get_selection_png",
"availableTools": ["get_selection_png"],
"usageHint": "background",
"fit": "cover"
}
}значит LLM должен сначала использовать get_selection для структуры/layout, а затем вызвать assetExport.preferredTool с nodeIds: ["123:456"], чтобы получить сам ассет.
npm install
node server/index.jsСервер запустится на HTTP-порту 3668 (эндпоинт /mcp) для MCP и откроет WebSocket-порт 3667.
- Откройте Pixso.
- Перейдите в раздел плагинов -> Управление плагинами -> Создать новый плагин.
- Скопируйте файлы
manifest.json,main.jsиui.htmlв папку вашего плагина. - Запустите плагин в Pixso. Он должен показать статус "Connected" в своем окне.
Добавьте сервер в конфиг вашего MCP-клиента:
{
"mcpServers": {
"pixso": {
"url": "http://localhost:3668/mcp"
}
}
}Для использования скрипта подсчета токенов при запущенном сервере:
npm run count-tokensДля минимизации потребления токенов LLM используются следующие оптимизации:
- Selection-First: Основной фокус на выделенных объектах.
- Фильтрация свойств: Передаются только критически важные данные (геометрия, текст, базовые цвета).
- Округление: Все числовые значения координат и размеров округляются до 1 знака после запятой.
- Семантика: Текстовое содержимое передается в чистом виде без избыточных стилей оформления.
- Явные подсказки для ассетов:
idдобавляется только к нодам, которые стоит дополнительно экспортировать черезget_selection_png/get_selection_svg.
MIT