viznoir

io.github.kimimgo由 GitHub 账号 kimimgo 发布v0.10.1更新于 Oct 24, 2026

Cinema-quality science visualization for AI agents — headless VTK via MCP.

已验证STDIO仅桌面数据与分析媒体与设计

概览

AI 生成的概览

基于无头 VTK 的 MCP 服务器,让 AI 助手读取仿真数据、施加过滤器,并渲染电影级科学图像、动画与图文版面。

可以做什么
  • 渲染科学数据图像,包括电影级渲染、批量渲染与体渲染
  • 施加切片、等值线、裁剪、流线与等值面等过滤器
  • 检查数据集、提取统计量并分析物理特征,还可沿线、沿面与时间序列取样
  • 生成动画(含物理感知预设),并对比或组合多面板故事、网格、幻灯片与视频版面
  • 导出预览并执行自定义管线,输出 PNG、WebP、MP4、GLTF 与 LaTeX
适用场景
适合需要把仿真或三维科学数据(OpenFOAM、VTK、CGNS、STL 等)转成可发表图表、动画或对比面板,而不想打开 ParaView 或 Jupyter 笔记本的场景。
运行要求
以 PyPI 包 viznoir 通过 stdio 在本机运行,需要 Python 3.10 或更高版本;VTK 会自动安装并支持 EGL 无头渲染。可选附加组件提供 meshio/trimesh 与 Pillow/matplotlib。环境变量 VIZNOIR_DATA_DIR 与 VIZNOIR_OUTPUT_DIR 指定输入数据与输出目录,VIZNOIR_RENDER_BACKEND 选择 gpu、cpu 或 auto。仅支持桌面端。
安装前请注意
它会读取所配置数据目录中的文件,并把渲染图像、动画和视频写入输出目录,请将两者指向可以暴露的文件夹。渲染大型数据集可能占用较多资源,GPU 后端依赖本机图形支持。未声明任何身份验证。

安装

在 SourceWeft 中

  1. 打开 控制台中的 viznoir,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

viznoir

VTK is all you need. Cinema-quality science visualization for AI agents.

[CI] [PyPI] [Python] [License: MIT] [Mentioned in Awesome VTK]


[Science Storytelling]

One prompt → physics analysis → cinematic renders → LaTeX equations → publication-ready story.


What it does

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

Quick Start

1. Install

bash
pip install viznoir
# With optional extraspip 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).

2. Verify

bash
mcp-server-viznoir --help    # server entry pointpython -c "import viznoir; print(viznoir.__version__)"

3. Use with an MCP client

Add to your MCP client config (claude_desktop_config.json, ~/.cursor/mcp.json, etc.):

json
{  "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."

4. Or use as a Python library (advanced)

All tool implementations are importable as async functions. You provide a VTKRunner and await the result:

python
import asynciofrom viznoir.core.runner import VTKRunnerfrom viznoir.tools.inspect import inspect_data_implfrom 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.

Capabilities

CategoryTools
Renderingrender · cinematic_render · batch_render · volume_render
Filtersslice · contour · clip · streamlines · pv_isosurface
Analysisinspect_data · inspect_physics · extract_stats · analyze_data
Probingplot_over_line · integrate_surface · probe_timeseries
Animationanimate · split_animate
Comparisoncompare · compose_assets
Exportpreview_3d · execute_pipeline

22 tools · 12 resources · 4 prompts · 50+ file formats (OpenFOAM, VTK, CGNS, Exodus, STL, glTF, …)

Showcase — 10 Domains, One Pipeline

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][CFD][Thermal][Geoscience][Automotive]
Medical
CT skull volume
CFD
Combustion streamlines
Thermal
Heatsink gradient
Geoscience
Seismic wavefield
Automotive
DrivAerML · 8.8M cells
[Molecular][Vascular][Planetary][Structural][Volume]
Molecular
H₂O electron density
Vascular
Cerebral aneurysm MRA
Planetary
Bennu · 196K triangles
Structural
Cantilever FEA stress
Volume
Thermal threshold

Physics-Aware Animations

Seven presets convert raw simulation data into publication-ready motion — each binds a rendering primitive to a physical phenomenon.

PresetPhysicsRendering
streamline_growthLagrangian advectionParticle path-line extension over time
clip_sweepPressure gradient cross-sectionMoving clip plane
layer_revealCT density classificationProgressive isosurface stacking
iso_sweepOrbital topologyIsovalue sweep with camera orbit
warp_oscillationStructural mode shapeWarp-by-vector harmonic displacement
light_orbitOblique illuminationRotating key light for material reveal
threshold_revealFeature hierarchyThreshold peeling from outside → in

Story Composition (compose_assets)

[Cavity Story]

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

Architecture

  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

Numbers

22 MCP tools24 VTK filters
10 domains19 native file formats
6/6 VTK data types50+ formats via meshio

Documentation

Homepage: kimimgo.github.io/viznoir

Developer docs: kimimgo.github.io/viznoir/docs — full tool reference, domain gallery, architecture guide

License

MIT

来源:README.md,提交 e3255c0

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.10.1最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分