RETICOLO MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@RETICOLO MCPsolve RCWA at 633 nm for a 1D grating"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
RETICOLO MCP — RCWA Solver via MATLAB Engine API
English | 中文
MCP server for the RETICOLO V10 rigorous coupled-wave analysis (RCWA) solver. Wraps MATLAB R2025b via the Engine API.
Quick start
# 1. Create conda env
conda create --name reticolo-mcp python=3.11 -y
conda activate reticolo-mcp
# 2. Install dependencies
pip install mcp numpy pydantic
# 3. Install MATLAB Engine API (one-time)
cd "D:\Program Files\MATLAB\R2025b\extern\engines\python"
pip install .
# 4. Install this package
pip install .
# 5. Set RETICOLO path and run
$env:RETICOLO_MCP_DIR = "D:\RETICOLO V10\V10_2025\reticolo_allege_v10"
python -m reticolo_mcp.serveropencode / Codex MCP config
{
"reticolo": {
"type": "local",
"command": ["D:\\condaenvs\\reticolo-mcp\\python.exe", "-m", "reticolo_mcp.server"],
"cwd": "D:\\reticolo_runtime",
"environment": { "RETICOLO_MCP_DIR": "D:\\RETICOLO V10\\V10_2025\\reticolo_allege_v10" },
"enabled": true,
"timeout": 120000
}
}Use an ASCII-only cwd outside the checkout. A source-tree cwd can shadow the
non-editable installation and makes the deployment receipt report source_tree.
Related MCP server: axiomatic-mcp
Tools
Tool | Status | Description |
| Verified solver-free | Tool maturity, schemas, build identity |
| Verified solver-free + staged real | Hashed admission plus nn=9/15/21/31 real gate |
| Verified read-only | Lease state + COMSOL collision check |
| Verified read-only | Engine handle + lease status |
| Verified real lifecycle | Three clean cycles, rollback, and >90 s heartbeat ownership passed |
| Verified TE/TM one-point translation | Normal and signed-angle analytical/direct fixtures plus patterned TE |
| Experimental, disabled by default | Legacy synchronous sweep; prefer durable jobs |
| Experimental | Real restart/resume and safe-boundary cancellation receipts passed; interface remains experimental |
| Experimental | MCP execution is not release accepted; external archived evidence cannot promote it |
| Experimental; verified uniform TE artifact | Bounded |
| Experimental; real-artifact pair verified | Two hashed uniform-TE artifacts passed caller-bounded coordinate matching and shared-limit assembly; no mode classification |
Use reticolo_capabilities as the live maturity and deployment receipt. Historical
real-engine results below remain fixture evidence; they do not promote every current
tool revision to verified status.
Synchronous sweep, convergence, and field export are disabled by default. Development-only
access requires RETICOLO_MCP_ENABLE_EXPERIMENTAL=1 followed by an MCP host restart;
the flag does not promote these tools to verified status.
Field artifacts, when experimental access is enabled, may only be written under
RETICOLO_ARTIFACT_DIR (default: <runtime>/artifacts).
One-point incidence uses signed theta_deg and degree-valued azimuth_deg. RETICOLO
receives ro=n_superstrate*sin(theta); nonzero angle requires a positive real uniform
incident medium. Durable jobs currently remain normal-incidence only.
Durable job_submit requires an explicit resource policy. A warning decision must be
resubmitted with the returned decision_hash; a refusal never launches a worker.
Scientific acceptance policy is also caller-owned: point solves, sweeps, durable
jobs, and convergence require passivity_tolerance; convergence additionally
requires center, absorption, FWHM, and branch-match tolerances. Field export requires
slice_tol, while field pairing requires a bounded coordinate_tolerance_um. These
values enter artifacts or durable identity instead of server defaults.
Verification
After a non-editable install, verify the actual stdio transport from an ASCII directory outside the checkout. Supply identities from the reviewed build receipt:
python scripts\verify_installed_transport.py `
--python "D:\condaenvs\reticolo-mcp\python.exe" `
--cwd "D:\reticolo_runtime" `
--reticolo-dir "D:\RETICOLO V10\V10_2025\reticolo_allege_v10" `
--expected-version "<version>" `
--expected-tool-count <count> `
--expected-build-id "<build-sha256>" `
--expected-schema-id "<schema-sha256>" `
--output "D:\reticolo_runtime\installed_stdio_receipt.json"The gate performs MCP initialization, tool discovery, and a capability call in a
fresh child process. It fails if the installed identity/profile differs, MATLAB is
imported during discovery, or the MATLAB PID set changes. Use --experimental only
for a separately declared restart-bound profile check, then restart without it.
Archived convergence data can be audited without MATLAB by using
scripts\audit_external_evidence.py. The audit first binds the manifest, script,
point CSV, and summary CSV by SHA-256 and exact configuration identity. With
the required --balance-tolerance, it checks derived R/T/A consistency. With
--convergence-group-column plus center, absorption, FWHM, numeric-consistency, and
maximum order-gap policy arguments, it then reconstructs
each peak, two-sided half-prominence FWHM, Q, and adjacent-order center/A/width gate
from raw rows. Provenance can pass while scientific acceptance returns exit code 2;
such a receipt is a bounded residual, not an execution failure or capability promotion.
Gate | Evidence |
G0 — Engine lifecycle | Start → health → stop, no MATLAB leak, no orphans |
G1 — M0 resource | nn=9×2 + nn=15×1, C: Δ=0 GB, no |
G2 — Numerical baseline | TE slab n=1.5: R=0.147929 vs analytical 0.1479 (0.03% err); lossy slab passive ✓ |
G3 — Durable jobs | Worker → results match G2; resume skips completed rows |
Historical unit baseline | 133 passed before v0.2 development changes |
M3 — High-order smoke | nn=21 (32s) + nn=31 (261s), memory-mode stable, no OOM |
M4 — Scratch mode | solves correctly, matches memory-mode results |
V2 real lifecycle | 3/3 cycles + post-start rollback passed; no MATLAB/lease/scratch residue |
V2 long heartbeat | 100.016 s blocking call; heartbeats at ~30/60/90 s; 95 s contender refused |
V2 TE analytical slab | raw R/T/A_balance = 0.1479289941 / 0.8520710059 / 2.22e-16; analytical errors < 2e-16 |
V2 lossy slab | raw R/T/A_balance = 0.0030686604 / 0.8847234795 / 0.1122078601; analytical errors < 3e-16 |
V2 patterned translation | Three direct/wrapper ledgers exact; Sun M5 raw R/T/A_balance = 0.8439529179 / 2.2009066e-6 / 0.1560448812 |
V2 staged resources | nn=9/15/21/31 all green and passive; solve times 0.936/5.616/28.800/227.452 s; exact lease retained |
V2 durable restart/resume | Host exit preserved worker; exact first point resumed to a two-row passive result with no duplicate |
V2 safe-boundary cancel | In-flight nn=21 point persisted; cancellation stopped before the next admission and cleanup was proven |
External Xu convergence audit | 1346/1346 rows bound; 7/7 groups reconstruct center/A/FWHM convergence; not MCP execution |
External Sun convergence audit | 170/170 rows pass provenance; scientific contract rejected because the summary lacks FWHM evidence |
Known limitations
Convergence: the MCP convergence path remains experimental and disabled by default. Archived Xu evidence passes an independent three-metric reconstruction, while the archived Sun summary lacks the width contract. Neither external result promotes MCP execution maturity.
Field export: the old
imag(apod)failure came from passingefto RETICOLO's one-argumentretchampapodization helper. The corrected boundedres3path has verified uniform-TE artifacts with embedded source/config/point/request identities. A solver-free recovery paired two real artifacts at a caller-selected1e-12 umcoordinate tolerance; the measured maximum delta was5.55e-17 um. TM, resonant-mode classification, visual mode claims, and publication claims remain unaccepted.
⚠ Disk safety
RETICOLO's internal retio system spills large matrices to retXXXX/ scratch
directories during high-order scans. This server defaults to memory mode
(vmax=inf, no disk spill). MATLAB temp files are redirected to D:\matlab_temp.
Startup applies:
retio([], inf*1i)— disable scratch writesTMP/TEMP/TMPDIR→D:\matlab_tempWorking directory →
D:\reticolo_scratchLease with COMSOL MCP collision detection
Configuration
The server requires an external RETICOLO V10 installation. The bundled
reticolo_v10/ directory in the repository is for development only and
is not included in the PyPI wheel (CC-BY 4.0 — separate from the MIT wrapper).
$env:RETICOLO_MCP_DIR = "D:\RETICOLO V10\V10_2025\reticolo_allege_v10"
python -m reticolo_mcp.server --reticolo-dir "D:\RETICOLO V10\V10_2025\reticolo_allege_v10"Architecture
reticolo-mcp/
├── src/reticolo_mcp/
│ ├── server.py # FastMCP server, all tools
│ ├── engine.py # MATLAB Engine lifecycle + solve
│ ├── lease.py # Atomic solver lease (named mutex)
│ ├── sweep.py # Resumable sweep + peak analysis
│ ├── jobs.py # Durable job store (spec/state/events)
│ ├── worker.py # Detached worker process
│ ├── convergence.py # Progressive harmonic convergence
│ ├── evidence_audit.py # Solver-free archived evidence and claim reconstruction
│ ├── field_export.py # bounded res3 field export
│ ├── schema.py # Pydantic models for materials/geometry
│ ├── config_hash.py # Canonical SHA-256 config identity
│ └── config.py # Paths, limits, env vars
├── reticolo_v10/ # Bundled RETICOLO V10 (CC-BY 4.0, dev only)
├── tests/ # Unit + integration tests
├── pyproject.toml
├── LICENSE # MIT (wrapper code)
├── NOTICE # CC-BY 4.0 attribution
└── README.mdLicense
MCP wrapper code (all Python files): MIT License.
Bundled RETICOLO V10 (
reticolo_v10/): CC-BY 4.0, © Jean Paul Hugonin & Philippe Lalanne. DOI: 10.5281/zenodo.14631951.
See LICENSE and NOTICE for details.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server that connects any AI agent to MATLAB — execute code, async jobs, interactive Plotly plots, custom tools, and monitoring dashboard205MIT

axiomatic-mcpofficial
AlicenseBqualityCmaintenanceMCP server enabling AI assistants to access the Axiomatic_AI Platform for scientific computing, document processing, and photonic circuit design.2321MIT- AlicenseBqualityBmaintenanceMCP Server for COMSOL Multiphysics simulation automation via AI agents.78MIT
- Alicense-qualityDmaintenanceA powerful MCP server that integrates MATLAB with AI, allowing you to execute MATLAB code, generate MATLAB scripts from natural language descriptions, and access MATLAB documentation directly through your AI assistant.Apache 2.0
Related MCP Connectors
This MCP server enables users to perform scientific computations regarding linear algebra and vect…
Remote MCP server for XDaLa workflow preparation on XGR.Network.
MCP server exposing the Backtest360 engine API as tools for AI agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/garbage-enzyme/RETICOLO_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server