关于 viznoir
viznoir 是一款 MCP 服务,让 AI Agent 在无头环境中使用 VTK 分析和可视化科学模拟数据。它将数据检查、物理相关滤镜、渲染、动画和故事编排用于研究与出版工作流。
主要功能
- 01无头 VTK 渲染
- 02模拟数据检查与分析
- 03物理相关滤镜和探测
- 04图像与动画导出
- 05多面板故事编排
适用场景
- 01无需图形界面渲染模拟场
- 02检查并分析物理数据
- 03根据模拟结果制作动画
- 04编排带注释的科学演示
MCP 相关
viznoir 向 MCP 客户端提供基于 VTK 的可视化和分析工具,以及资源和提示词。工具涵盖数据检查、渲染、滤镜、探测、动画、比较和导出。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
23收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| file_path | string | 是 | 仿真文件的路径(例如 /data/cavity.foam、/data/beam.vtu) |
详细介绍
viznoir
VTK 就足够了。为 AI Agent 打造影院级科学可视化。

一个提示词 → 物理分析 → 电影级渲染 → LaTeX 方程 → 可直接用于发表的故事。
功能介绍
一个 MCP 服务,让 AI Agent 完全访问 VTK 的渲染管线——无需 ParaView GUI、Jupyter 笔记本或显示服务器。你的 Agent 可以读取模拟数据、应用滤镜、渲染影院级图像并导出动画,全程无头运行。
适用于: Claude Code · Cursor · Windsurf · Gemini CLI · 任意 MCP 客户端
快速开始
1. 安装
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
需要 Python ≥3.10。自动安装 VTK wheel(支持 EGL 无头渲染)。
2. 验证
mcp-server-viznoir --help # server entry point
python -c "import viznoir; print(viznoir.__version__)"
3. 与 MCP 客户端配合使用
添加到 MCP 客户端配置(claude_desktop_config.json、~/.cursor/mcp.json 等):
{
"mcpServers": {
"viznoir": {
"command": "mcp-server-viznoir",
"env": {
"VIZNOIR_DATA_DIR": "/path/to/your/simulation/data",
"VIZNOIR_OUTPUT_DIR": "/path/to/output"
}
}
}
}
然后向你的 AI Agent 提出请求:
“打开 cavity.foam,用电影级灯光渲染压力场,然后创建一个物理分解故事。”
4. 或作为 Python 库使用(进阶)
所有工具实现都可作为 async 函数导入。你需要提供一个 VTKRunner 并 await 结果:
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())
完整工具参考请参阅 文档。
功能
| 类别 | 工具 |
|---|---|
| 渲染 | render · cinematic_render · batch_render · volume_render |
| 滤镜 | slice · contour · clip · streamlines · pv_isosurface |
| 分析 | inspect_data · inspect_physics · extract_stats · analyze_data |
| 探测 | plot_over_line · integrate_surface · probe_timeseries |
| 动画 | animate · split_animate |
| 比较 | compare · compose_assets |
| 导出 | preview_3d · execute_pipeline |
22 个工具 · 12 个资源 · 4 个提示词 · 50 多种文件格式(OpenFOAM、VTK、CGNS、Exodus、STL、glTF 等)
展示 — 10 个领域,一个工作流
下面的每一帧都是一次 MCP 工具调用。不使用 GUI、不做后期处理,也不使用 ParaView。 标注通过 VTK 原生文本 actor 和引导线直接渲染在 3D 场景中,无需使用 Photoshop 或 matplotlib 叠加。
![]() | ![]() | ![]() | ![]() | ![]() |
| 医学 CT 颅骨体数据 | CFD 燃烧流线 | 热学 散热器梯度 | 地球科学 地震波场 | 汽车 DrivAerML · 8.8M 个单元 |
![]() | ![]() | ![]() | ![]() | ![]() |
| 分子 H₂O 电子密度 | 血管 脑动脉瘤 MRA | 行星 Bennu · 196K 个三角形 | 结构 悬臂梁 FEA 应力 | 体数据 热阈值 |
感知物理的动画
七种预设可将原始模拟数据转换为适合发表的动态效果,每种预设都会将一种渲染图元与一种物理现象关联起来。
| 预设 | 物理现象 | 渲染方式 |
|---|---|---|
streamline_growth | 拉格朗日平流 | 粒子路径线随时间延伸 |
clip_sweep | 压力梯度截面 | 移动裁剪平面 |
layer_reveal | CT 密度分类 | 逐步叠加等值面 |
iso_sweep | 轨道拓扑 | 等值扫掠并绕相机旋转 |
warp_oscillation | 结构振型 | 按矢量进行谐波位移变形 |
light_orbit | 斜向照明 | 旋转主光源以呈现材质 |
threshold_reveal | 特征层级 | 从外向内逐层剥离阈值 |
故事构图(compose_assets)

检查 → 渲染 → 标注 → 构图 → 讲述。一次提示即可生成包含 LaTeX 渲染的控制方程的 4 面板物理分解图。
布局:story(纵向叙事) · grid(N×M 对比) · slides(16:9 演示文稿) · video(带转场的 MP4)
完整交互式图库: 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 工具 | 24 个 VTK 滤镜 |
| 10 个领域 | 19 种原生文件格式 |
| 6/6 种 VTK 数据类型 | 通过 meshio 支持 50+ 种格式 |
文档
开发者文档: kimimgo.github.io/viznoir/docs — 完整的工具参考、领域图库和架构指南
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。









