Headless CAE post-processing MCP server for AI coding assistants.
Landing Page · PyPI · Issues
pip install mcp-server-parapilot
8.8M cell SA-DDES automotive CFD — single MCP tool call, no GUI
parapilot lets AI assistants (Claude Code, Cursor, Gemini CLI) render CFD/FEA simulation results without a GUI. It talks to ParaView headless or uses VTK directly to produce PNG screenshots, statistics, and animations from OpenFOAM, VTK, CGNS, and 30+ other formats.
claude install kimimgo/parapilotThen in a conversation:
"Render the pressure field from cavity/cavity.foam with a jet colormap"
{
"mcpServers": {
"parapilot": {
"command": "mcp-server-parapilot"
}
}
}docker compose up -dRequires NVIDIA Container Toolkit for GPU rendering.
docker compose up parapilot-cpu -dUses OSMesa software rendering — works on any machine without a GPU.
See examples/ for complete workflow pipelines:
- thermal_analysis.json — Conjugate heat transfer post-processing (8 steps)
| Tool | Description |
|---|---|
inspect_data |
File metadata — fields, timesteps, bounds |
render |
Single-field PNG screenshot |
slice |
Cut-plane visualization |
contour |
Iso-surface visualization |
clip |
Clipped region visualization |
streamlines |
Vector field flow visualization |
cinematic_render |
Publication-quality render (SSAO, PBR, 3-point lighting) |
compare |
Side-by-side or diff comparison of two datasets |
probe_timeseries |
Sample field at a point across timesteps |
batch_render |
Render multiple fields in one call |
preview_3d |
Export to glTF/glB for interactive 3D viewing |
extract_stats |
Min/max/mean/std for fields |
plot_over_line |
Sample values along a line |
integrate_surface |
Force/flux integration over surfaces |
animate |
Time series or camera orbit animation |
split_animate |
Multi-pane synchronized animation (GIF) |
execute_pipeline |
Full pipeline DSL for advanced workflows |
pv_isosurface |
DualSPHysics bi4 → VTK surface mesh |
| URI | Content |
|---|---|
parapilot://formats |
Supported file formats and readers |
parapilot://filters |
Available filter parameters |
parapilot://colormaps |
Colormap presets |
parapilot://cameras |
Camera angle presets + auto-camera PCA |
parapilot://cinematic |
Lighting, materials, backgrounds, quality presets |
parapilot://representations |
Render representations |
parapilot://case-presets |
Domain-specific case presets |
parapilot://physics-defaults |
Physics-aware rendering defaults |
parapilot://pipelines/cfd |
CFD pipeline examples |
parapilot://pipelines/fea |
FEA pipeline examples |
parapilot://pipelines/split-animate |
Split animation examples |
All renders below are generated by single MCP tool calls — no post-processing.
![]() |
![]() |
![]() |
| Bone isosurface (contour) | Carotid blood flow (streamlines) | Stanford Dragon (render) |
![]() |
![]() |
![]() |
| Volume ray-casting (render) | HVAC airflow (streamlines) | Mesh clip (clip) |
12 engineering domains — Marine, Mechanical, Aero, Electronics, Biomedical, Geoscience, Environmental, Chemical, Structural, Naval, Scientific, Urban.
See the full gallery at kimimgo.github.io/parapilot.
┌─────────────────────────────────────────────┐
│ AI Assistant (Claude / Cursor / Gemini) │
│ ↕ MCP protocol (stdio) │
├─────────────────────────────────────────────┤
│ parapilot MCP Server (FastMCP) │
│ ├── tools/ 18 MCP tools │
│ ├── resources/ 11 MCP resources │
│ └── prompts/ 3 MCP prompts │
├─────────────────────────────────────────────┤
│ Engine Layer (VTK direct API) │
│ ├── readers OpenFOAM, VTK, CGNS, ... │
│ ├── filters Slice, Contour, Clip, ... │
│ ├── renderer Off-screen VTK rendering │
│ ├── camera Preset + custom positions │
│ ├── colormaps Scientific color schemes │
│ ├── overlay Scalar bars, labels, text │
│ ├── physics Auto-detect field types │
│ └── export PNG, VTK, CSV output │
├─────────────────────────────────────────────┤
│ Core Layer │
│ ├── compiler Pipeline → VTK script │
│ ├── runner Local / Docker execution │
│ ├── registry Filter & format schemas │
│ └── output Result collection │
└─────────────────────────────────────────────┘
inspect_data → render / slice / contour → extract_stats → animate
- Inspect — discover fields, timesteps, bounds
- Visualize — render, slice, contour, clip, streamlines
- Extract — statistics, line plots, surface integrals
- Animate — time series or multi-pane comparison
OpenFOAM (.foam), VTK (.vti/.vtp/.vtu/.vtm), CGNS (.cgns), Ensight (.case), Exodus (.exo), STL (.stl), PLY (.ply), OBJ (.obj), and 30+ more via VTK readers.
We welcome contributions! Check out our open issues — especially those labeled good first issue.
git clone https://github.com/kimimgo/parapilot
cd parapilot
pip install -e ".[dev]"
pytest # 748 tests
ruff check src/ tests/ # lint
mypy src/parapilot/ # type checkSee CONTRIBUTING.md for detailed setup, architecture guide, and how to add new filters/readers.
| parapilot | LLNL/paraview_mcp | Kitware/vtk-mcp | |
|---|---|---|---|
| Rendering | Headless VTK + ParaView | GUI-attached only | None (docs search) |
| Tests | 748 | 0 | 0 |
| Docker | GPU (EGL) | No | No |
| MCP Tools | 18 | 23 | 3 |
| Plugin | Claude Code plugin | No | No |
- Validated with VTK example datasets only — large-scale industrial data (100M+ cells) is unverified
- Headless rendering means no real-time visual feedback to catch LLM-generated parameter errors
- No simulation steering, multi-physics coupling, or uncertainty quantification
- When ParaView natively integrates MCP, this wrapper approach may become redundant
kimimgo |
NikanEidi |
|---|
MIT





