Repository navigation
Releases: abyrvalg379/mcp-socket
Release list
MCP Socket 2.6.0 — agent session log + replay
Agent session log + replay
Every bridge command is appended to a per-session JSONL file in %TEMP%/mcp_socket/sessions/ — a 10 s idle gap starts a new file (the same session boundary the undo checkpoint uses), the last 30 files are kept. Answers what did the agent do, step by step.
The new Agent Sessions sub-panel:
- Replay Last Session — re-runs the recorded session's mutating commands in order. Read-only queries are skipped; each step reports its own success/failure and one failure never stops the rest. Replay steps are logged back with
replay: true. - Copy Log Path — the JSONL path to the clipboard.
Redo a naming/export ritual on the next asset, audit what the agent changed, find the step that broke. Replay against the CURRENT scene is a draft, not a guarantee — modifying steps act on whatever is there now.
Idea credit: seehiong/blender-mcp-bridge (Blender Studio record/replay).
MCP Socket 2.5.0 — agent knowledge layer
Two new tools (18 total)
get_bpy_api_info — exact API facts from the running Blender instead of hallucinated docs: bpy.ops.<cat>.<op> returns real parameter names/types/defaults, bpy.types.<Type>.<member> returns a property card with enum items (e.g. ImageFormatSettings.file_format → default PNG + 16 live items). Idea credit: bpy-dev/blender-mcp runtime lookup.
get_pipeline_conventions — the user's pipeline rules from a plain conventions.json shipped with the addon: receiver rule for imports (container t=0 r=0 s=1, dimensions baked into vertices, oversize reported never rescaled), per-DCC units/naming/UV table (Blender/Maya/Houdini/Unreal), naming idempotency, preset guidance. Answered from the file only — no LLM, no network. Pattern credit: seehiong/blender-mcp-bridge design-rules tools.
Agent workflow: call these BEFORE writing execute_code with unfamiliar operators — check, don't guess.
MCP Socket 2.4.0
Offscreen render
render_offscreen renders to a file without opening the render window:
- mode
viewport— fast OpenGL render of the current 3D view (no overlays/gizmos in the output) - mode
camera— full scene-engine render (Eevee/Cycles as configured) from the scene camera; Cycles renders can be slow, bridge timeout is 180 s
Output path/format follow the file extension (png/jpg/webp/bmp/tga/exr), resolution and percent are overridable per call. scene.render settings are saved and always restored — a render via the bridge never leaks settings into the scene (Blender 5.2 media_type VIDEO quirk handled).
Also: Render sub-panel in the N-panel (offscreen button), the handler is the 16th native MCP tool of mcp_server/server.py.
Zip install (Get Extensions → Install from Disk). Updating from 2.2.x/2.3.x in place — port, protocol and preferences unchanged.
v2.3.0 — own MCP server (phase 2)
v2.3.0 — phase 2: own MCP server
The repo now ships a thin stdio MCP server (mcp_server/server.py, stdlib only, hand-rolled JSON-RPC — same proven pattern as the Maya bridge on this machine). It exposes every bridge handler as a native MCP tool with typed parameters:
ping, get_scene_info, get_object_info, get_hierarchy, get_object_data, get_material_info, get_images_report, get_console_log, clear_console_log, list_instances, list_presets, export_fbx, import_fbx, get_viewport_screenshot, execute_code
Register it in any MCP client's config:
"mcp-socket": {
"command": "python",
"args": ["<repo>/mcp_server/server.py"]
}Multi-instance: a second config entry with --port 9877 (the addon auto-offsets ports; list_instances discovers who is where). The Blender addon is unchanged — the server is a thin proxy over the same TCP protocol, and the blender-mcp wire compatibility stays.
v2.3.0 — фаза 2: собственный MCP-сервер
В репо теперь лежит тонкий stdio MCP-сервер (mcp_server/server.py, только stdlib, рукописный JSON-RPC — проверенный паттерн Maya-моста на этой машине). Он превращает каждый хендлер моста в нативный MCP-тул с типизированными параметрами (список выше). Регистрация в конфиге любого MCP-клиента — JSON выше. Мульти-инстанс: вторая запись с --port 9877. Аддон не изменился — сервер тонкий прокси над тем же TCP-протоколом, blender-mcp-совместимость сохранена.
v2.2.0 — pipeline FBX export/import (PROKLADKA rules)
v2.2.0 — pipeline FBX export/import (PROKLADKA rules)
New handler-layer commands (via any client's code-execution hatch: from bl_ext.user_default.mcp_socket import pipeline):
export_fbx(path, preset="maya", scope="selected", overrides={})— neutral FBX per the PROKLADKA philosophy: meters, Y-up, binary, modifiers baked. Presets:maya/houdini/ue/neutral(same FBX settings by design — receivers adapt; per-DCC receiver contracts documented in the report). Children of selected Empties are included automatically (children_recursive). Per-calloverridesmerge over the preset and are echoed in the report — every deviation is explicit. Unknown override keys are rejected.import_fbx(path, container=True)— the receiver rule: the asset lands in a container EMPTY with t=0 r=0 s=1 at the world origin; dimensions live in the geometry, no compensating transforms. Oversized meshes (>50 m) are REPORTED, never rescaled — no magic multipliers.list_presets()— all presets with resolved settings and receiver notes.
Roundtrip verified live: loc/rot/scale survive exactly.
Panel: new Pipeline sub-panel — Export FBX / Import FBX buttons (file browser, preset picker). Panel header now reads MCP Socket X.Y.Z (dropped the redundant "Bridge").
v2.2.0 — пайплайн FBX экспорт/импорт (правила PROKLADKA)
Новые команды (через code-execution лаз: from bl_ext.user_default.mcp_socket import pipeline):
export_fbx(path, preset="maya", scope="selected", overrides={})— нейтральный FBX по философии PROKLADKA: метры, Y-up, binary, модификаторы запечены. Пресеты:maya/houdini/ue/neutral(настройки одинаковые намеренно — адаптируется приёмник; контракты приёмников задокументированы в отчёте). Дети выделенных Empty включаются автоматически. Переопределения на вызове сливаются с пресетом и эхом отражаются в отчёте; неизвестные ключи отклоняются.import_fbx(path, container=True)— правило приёмника: ассет в контейнер EMPTY с t=0 r=0 s=1 в мировом нуле; габариты живут в геометрии, компенсирующих трансформов нет. Переразмерные меши (>50 м) — в отчёт, без авто-рескала.list_presets()— все пресеты с настройками и контрактами приёмников.
Раундтрип проверен вживую: loc/rot/scale сохраняются точно.
Панель: суб-панель Pipeline с кнопками Export FBX / Import FBX; шапка панели — MCP Socket X.Y.Z.
v2.1.0 — Undo Agent Work
v2.1.0 — Undo Agent Work
The panel gains an Undo Agent Work button. Script-level changes made through the bridge are invisible to Blender's undo stack, so the bridge now drops an undo checkpoint (memfile snapshot) before the first execute_code command of each agent session — a code command arriving after a 10 s idle gap. One click on the button (or one Ctrl+Z) then rolls back everything the agent changed in that session. Read-only queries never trigger checkpoints. Toggle: Preferences → "Undo checkpoint per agent session" (disable on huge scenes if the snapshot push is slow).
Also fixed: the console ring buffer could silently die after an addon reinstall performed through the bridge itself (redirect_stdout restores the stale stdout tee captured at exec start). The heartbeat now self-heals the tees every ~10 s — same watchdog pattern as the TOCHKA keymap sentinel.
v2.1.0 — кнопка Undo Agent Work
Скриптовые изменения через мост невидимы для undo-стека Blender, поэтому мост ставит undo-чекпоинт (memfile-снимок) перед первой командой execute_code каждой агентской сессии — командой кода после паузы 10 с. Один клик по кнопке (или один Ctrl+Z) откатывает всё, что агент изменил за сессию. Запросы только на чтение чекпоинты не создают. Переключатель: Preferences → "Undo checkpoint per agent session" (на огромных сценах можно отключить).
Также исправлено: лог-кольцо могло молча умирать после переустановки аддона через сам мост (redirect_stdout восстанавливал устаревший stdout-tee). Хартбит теперь самолечит tee каждые ~10 с — тот же паттерн сторожа, что у keymap-сентинела TOCHKA.
v2.0.0 — MCP Socket
v2.0.0 — renamed to MCP Socket
The bridge was never ZCode-specific: any blender-mcp 1.6.x-compatible client can talk to it. The product now carries a neutral name.
Migration: uninstall the old "ZCode MCP" extension, then install this one. Port (9876), wire protocol and all commands are unchanged — no client config changes needed.
- module id
mcp_socket, N-panel MCP Socket, repoabyrvalg379/mcp-socket - everything from 1.3.0 included (extension commands, console ring buffer, multi-instance)
v2.0.0 — переименование в MCP Socket
Мост никогда не был привязан только к ZCode: с ним работает любой клиент, совместимый с blender-mcp 1.6.x. Продукт получил нейтральное имя.
Миграция: удалите старое расширение "ZCode MCP", установите это. Порт (9876), протокол и все команды не изменились — конфиг клиента править не нужно.
- id расширения
mcp_socket, N-панель MCP Socket, репоabyrvalg379/mcp-socket - всё из 1.3.0 на месте (расширенные команды, лог-кольцо, мульти-инстанс)
v1.3.0 — bridge extension commands, multi-instance
v1.3.0 — bridge extension commands, multi-instance
New handler-layer commands (reachable from any client via its code-execution escape hatch: from bl_ext.user_default.zcode_mcp import handlers; handlers.HANDLERS["get_console_log"](...)):
get_console_log/clear_console_log— ring buffer (500 lines) of Python-level console output: addon prints, tracebacks, logging. C-level console (register warnings, operator reports) is not visible to Python.get_bridge_info— one-call identity card: bridge/Blender versions, pid, scene, filepath, counts, actual port.get_hierarchy— collection tree with objects and visibility flags.get_object_data— full read-only object dossier (modifiers, constraints, material slots, mesh stats, custom props, action).get_material_info— nodes summary, image textures with colorspace and on-disk state.get_images_report— all images: paths, colorspace, packed, missing files.list_instances— live bridge instances on this machine (multi-instance discovery).
Multi-instance: if the preferred port is busy, the bridge binds the next port (9877, 9878, ...) and registers itself in %TEMP%/zcode_mcp_instances/pid_<pid>.json with a heartbeat — a second Blender instance runs its own bridge side by side with the first.
Panel: version in the header, new collapsed "Console Log" sub-panel (last lines + Save to File + Clear). Port shows the actual bound port.
v1.3.0 — расширенные команды, мульти-инстанс
Новые команды слоя хендлеров (доступны любому клиенту через code-execution лаз: from bl_ext.user_default.zcode_mcp import handlers; handlers.HANDLERS["get_console_log"](...)): лог-кольцо консоли (500 строк Python-вывода), визитка инстанса, дерево коллекций, полная карточка объекта, информация по материалам, отчёт по изображениям (пути/колорспейс/пропавшие), список живых инстансов.
Мульти-инстанс: занятый порт — мост берёт следующий (9877...) и регистрируется в %TEMP%/zcode_mcp_instances/ с хартбитом; второй Blender живёт со своим мостом параллельно.
Панель: версия в шапке, свёрнутая суб-панель Console Log (строки + Save to File + Clear), фактический порт.
v1.2.2 — round status icons restored
v1.2.2 — round status icons restored
The bridge always printed icon register failed (falling back) on startup: bpy.utils.previews is a lazy submodule — attribute access fails until something executes import bpy.utils.previews. Other addons used to import it first, masking the bug; on a clean environment nothing does. The explicit import is the whole fix — the generated green/red circle status icons work again.
No other changes.
v1.2.2 — круглые статус-иконки возвращены
Мост печатал icon register failed (falling back) при каждом старте: bpy.utils.previews — ленивый подмодуль, атрибут не существует, пока кто-то не выполнит import bpy.utils.previews. Раньше его импортировали другие аддоны раньше моста, маскируя баг; на чистой среде — никто. Фикс — явный импорт, зелёный/красный круг-статус снова на месте.
Больше никаких изменений.
v1.2.1 — manifest fix for Blender 5.2.2
v1.2.1 — manifest fix for Blender 5.2.2
The v1.2.0 zip fails to install on Blender 5.2.2: the strict manifest parser rejects the TOML table ("website" must be a str). v1.2.1 fixes the manifest (flat website string). No functional code changes.
Установка: Get Extensions → ▼ → Install from Disk → выберите zip.
Установка: GitHub → Releases → Download ZIP
v1.2.1 — фикс манифеста для Blender 5.2.2
Зип v1.2.0 не ставится на Blender 5.2.2 (строгий парсер манифеста: "website" must be a str). В v1.2.1 манифест исправлен (website плоской строкой). Код не менялся.
Установка: Get Extensions → ▼ → Install from Disk → выберите zip.