PluginBench
MCP Server
Active
GPL-3.0

io.github.emircbngl/blender-optics-simulator MCP Server

io.github.emircbngl/blender-optics-simulator

Build, align, and render optical benches in Blender with real physics, controlled by AI agents over MCP.

What is the io.github.emircbngl/blender-optics-simulator MCP server?

The Blender Optics Simulator is a Blender add-on that lets you design, simulate, and render optical benches with realistic physics including ray tracing, Gaussian beams, polarization, and dispersion. It exposes the complete optical state over an MCP bridge, allowing AI agents to read measurements and adjust optics in real time rather than guessing.

Place lasers, mirrors, lenses, waveplates, gratings, crystals, and detectors in 3D. A live ray-tracing engine with Gaussian-beam and polarization support traces light through them, mounts everything on real opto-mechanical hardware, and renders in Cycles. The entire optical state is readable and writable over MCP, so an AI agent can measure the bench geometry and make informed adjustments.

How to install io.github.emircbngl/blender-optics-simulator

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • OPTICS_BRIDGE_PORT

    TCP port of the add-on's localhost bridge inside Blender (Optics > Simulation > Start MCP Bridge).

  • OPTICS_BRIDGE_HOST

    Host of the add-on bridge.

~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "blender-optics-simulator": {
      "command": "uvx",
      "args": [
        "blender-optics-mcp"
      ],
      "env": {
        "OPTICS_BRIDGE_PORT": "<YOUR_OPTICS_BRIDGE_PORT>",
        "OPTICS_BRIDGE_HOST": "<YOUR_OPTICS_BRIDGE_HOST>"
      }
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • get_state — Retrieve every element's pose, ports, mount limits, beam path, and detector readings as JSON
  • set_param — Modify optical parameters like focal length, glass type, coating, or wavelength
  • place_relative — Position optical elements relative to existing components
  • set_dof — Adjust degrees of freedom on mounts (e.g., turn kinematic-mount knobs)
  • align_element — Automatically walk mounts using influence-matrix solvers to re-centre beams or null tilts
  • ao_close_loop — Close an adaptive-optics feedback loop
  • render — Render the optical bench scene in Cycles or EEVEE

Use cases

  • Design and simulate a Michelson or Mach–Zehnder interferometer with real beam tracing and alignment
  • Align a multi-element optical system by having an AI agent automatically adjust kinematic mounts until the beam lands on target
  • Measure beam properties (power, polarization, group delay, spectra) at multiple detectors and optimize the layout
  • Model nonlinear optical processes like frequency conversion in crystals with dispersion and wavefront error
  • Render publication-quality images and animations of optical benches with detailed optomechanical hardware

io.github.emircbngl/blender-optics-simulator MCP server FAQ

What is the Blender Optics Simulator?

It is a Blender add-on that simulates optical benches with real physics (ray tracing, Gaussian beams, polarization, dispersion) and mounts them on realistic opto-mechanical hardware. The full optical state is exposed over MCP so AI agents can read measurements and adjust optics in real time.

Is it free?

Yes, it is licensed under GPL-3.0-or-later and is open-source.

How do I install it in Blender?

Visit the install page and drag the 'Drag this into Blender to install' button onto an open Blender window (requires Blender 4.2 LTS or newer). Alternatively, download the zip from Releases and use Edit > Preferences > Add-ons > Install from Disk.

How do I use it with an AI agent?

Start the MCP bridge from Present > Tools & Integration > Start MCP Bridge. The agent can then call get_state() to read the bench, and set_param(), set_dof(), align_element(), and other tools to adjust optics and measure results.

What optical elements are supported?

35 element types including mirrors, lenses, waveplates, gratings, crystals, prisms, spectrometers, and adaptive optics, plus 26 one-click example benches.

Does it require authentication or external services?

No authentication is required. It runs locally in Blender and uses a localhost MCP bridge for agent communication.

README (reference)

Source of truth, from the repository.

Blender Optics Simulator

CI Release License: GPL-3.0-or-later Blender 4.2+ DOI

An optical bench you lay out in Blender, trace with real optics, and can hand to an AI agent.

Place lasers, mirrors, lenses, waveplates, gratings, crystals and detectors in 3-D. A live engine traces the beam through them — rays, Gaussian beams, polarization, dispersion — mounts everything on real opto-mechanics, and renders it in Cycles. The whole optical state is readable and writable over a localhost MCP bridge, so an agent works from measured geometry instead of guesses.

<p align="center"> <a href="https://github.com/emircbngl/blender-optics-simulator/raw/main/docs/video/E_optix.mp4"><img src="docs/img/e-optix.gif" width="88%" alt="Sixteen-second tour: a green beam through the add-on's optomechanics, ending on the project title"></a> </p> <p align="center"><em>Sixteen seconds, rendered from a scene the add-on built. <a href="https://github.com/emircbngl/blender-optics-simulator/raw/main/docs/video/E_optix.mp4">Full-quality MP4</a>.</em></p> <p align="center"> <picture> <source media="(prefers-color-scheme: light)" srcset="docs/img/hero-bench-light.png"> <img src="docs/img/hero-bench-dark.png" width="92%" alt="A Michelson interferometer on a tapped breadboard, built and traced in Blender: kinematic mounts, posts and bases, both arms' beams glowing, rendered in Cycles"> </picture> </p>

Install

Requires Blender 4.2 LTS or newer (4.2+ / 5.x).

One-click, keeps itself updated. Open the install page and drag the “⤓ Drag this into Blender to install” button onto an open Blender window. That installs the add-on and subscribes you to updates in one gesture. Turn on Edit ▸ Preferences ▸ System ▸ Network ▸ Allow Online Access first.

From a zip. Download optical_alignment_sim-<version>.zip from Releases and use Edit ▸ Preferences ▸ Add-ons ▸ Install from Disk…. Updates then come from the add-on's own Updates panel.

Open the Optics tab in the 3-D viewport sidebar (press N).

Quick start

  1. Setup ▸ Browse Examples… — pick Michelson to get a complete bench.
  2. Simulate ▸ Trace — press Live. Move any part and the beam follows.
  3. Setup ▸ Element — select an optic and change what it is: focal length, glass, coating, wavelength. Expand More for the rest.
  4. Place ▸ Mount & Adjustment — put it on a real mount and turn the knobs, with − / + steps.
  5. Inspect ▸ Optical Report — read power, polarization, path length and alignment error per detector; Align All walks the mounts until the beam lands where it should.

Headless, the same thing from Python:

import optics_api                                  # inside Blender: blender -b --python your.py
optics_api.build_example("michelson")              # a full bench in one call
optics_api.set_mount("MI_M_fixed", "KM100")        # put a mirror on a kinematic mount
optics_api.set_dof("MI_M_fixed", "TIP", steps=40)  # turn a knob: the beam walks off
optics_api.align_element("MI_M_fixed")             # and back: 2.51 -> 0.0012 mrad
print(optics_api.inspect_beam("MI_D"))             # power, w(z), polarization, coherence

examples/ holds runnable scripts: michelson.py, mach_zehnder.py, agent_align.py, bell_entanglement.py, hong_ou_mandel.py.

What it does

  • Traces a real beam. Ray paths plus Gaussian-beam propagation, Jones/Stokes polarization, Fresnel losses, dispersion, nonlinear conversion, interference and wavefront error. → what is modelled, and what is not
  • 35 element types, 26 one-click benches. Mirrors through OPAs, prisms, gratings, crystals, spectrometers, adaptive optics. → element reference · full feature list
  • Mounts on real hardware. Kinematic mounts, posts, cage systems, lens tubes and rails, with mechanical limits and collision checks. → hardware
  • Measures like a bench. Detector power and polarization, beam profiles, path length, group delay and GDD, spectra, wavefront sensors. → dispersion, cylinders and spectra
  • Aligns itself. Influence-matrix solvers walk the mounts: re-centre a beam, null a tilt, close an adaptive-optics loop.
  • Renders what you built. Cycles/EEVEE with detailed optomechanics, animation renders, and SVG schematics. → how beams are drawn
<p align="center"> <img src="docs/img/agent-align.gif" width="88%" alt="A beam steered by a kinematic mirror lands off the detector centre, then auto-alignment walks the mount until it is re-centred"> </p> <p align="center"><em>A mirror knocked 2° out of alignment, then one <code>align_element()</code> call: pointing residual 7.02 → 0.0008 mrad. <a href="examples/agent_align.py">examples/agent_align.py</a> reproduces it headlessly.</em></p>

Drive it with an AI agent

The add-on exposes its full state as JSON over a localhost bridge and ships an MCP server, so an agent can read the bench and act on it:

get_state()   → every element's pose, ports, mount limits, beam path, detector readings
    ↓ decide
set_param() · place_relative() · set_dof() · align_element() · ao_close_loop() · render()
    ↓ the beam re-traces
get_state()   → read the result, not a guess

Start it from Present ▸ Tools & Integration ▸ Start MCP Bridge. → agent guide · MCP server · tool list

Physics, honestly

Every push runs the physics: 341 textbook checks (Malus, Fresnel, Snell, the grating equation, Gaussian ABCD, Zernike orthonormality, energy conservation) plus a 618-check regression suite on both Blender 4.2 and 5.x. The core formulas were also verified against an external symbolic and numerical oracle; where that has not been done, the code and the docs say so. Every run builds the same benches in millimetre and metre scenes and requires the readouts to agree.

What is not claimed matters as much: this is a chief-ray engine with wave-optics overlays, not a full-wave solver. Thin elements carry no thickness, a grating has no blaze-efficiency model, and anything phenomenological says so where you read it. Model limits are written next to each feature.

→ scope and limits · element-by-element provenance · where the data comes from

Documentation

Features, examples, release historyThe long version of this page
CapabilitiesEvery panel, API call and MCP tool
Optical elementsPer-element model, parameters and provenance
ScopeWhat the engine does and does not simulate
Dispersion, cylindrical lenses, spectraGratings, white light, group delay, spectrometers
Realistic hardwareMounts, cages, rails and render detail
Beam renderingHow baked beams are drawn, and what that is not
Data sourcesCatalog and material provenance
Agent guide · MCP serverDriving the bench from outside
CHANGELOGWhat changed in each release

How to cite

A machine-readable CITATION.cff is included, so GitHub shows a Cite this repository button with ready-to-paste APA / BibTeX.

@software{cobanoglu_blender_optics_simulator,
  author  = {Çobanoğlu, Muhammet Emir},
  title   = {Blender Optics Simulator},
  year    = {2026},
  version = {0.31.0},
  doi     = {10.5281/zenodo.20778997},
  license = {GPL-3.0-or-later},
  url     = {https://github.com/emircbngl/blender-optics-simulator}
}

The DOI above is the concept DOI and always resolves to the latest version; each release also mints its own version DOI (listed in CITATION.cff).

License & credits

GPL-3.0-or-later — see LICENSE. Vendor CAD and meshes are not included and remain the property of their owners; this project ships original metadata, procedural geometry and tooling.

Contributors

  • Tengfei Ma — ShanghaiTech University · ORCID 0009-0008-4556-4682 · @Harca-Yita. Reports from a working optical bench in #1 drove wavelength-true beam colours and the shutter, the unit-scale work, shaped apertures, reflection at the coated mirror face, the Porro prism and polished mirror substrates, the OPA and group-delay work, and the groove-oriented grating, cylindrical lens and spectrum detector.

Built in the spirit of Bigweld's maxim from Robots (2005) — "See a need, fill a need."

Related MCP servers

Payment rails for AI agents. Pay merchants in USDC on Base. Dual-protocol: x402 + OKX APP.

1
TypeScript
MIT
View repository →

joinBudget MCP: Manage personal finances, budget spaces, transactions, and categories.

Zero-config server to provision and administer any Windows RDP box over WinRM/SSH/SMB.

0
Python
MIT
View repository →

Competitive Intelligence MCP: generate AI battlecards, track competitors, monitor market signals.

View repository →

Search past Claude Code conversations. Local BM25 over JSONL with one-click claude --resume.

1
TypeScript
MIT
View repository →

Real public holiday lookup for 206 countries via a rule-based calendar engine. Paid via x402.

0
TypeScript
MIT
View repository →