Blender MCP

resmi

Server MCP (Model Context Protocol) ringan untuk Blender. Menyediakan antarmuka bahasa alami dengan API Python Blender, meningkatkan akses ke dokumentasi, dan memungkinkan pengguna menjelajahi serta memahami pengaturan yang kompleks.

Apa yang bisa Anda lakukan dengan Blender MCP?

  • Analisis performa adegan — Minta asisten untuk menemukan objek dengan jumlah poligon tertinggi relatif terhadap ukuran layar dari tampilan kamera.
  • Ubah nama blok data — Perbaiki kesalahan ketik atau terapkan konvensi penamaan deskriptif pada objek, lampu, kamera, tekstur, dan blok data lainnya.
  • Kueri hubungan data — Gunakan bahasa alami untuk menanyakan objek mana yang menggunakan material tertentu atau bagaimana blok data saling terhubung.
  • Debug masalah adegan — Identifikasi objek dengan jumlah poligon tertinggi, jala non-manifold, atau masalah umum lainnya dalam file yang terbuka.
  • Dokumentasi pengaturan Geometry Nodes — Hasilkan bingkai dokumentasi sebaris dan blok data teks yang menjelaskan fungsi grup node serta strukturnya.

Dokumentasi

Server MCP (Model Context Protocol) yang ringan untuk Blender. Server ini menawarkan antarmuka bahasa alami dengan API Python Blender, meningkatkan akses ke dokumentasi, dan memungkinkan pengguna untuk menjelajahi serta memahami pengaturan yang kompleks.

Untuk detail teknis dan dokumentasi tentang arsitektur, periksa kode sumbernya.

Peringatan Keamanan
Server MCP akan mengeksekusi kode yang dihasilkan LLM di Blender tanpa perlindungan apa pun untuk melindungi data Anda dari penghapusan atau pengiriman ke lokasi jarak jauh. Untuk menjaga keamanan data Anda, disarankan menggunakan mesin virtual, atau sistem tanpa akses ke informasi sensitif.

Instalasi

Blender tidak memiliki fungsionalitas bawaan untuk terhubung ke LLM.

Agar Blender dapat terhubung dengan LLM, tiga alat eksternal harus diunduh, diinstal, dan dijalankan secara manual.

Persyaratan:

  1. Blender 5.1 atau lebih baru
  2. Add-on
  3. Klien LLM
  4. Server MCP

Add-on

Untuk berinteraksi dengan sesi Blender Anda, Anda perlu menginstal add-on khusus untuk integrasi Server MCP.

Seret dan Lepas ke Blender

…atau unduh dan Instal dari Disk

Jika Anda menyeret & melepas ke Blender Anda perlu melakukannya dua kali. Pertama untuk menambahkan repositori Blender Lab, kedua untuk menginstal add-on itu sendiri. Metode ini memungkinkan Anda menerima pemberitahuan pembaruan setiap kali versi baru add-on ini tersedia.


Klien LLM

Server MCP mengikuti standar yang terdefinisi dengan baik dan kompatibel dengan berbagai klien. Silakan ikuti dokumentasi LLama.cpp, atau instal klien LLM pilihan Anda.


Server MCP

Ada berbagai cara untuk menginstal Server MCP tergantung pada kemampuan klien LLM Anda.

  • Bundel MCP: Untuk klien yang lebih baru yang mendukung file .mcpb, unduh paket terbaru dari halaman rilis. Llama.cpp belum mendukung ini.
  • Server MCP: Untuk menginstal dari kode sumber, periksa dokumentasi Llama.cpp atau petunjuk pengaturan.

Menjalankan

Setelah Anda mengatur Server MCP di dalam Klien LLM Anda, Anda dapat mulai menjelajahi adegan Blender Anda.

Antarmuka web llama.cpp yang menjalankan server blender-mcp.


Contoh 1: Analisis Adegan

MCP dapat digunakan untuk menganalisis adegan secara terprogram untuk menemukan hambatan kinerja. Ambil contoh file demo Classroom:

File demo Classroom.

Adegan ini adalah salah satu file benchmark Blender. Alasan file-file tersebut ada di benchmark adalah karena mereka merupakan representasi yang baik dari file produksi nyata yang dibuat oleh seniman. Dan tidak mengherankan jika file tersebut dapat berisi objek yang rentan untuk dioptimalkan.

Meskipun memeriksa jumlah poligon seringkali cukup, yang lebih menarik adalah memplot jumlah poligon berdasarkan seberapa besar mereka muncul di render akhir. Ini dapat diperoleh dengan prompt berikut.

Analyze the scene and list the outliers: objects with highest polygon count but smaller size from the camera point of view.

Data hasil plot menunjukkan dengan jelas dua objek yang menonjol dari yang lain: alphabet dan coat 1:

Analisis grafik jumlah poligon per area layar untuk adegan demo classroom.

Objek alphabet memiliki 20k poligon. Karena disposisinya yang datar, objek ini dapat digantikan oleh tekstur dengan sedikit kerugian pada hasil akhir. Objek coat 1 memiliki 37k poligon karena modifier Subsurf-nya. Menurunkan level subdivisi dapat meringankan adegan, jika memori adalah hambatan di sistem Anda.

Alfabet terletak di bagian belakang adegan dan dapat dengan mudah digantikan oleh tekstur. Mantel juga cukup jauh sehingga mesh-nya dapat disederhanakan.

Seberapa andal hasil tersebut?

Analisis awal yang dikembalikan oleh LLM hanya mempertimbangkan modifier yang memengaruhi viewport. Objek coat 1 memiliki modifier Solidify yang menggandakan jumlah poligonnya, menjadikannya lebih menonjol. Dan meskipun adegan ini tidak mengaktifkan Simplify, pengaturan ini juga akan memengaruhi analisis akhir.


Contoh 2: Berbagai Prompt

Ini adalah beberapa kasus penggunaan lain yang telah diuji. Anda perlu menempelkan seluruh konten "Prompt" agar berfungsi. Sebagai titik awal, Anda harus menggunakan file demo yang sesuai. Keberhasilan operasi akan bergantung pada model yang digunakan.

Kasus PenggunaanPromptFile DemoHasil
Penggantian nama data-block: perbaiki salah ketikDengan file Blender yang sedang terbuka, perbaiki nama semua data-block untuk menghilangkan salah ketik. Laporkan kembali data-block mana yang telah diperbaiki.Scattering PebblesGRP-rocks → GRP-pebble, LGT-Lights → LGT-lights, Compositing Nodetree → Compositing Node Tree
Penggantian nama data-block: nama yang lebih baikDengan file Blender yang sedang terbuka, sarankan nama deskriptif untuk semua data-block, dan terapkan jika disetujui.Scattering PebblesCamera → CAM-main, Area → LGT-sun-key, Area.001 → LGT-sun-fill, Area.002 → LGT-area-rim, GEO-pebble.001 → GEO-pebble-B, …
Menanyakan relasi data menggunakan bahasa alamiObjek mana yang menggunakan material berikut: pebblesScattering Pebbles7 objek: GEO-pebble, GEO-pebble.001, GEO-pebble.002, GEO-pebble.003, GEO-pebble.004, GEO-pebble.005, GEO-pebble.006
Debugging adeganApa objek dengan jumlah poligon tertinggi di file ini? Abaikan objek yang tidak tertaut ke adegan mana pun.Scattering PebblesGEO-ground dengan 4.096 wajah.
Dokumentasi Geometry NodesDengan file Blender yang sedang terbuka, jelaskan apa yang dilakukan pengaturan geometry nodes utama. Tambahkan dokumentasi inline untuk itu dengan elemen bingkai. Buat data-block Teks dengan hasil analisis.Scattering Pebbles4 bingkai berkode warna utama + file teks dengan penjelasan.

Prompt lain yang belum dieksplorasi:

  • Terjemahkan semua data-block dari Bahasa Prancis ke Bahasa Inggris.
  • Mesh saya tidak terdeformasi oleh armature saya, bagaimana cara memperbaikinya?
  • Blender kehabisan memori saat merender adegan ini, bagaimana cara mengoptimalkannya?
  • Mesh ini memiliki artefak shading yang aneh, bagaimana cara memperbaikinya?
  • Temukan objek yang memiliki mesh dengan normal yang buruk.
  • Periksa adegan saya untuk objek mesh yang ditransformasi secara tidak seragam.
  • Video yang saya ekspor tidak dapat diputar di browser web saya, pengaturan mana yang harus saya ubah?
  • Kuas sculpt mana yang harus saya gunakan untuk membuat dan mendetailkan cabang pohon?
  • Atur node compositing untuk menyimpan gambar saya baik sebagai SDR maupun HDR.
  • Verifikasi daftar periksa ini:: mesh harus manifold, semua objek harus memiliki material, penamaan harus mengikuti konvensi, tidak ada jalur absolut, … Penggantian nama data-block: perbaiki salah ketik

GRP-rocksGRP-pebbles (adegan hanya berisi objek pebble, bukan rocks).

LGT-LightsLGT-lights (kapitalisasi tidak konsisten).

Compositing NodetreeCompositing Node Tree (Nodetree adalah kesalahan kata majemuk).

Penggantian nama data-block: nama yang lebih baik

Objek:

  • CameraCAM-main
  • AreaLGT-sun-key
  • Area.001LGT-sun-fill
  • Area.002LGT-area-rim
  • GEO-pebble.001GEO-pebble-B
  • GEO-pebble.002GEO-pebble-C
  • GEO-pebble.003GEO-pebble-D
  • GEO-pebble.004GEO-pebble-E
  • GEO-pebble.005GEO-pebble-F
  • GEO-pebble.006GEO-pebble-G

Data-Blok Cahaya:

  • AreaLGT-sun-key
  • Area.001LGT-sun-fill
  • Area.002LGT-area-rim

Data-Blok Kamera:

  • CameraCAM-main

Tekstur:

  • TextureTEX-ground-clouds
  • Texture.001TEX-ground-image

Adegan & Dunia:

  • WorldWLD-environment
  • SceneSCN-main Dokumentasi Geometry Nodes

Bingkai Baru dibuat:

Bingkai dokumentasi ditambahkan ke pengaturan geometry nodes.

Data-Blok Teks:

GEOMETRY NODES ANALYSIS -- "Pebble Scattering Nodes"
Applied to object: GEO-ground   |   Modifier: Pebbles
========================================================

OVERVIEW
--------
This node group scatters three size categories of pebble meshes across
the faces of a ground mesh.  Each category uses its own density mask
and a global Factor multiplier so that coverage can be art-directed
per-layer without touching the raw mask textures.  The three resulting
instance layers are merged with the original ground geometry and sent
to the Group Output.

INPUTS (Group Interface)
------------------------
  Geometry           -- The ground mesh to scatter pebbles on.
  Large Pebbles Mask -- Float mask (e.g. vertex colour / texture) that
                       defines WHERE large pebbles may appear.
  Medium Pebbles Mask-- Float mask for medium pebble placement regions.
  Small Pebbles Mask -- Float mask for small pebble placement regions.
  Factor             -- Global density multiplier shared by all three
                       lanes (appears three times in the interface,
                       one per lane).

NODE GRAPH -- LANE BY LANE
--------------------------

+- LARGE PEBBLES LANE -----------------------------------------------------+
|  Source object : GEO-pebble                                              |
|  Group Input.001                                                         |
|    +- Geometry ------------------------> Distribute Points on Faces      |
|    +- Large Pebbles Mask ------------> Distribute Points on Faces        |
|    |                                     (Density Factor socket)         |
|    +- Factor --> Math.003 (x)  -------> Distribute Points on Faces       |
|                                          (Density Max socket)            |
|  Distribute Points on Faces ----------> Instance on Points               |
|  Object Info (GEO-pebble) -----------> Instance on Points (Instance)     |
|  Random Rotation.001 [-pi, +pi] -----> Instance on Points (Rotation)     |
|  Random Value [0.25 - 0.60]   -------> Instance on Points (Scale)        |
|  Instance on Points ------------------> Join Geometry.003                |
+--------------------------------------------------------------------------+

+- MEDIUM PEBBLES LANE ----------------------------------------------------+
|  Source object : GEO-pebble.004                                          |
|  Group Input.002                                                         |
|    +- Geometry ------------------------> Distribute Points on Faces.001  |
|    +- Medium Pebbles Mask -----------> Math.004 (x) --> Math.005 (x)     |
|    +- Factor ------------------------> Math.005 (x)                      |
|         Math.005 output --------------> Distribute Points on Faces.001   |
|                                          (Density socket)                |
|  Distribute Points on Faces.001 -----> Instance on Points.001            |
|  Object Info.001 (GEO-pebble.004) --> Instance on Points.001             |
|  Random Rotation.002 [-pi, +pi]  ----> Instance on Points.001            |
|  Random Value.002 [0.25 - 0.45] -----> Instance on Points.001            |
|  Instance on Points.001 -------------> Join Geometry.003                 |
+--------------------------------------------------------------------------+

+- SMALL PEBBLES LANE -----------------------------------------------------+
|  Source object : GEO-pebble.002                                          |
|  Group Input.003                                                         |
|    +- Geometry ------------------------> Distribute Points on Faces.002  |
|    +- Small Pebbles Mask -----------> Math.006 (x) --> Math.007 (x)      |
|    +- Factor ------------------------> Math.006 (x)                      |
|         Math.007 output --------------> Distribute Points on Faces.002   |
|                                          (Density socket)                |
|  Distribute Points on Faces.002 -----> Instance on Points.002            |
|  Object Info.002 (GEO-pebble.002) --> Instance on Points.002             |
|  Random Rotation [-pi, +pi]      ----> Instance on Points.002            |
|  Random Value.003 [0.10 - 0.35] -----> Instance on Points.002            |
|  Instance on Points.002 -------------> Join Geometry.003                 |
+--------------------------------------------------------------------------+

+- MERGE & OUTPUT ---------------------------------------------------------+
|  Group Input.004                                                         |
|    +- Geometry (pass-through) --------> Join Geometry.003                |
|  Join Geometry.003                                                       |
|    (inputs: large instances + medium instances +                         |
|             small instances  + original ground geo)                      |
|    +- Geometry -----------------------> Group Output                     |
+--------------------------------------------------------------------------+

SCALE RANGES (uniform, per lane)
---------------------------------
  Large  pebbles : 0.25 - 0.60
  Medium pebbles : 0.25 - 0.45
  Small  pebbles : 0.10 - 0.35

ROTATION (all lanes)
---------------------
  All three axes randomised independently over [-pi, +pi],
  giving each pebble instance a fully random orientation.

DENSITY CONTROL PATTERN (Medium & Small lanes)
-----------------------------------------------
  The mask value and the Factor are first multiplied together
  (Math.004 / Math.006), then that product is multiplied again
  by a second value (Math.005 / Math.007) before being fed into
  the Density socket.  This two-stage multiply gives a non-linear
  response curve, making the density fall off more aggressively
  near the mask edges.

  The Large lane uses a different (single-stage) approach:
  the Density Factor socket receives the mask directly, and the
  Factor is only used to scale Density Max via Math.003.

NOTES & SUGGESTIONS
--------------------
  * The node group has no Seed input exposed; adding one would allow
    re-randomising all three layers simultaneously without touching
    individual nodes.
  * The Factor input currently appears three times (once per lane).
    Merging them into a single shared socket would simplify the
    modifier panel.
  * Consider labelling the unlabelled Math nodes (Math.003-.007)
    and Random Value nodes to aid future maintenance.