Server data from the Official MCP Registry
Cinema-quality science visualization for AI agents — headless VTK via MCP.
Cinema-quality science visualization for AI agents — headless VTK via MCP.
viznoir is a well-structured MCP server for scientific visualization with VTK. Authentication is not required (appropriate for a local visualization tool), and the codebase demonstrates good security practices including path traversal prevention via `_validate_file_path()`, proper use of environment variables for configuration, and no hardcoded credentials. Minor code quality concerns around broad exception handling and incomplete error messages do not significantly impact security. Supply chain analysis found 8 known vulnerabilities in dependencies (1 critical, 3 high severity). Package verification found 1 issue.
4 files analyzed · 13 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: VIZNOIR_RENDER_BACKEND
Environment variable: VIZNOIR_OUTPUT_DIR
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-kimimgo-viznoir": {
"env": {
"VIZNOIR_OUTPUT_DIR": "your-viznoir-output-dir-here",
"VIZNOIR_RENDER_BACKEND": "your-viznoir-render-backend-here"
},
"args": [
"-y",
"www"
],
"command": "npx"
}
}
}From the project's GitHub README.
VTK is all you need. Cinema-quality science visualization for AI agents.

One prompt → physics analysis → cinematic renders → LaTeX equations → publication-ready story.
An MCP server that gives AI agents full access to VTK's rendering pipeline — no ParaView GUI, no Jupyter notebooks, no display server. Your agent reads simulation data, applies filters, renders cinema-quality images, and exports animations, all headless.
Works with: Claude Code · Cursor · Windsurf · Gemini CLI · any MCP client
pip install viznoir
# With optional extras
pip install "viznoir[mesh]" # meshio + trimesh (50+ formats)
pip install "viznoir[composite]" # Pillow + matplotlib (split_animate)
pip install "viznoir[all]" # everything
Requires Python ≥3.10. VTK wheel auto-installed (EGL headless rendering supported).
mcp-server-viznoir --help # server entry point
python -c "import viznoir; print(viznoir.__version__)"
Add to your MCP client config (claude_desktop_config.json, ~/.cursor/mcp.json, etc.):
{
"mcpServers": {
"viznoir": {
"command": "mcp-server-viznoir",
"env": {
"VIZNOIR_DATA_DIR": "/path/to/your/simulation/data",
"VIZNOIR_OUTPUT_DIR": "/path/to/output"
}
}
}
}
Then ask your AI agent:
"Open cavity.foam, render the pressure field with cinematic lighting, then create a physics decomposition story."
All tool implementations are importable as async functions. You provide a VTKRunner and await the result:
import asyncio
from viznoir.core.runner import VTKRunner
from viznoir.tools.inspect import inspect_data_impl
from viznoir.tools.render import render_impl
async def main():
runner = VTKRunner()
meta = await inspect_data_impl(file_path="cavity.foam", runner=runner)
print(meta["fields"], meta["timesteps"])
result = await render_impl(
file_path="cavity.foam",
field_name="p",
runner=runner,
colormap="Cool to Warm",
camera="isometric",
width=1920, height=1080,
output_filename="pressure.png",
)
print(result.file_path)
asyncio.run(main())
See docs for the full tool reference.
| Category | Tools |
|---|---|
| Rendering | render · cinematic_render · batch_render · volume_render |
| Filters | slice · contour · clip · streamlines · pv_isosurface |
| Analysis | inspect_data · inspect_physics · extract_stats · analyze_data |
| Probing | plot_over_line · integrate_surface · probe_timeseries |
| Animation | animate · split_animate |
| Comparison | compare · compose_assets |
| Export | preview_3d · execute_pipeline |
22 tools · 12 resources · 4 prompts · 50+ file formats (OpenFOAM, VTK, CGNS, Exodus, STL, glTF, …)
Every frame below is a single MCP tool call. No GUI, no post-processing, no ParaView. Annotations are rendered inside the 3D scene via VTK-native text actors and leader lines — no Photoshop, no matplotlib overlay.
![]() | ![]() | ![]() | ![]() | ![]() |
| Medical CT skull volume | CFD Combustion streamlines | Thermal Heatsink gradient | Geoscience Seismic wavefield | Automotive DrivAerML · 8.8M cells |
![]() | ![]() | ![]() | ![]() | ![]() |
| Molecular H₂O electron density | Vascular Cerebral aneurysm MRA | Planetary Bennu · 196K triangles | Structural Cantilever FEA stress | Volume Thermal threshold |
Seven presets convert raw simulation data into publication-ready motion — each binds a rendering primitive to a physical phenomenon.
| Preset | Physics | Rendering |
|---|---|---|
streamline_growth | Lagrangian advection | Particle path-line extension over time |
clip_sweep | Pressure gradient cross-section | Moving clip plane |
layer_reveal | CT density classification | Progressive isosurface stacking |
iso_sweep | Orbital topology | Isovalue sweep with camera orbit |
warp_oscillation | Structural mode shape | Warp-by-vector harmonic displacement |
light_orbit | Oblique illumination | Rotating key light for material reveal |
threshold_reveal | Feature hierarchy | Threshold peeling from outside → in |
compose_assets)
Inspect → render → annotate → compose → narrate. One prompt produces a 4-panel physics decomposition with LaTeX-rendered governing equations.
Layouts: story (vertical narrative) · grid (N×M comparison) · slides (16:9 keynote) · video (MP4 with transitions)
Full interactive gallery: https://kimimgo.github.io/viznoir/#showcase
prompt "Render pressure from cavity.foam"
│
MCP Server 22 tools · 12 resources · 4 prompts
│
VTK Engine readers → filters → renderer → camera
│ EGL/OSMesa headless · cinematic lighting
Physics Layer topology analysis · context parsing
│ vortex detection · stagnation points
Animation 7 physics presets · easing · timeline
│ transitions · compositor · video export
Output PNG · WebP · MP4 · GLTF · LaTeX
| 22 MCP tools | 24 VTK filters |
| 10 domains | 19 native file formats |
| 6/6 VTK data types | 50+ formats via meshio |
Homepage: kimimgo.github.io/viznoir
Developer docs: kimimgo.github.io/viznoir/docs — full tool reference, domain gallery, architecture guide
MIT
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.