viznoir — Claude Code MCP server: VTK science rendering
Lets an AI agent drive VTK's rendering pipeline headlessly: read simulation files, apply filters, render images and export animations.
claude mcp add --env VIZNOIR_RENDER_BACKEND=<VIZNOIR_RENDER_BACKEND> --env VIZNOIR_OUTPUT_DIR=<VIZNOIR_OUTPUT_DIR> --transport stdio viznoir -- uvx viznoirWhat viznoir does
viznoir is an MCP server that hands VTK's rendering pipeline to an AI agent. The agent reads simulation data, applies filters, renders images and exports animations — no ParaView GUI, no Jupyter, no display server. Useful when you want a frame or a clip out of CFD, FEA or CT data without leaving the chat.
It ships 22 tools. Rendering covers render, cinematic_render and volume_render; filters include slice, contour, clip and streamlines; analysis brings inspect_data, inspect_physics and extract_stats. There is also compose_assets, which builds a multi-panel story with LaTeX equations. More than 50 file formats are supported, among them OpenFOAM, VTK, CGNS, Exodus, STL and glTF.
Python 3.10 or newer is required, and the VTK wheel installs on its own with EGL headless rendering supported. Optional extras (mesh, composite, all) widen format support and split animation. The server starts as mcp-server-viznoir; data and output locations come from VIZNOIR_DATA_DIR and VIZNOIR_OUTPUT_DIR. Skip VIZNOIR_OUTPUT_DIR and rendered files have nowhere to land, so set it up front.
What it helps with
- render a pressure field from OpenFOAM without opening ParaView
- build a streamline-growth animation across timesteps
- pull field names and timesteps out of a simulation file
- compose a multi-panel figure with LaTeX equations
- compare two datasets in one grid layout
Example prompts for the agent
- Open
cavity.foam, render the pressure field with cinematic lighting, then build a physics story. - Run a
clip_sweepanimation on the pressure field and save it toVIZNOIR_OUTPUT_DIR. - Compare both runs in a 2×2 grid and label the fields inside the scene.
How to install viznoir
Platform CLI
claude mcp add --env VIZNOIR_RENDER_BACKEND=<VIZNOIR_RENDER_BACKEND> --env VIZNOIR_OUTPUT_DIR=<VIZNOIR_OUTPUT_DIR> --transport stdio viznoir -- uvx viznoirReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from viznoir <command>
Platform CLI
codex mcp add viznoir --env VIZNOIR_RENDER_BACKEND=<VIZNOIR_RENDER_BACKEND> --env VIZNOIR_OUTPUT_DIR=<VIZNOIR_OUTPUT_DIR> -- uvx viznoirReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from viznoir <command>
Config file
{
"mcpServers": {
"viznoir": {
"command": "uvx",
"args": [
"viznoir"
],
"env": {
"VIZNOIR_RENDER_BACKEND": "<VIZNOIR_RENDER_BACKEND>",
"VIZNOIR_OUTPUT_DIR": "<VIZNOIR_OUTPUT_DIR>"
}
}
}
}Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from viznoir <command>
Config file
{
"servers": {
"viznoir": {
"type": "stdio",
"command": "uvx",
"args": [
"viznoir"
],
"env": {
"VIZNOIR_RENDER_BACKEND": "<VIZNOIR_RENDER_BACKEND>",
"VIZNOIR_OUTPUT_DIR": "<VIZNOIR_OUTPUT_DIR>"
}
}
}
}Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from viznoir <command>
Platform CLI
gemini mcp add -e VIZNOIR_RENDER_BACKEND=<VIZNOIR_RENDER_BACKEND> -e VIZNOIR_OUTPUT_DIR=<VIZNOIR_OUTPUT_DIR> viznoir uvx viznoirReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from viznoir <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about viznoir
How do I install viznoir in Claude Code?
Run claude mcp add viznoir -- uvx viznoir. To pass environment variables, use the flags: `claude mcp add --env VIZNOIR_RENDER_BACKEND=<VIZNOIR_RENDER_BACKEND> --env VIZNOIR_OUTPUT_DIR=<VIZNOIR_OUTPUT_DIR> --transport stdio viznoir -- uvx viznoir`.
What does viznoir do?
It is an MCP server that gives an agent access to VTK rendering: reading simulation data, filtering, analysis, animation and image export. Everything runs headless, without a GUI or display server.
What do I need to run viznoir?
Python 3.10 or newer; the VTK wheel installs automatically. The server entry point is mcp-server-viznoir, and data and output directories are set through VIZNOIR_DATA_DIR and VIZNOIR_OUTPUT_DIR.