Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

viznoir

PYPI · VIZNOIR · SCANNED SEP 20

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

Available components

−16 this week 64 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security50
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
  • 3 of 27 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency35
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • License check failed: the license (MIT License) isn't a recognized OSI-approved license. See how to fix → Fail
  • Actively maintained (last published 108 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability79
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 4936 tokens (~141/item across 35 items; 23 tools + 12 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management83
  • Stability observed for 25 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 94% of tool parameters carry a description.Partial
  • Structured output schemas are declared (48% of tools); any adoption earns full credit.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "execute_pipeline" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 25 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the viznoir MCP server?

viznoir runs locally as a PyPI package, launched with uvx viznoir. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · viznoir

# add to Claude Code
claude mcp add kimimgo-viznoir -- uvx viznoir
// .cursor/mcp.json
{
  "mcpServers": {
    "kimimgo-viznoir": {
      "command": "uvx",
      "args": [
        "viznoir"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "kimimgo-viznoir": {
      "command": "uvx",
      "args": [
        "viznoir"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add kimimgo-viznoir -- uvx viznoir
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "kimimgo-viznoir": {
      "type": "local",
      "command": [
        "uvx",
        "viznoir"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add kimimgo-viznoir --command uvx --arg viznoir
# ~/.hermes/config.yaml
mcp_servers:
  kimimgo-viznoir:
    command: "uvx"
    args: ["viznoir"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "kimimgo-viznoir": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "viznoir"
      ]
    }
  }
}
# add to Vellum
assistant mcp add kimimgo-viznoir -t stdio -c uvx -a viznoir
// mcp.json
{
  "mcpServers": {
    "kimimgo-viznoir": {
      "command": "uvx",
      "args": [
        "viznoir"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 19 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 −4
    • Stability: pass → 0.77 functional
  • 17 Sept 26 +1
    • Stability: 0.97 → pass security
  • 15 Sept 26 −14
    • Malware scan: pass → unverified security
  • 13 Sept 26 +16
    • Malware scan: unverified → pass security
  • 11 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 10 Sept 26 +1
    • Stability: 0.97 → pass security
  • 8 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed pypi/viznoir@0.10.1

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 27 packages
Packages resolved 27
Stale 3
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 23 exposed · ~4,297 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
analyze_data ~110

[DEPRECATED — use inspect_physics instead] Analyze VTK/simulation data. This tool is deprecated. Use inspect_physics for structured physics data extraction with vortex detection, critical points, and solver metadata.

NameTypeReqDescription
domainPhysics domain hint — "cfd", "fea", "thermal" (None for auto-detect)
file_pathstringyesPath to VTK/OpenFOAM/CGNS file
focusAnalyze only this field (None for all fields)

Structured output declared, but exposes no named fields.

No examples provided.

animate ~401

Create an animation from time series data or camera orbit. Time mapping (timesteps mode): speed_factor=1.0: real-time (physics 1s = video 1s) speed_factor=5.0: 5x fast-forward speed_factor=0.2: 5x slow-motion (physics 1s = video 5s) For VTK file series (e.g., PartFluid_0000.vtk through PartFluid_0100.vtk), use 'files' with an explicit list or 'file_pattern' with a glob pattern.

NameTypeReqDescription
camerastringCamera preset (used for initial view in orbit mode)
colormapstringColor map preset
field_namestringyesField to visualize
file_pathstringyesPath to simulation file (or first file in series)
file_patternGlob pattern for file series (e.g., "/data/PartFluid_*.vtk")
filesExplicit list of file paths for VTK time series
fpsintegerFrames per second (15-60)
heightintegerFrame height
modestring"timesteps" for time series, "orbit" for camera rotation
orbit_durationnumberOrbit video length in seconds (orbit mode only)
output_formatstringOutput format — "frames" (PNG only), "mp4", "webm", or "gif"
speed_factornumberPlayback speed multiplier (1.0=real-time)
text_overlayText to overlay on video frames (e.g., case name)
time_range[start, end] physics time range, None for all
video_qualityintegerVideo CRF quality (lower=better, 18-28 typical, default 23)
widthintegerFrame width

Structured output declared, but exposes no named fields.

No examples provided.

auto_postprocess ~130

Autonomous post-processing: inspect → visualize → evaluate → refine. Analyzes the file, detects the simulation domain (CFD/FEA/SPH), and produces 3-5 visualizations automatically. With sampling-capable clients, evaluates results and refines parameters iteratively.

NameTypeReqDescription
file_pathstringyesPath to simulation file (.foam, .vtu, .vtk, etc.)
goalstring"explore" (overview), "publish" (publication quality), "compare" (multi-field)
max_iterationsintegerMaximum refinement iterations (1-5)

No output schema declared.

No examples provided.

batch_render ~188

Render multiple fields from the same dataset in one call. Returns a dict with images list, each containing field name and base64 PNG. Useful for comparing pressure, velocity, temperature, etc. side-by-side.

NameTypeReqDescription
camerastringCamera preset
colormapstringColor map preset
fieldsarrayyesList of field names to render
file_pathstringyesPath to simulation file
heightOverride height in pixels (must set both width and height, or neither)
purposestringResolution preset — "analyze" (480p), "preview" (720p), "publish" (1080p)
qualitystringRendering quality (draft/standard/cinematic)
timestepTimestep selection
widthOverride width in pixels (must set both width and height, or neither)

Structured output declared, but exposes no named fields.

No examples provided.

cinematic_render ~507

Cinematic-quality rendering with auto-framing, 3-point lighting, SSAO, and PBR. Produces publication/presentation-quality images with: - PCA-based auto-camera: analyzes object shape and picks optimal viewing angle - 3-point cinematic lighting (key + fill + rim) - SSAO (Screen-Space Ambient Occlusion) for contact shadows - FXAA anti-aliasing - Gradient backgrounds - PBR material support (metallic/roughness) Quality presets: - draft: 960x540, no post-processing (fast preview) - standard: 1920x1080, SSAO + FXAA - cinematic: 1920x1080, all effects + ground plane - ultra: 3840x2160, all effects + ground plane - publication: 2400x1800, clean lighting, white background

NameTypeReqDescription
azimuthCamera azimuth in degrees (None for auto from shape analysis)
backgroundBackground preset (dark_gradient, light_gradient, blue_gradient, publication, None)
colormapstringColor map preset (e.g., "Cool to Warm", "Viridis")
elevationCamera elevation in degrees (None for auto from shape analysis)
field_nameField to visualize (None for auto-detect)
file_pathstringyesPath to simulation file
fill_rationumberHow much of viewport the object fills (0.0-1.0, default 0.75)
fxaabooleanEnable Fast Approximate Anti-Aliasing
ground_planebooleanAdd a semi-transparent ground plane for shadow catching
heightOverride image height (None uses quality preset)
lightingLighting preset (cinematic, dramatic, studio, publication, outdoor, None)
metallicnumberPBR metallic factor (0.0-1.0)
output_filenamestringOutput PNG filename
qualitystringRendering quality preset
roughnessnumberPBR roughness factor (0.0-1.0)
scalar_range[min, max] for color scale, None for auto
ssaobooleanEnable Screen-Space Ambient Occlusion
timestepSpecific timestep, "latest", or None for first
widthOverride image width (None uses quality preset)

No output schema declared.

No examples provided.

clip ~175

Create a clipped visualization.

NameTypeReqDescription
camerastringCamera preset
colormapstringColor map preset
field_namestringyesField to visualize
file_pathstringyesPath to simulation file
heightOverride height in pixels (must set both width and height, or neither)
invertbooleanIf True, keep the other side
normalClip plane normal [nx, ny, nz]
originClip plane origin [x, y, z]
purposestringResolution preset — "analyze" (480p), "preview" (720p), "publish" (1080p)
timestepTimestep selection
widthOverride width in pixels (must set both width and height, or neither)

No output schema declared.

No examples provided.

compare ~331

Compare two simulation results side-by-side or as a difference map. Renders both datasets with identical camera, colormap, and scalar range for direct visual comparison. Essential for design comparison, mesh convergence studies, and solver validation. Modes: - side_by_side: Two panels with shared colorbar and consistent framing - diff: Absolute field difference map (|A - B|) rendered on dataset A's mesh

NameTypeReqDescription
colormapstringColor map preset for both panels
field_nameField to compare (None for auto-detect)
file_astringyesPath to first simulation file
file_bstringyesPath to second simulation file
heightOverride height in pixels (must set both width and height, or neither)
label_astringLabel for first panel (displayed top-left)
label_bstringLabel for second panel (displayed top-left)
modestringComparison mode — "side_by_side" or "diff"
output_filenamestringOutput PNG filename
purposestringResolution preset — "analyze" (480p), "preview" (720p), "publish" (1080p)
qualitystringRendering quality (draft/standard/cinematic)
scalar_rangeShared [min, max] for consistent coloring (None for auto)
timestepSpecific timestep, "latest", or None for first
widthOverride total width in pixels (must set both width and height, or neither)

No output schema declared.

No examples provided.

compose_assets ~147

Compose multiple assets into a deliverable format.

NameTypeReqDescription
assetsarrayyesList of asset definitions (dicts with 'type' and type-specific keys)
fpsintegerFrames per second for video export (default 30)
heightintegerOutput height in pixels (default 1080)
layoutstringLayout mode — "story", "grid", "slides", or "video"
scenesScene definitions for video layout (list of dicts with asset_indices, duration, transition)
titleOptional title text (used in story layout)
widthintegerOutput width in pixels (default 1920)

No output schema declared.

No examples provided.

contour ~157

Create an iso-surface (contour) visualization.

NameTypeReqDescription
camerastringCamera preset
colormapstringColor map preset
field_namestringyesField for iso-surface extraction
file_pathstringyesPath to simulation file
heightOverride height in pixels (must set both width and height, or neither)
isovaluesarrayyesList of iso-values to extract
purposestringResolution preset — "analyze" (480p), "preview" (720p), "publish" (1080p)
timestepTimestep selection
widthOverride width in pixels (must set both width and height, or neither)

No output schema declared.

No examples provided.

execute_pipeline ~258

Execute a custom pipeline definition (advanced). Accepts a full PipelineDefinition JSON for maximum flexibility. This is the primary interface for CFD/FEA/CAE specialist agents. The pipeline JSON structure: { "source": {"file": "/data/file.foam", "timestep": "latest"}, "pipeline": [ {"filter": "Slice", "params": {"origin": [0,0,0], "normal": [1,0,0]}}, {"filter": "Calculator", "params": {"expression": "mag(U)", "result_name": "Umag"}} ], "output": { "type": "image", "render": {"field": "Umag", "colormap": "Viridis"} } } Available filters: Slice, Clip, Contour, Threshold, StreamTracer, Calculator, Gradient, IntegrateVariables, GenerateSurfaceNormals, ExtractBlock, ExtractSurface, WarpByVector, WarpByScalar, CellDatatoPointData, PlotOverLine, Glyph, ProgrammableFilter, Decimate, Triangulate. Output types: image, data, csv, animation, export, multi.

NameTypeReqDescription
pipelineobjectyesComplete PipelineDefinition as JSON dict

No output schema declared.

No examples provided.

extract_stats ~64

Extract statistical summary (min/max/mean/std) for fields.

NameTypeReqDescription
blocksMultiblock region names
fieldsarrayyesList of field names to analyze
file_pathstringyesPath to simulation file
timestepTimestep selection

Structured output declared, but exposes no named fields.

No examples provided.

inspect_data ~79

Inspect a simulation file and return metadata. Returns bounds, point/cell arrays with ranges, timestep info, and multiblock structure. Use this first to understand what data is available before rendering or extracting.

NameTypeReqDescription
file_pathstringyesPath to the simulation file (e.g., /data/cavity.foam, /data/beam.vtu)

Structured output declared, but exposes no named fields.

No examples provided.

inspect_physics ~199

Extract structured physics data for AI storytelling. Analyzes simulation data to extract: - L2 FieldTopology: vortex detection (Q-criterion), critical points, centerline profiles, gradient statistics per field - L3 CaseContext: boundary conditions, transport properties, solver info, mesh quality, derived quantities (Re, Ma, etc.) Returns structured JSON for LLM to build physics narratives. Replaces analyze_data with quantitative topology data instead of hardcoded heuristics.

NameTypeReqDescription
case_dirOpenFOAM case directory for full solver metadata. If None, only mesh quality is extracted.
fieldsSpecific field names to analyze (None = all fields)
file_pathstringyesPath to VTK/OpenFOAM/CGNS simulation file
probe_linesintegerNumber of auto centerline probe lines (1-3)
vortex_thresholdnumberQ-criterion threshold for vortex detection

Structured output declared, but exposes no named fields.

No examples provided.

integrate_surface ~88

Integrate a field over a surface to compute forces, areas, or fluxes.

NameTypeReqDescription
boundaryBoundary/block name to extract (e.g., "wall", "inlet")
field_namestringyesField to integrate (e.g., "p", "wallShearStress")
file_pathstringyesPath to simulation file
timestepTimestep selection

Structured output declared, but exposes no named fields.

No examples provided.

plot_over_line ~102

Sample field values along a line between two points. Returns coordinate arrays and field values for plotting.

NameTypeReqDescription
field_namestringyesField to sample
file_pathstringyesPath to simulation file
point1arrayyesStart point [x, y, z]
point2arrayyesEnd point [x, y, z]
resolutionintegerNumber of sample points
timestepTimestep selection

Structured output declared, but exposes no named fields.

No examples provided.

preview_3d ~80

Export dataset to glTF/glB for interactive 3D viewing in a browser. Returns the exported file path and a viewer URL hint. Requires VTK >= 9.4 with vtkGLTFExporter support.

NameTypeReqDescription
field_name
file_pathstringyes
output_filenamestring
timestep

Structured output declared, but exposes no named fields.

No examples provided.

probe_timeseries ~82

Sample a field value at a fixed point across timesteps. Useful for monitoring pressure/velocity at a sensor location over time. Returns dict with times and values arrays.

NameTypeReqDescription
field_namestringyes
file_pathstringyes
file_pattern
files
pointarrayyes
time_range

Structured output declared, but exposes no named fields.

No examples provided.

pv_isosurface ~147

Run DualSPHysics IsoSurface to generate VTK surface mesh files. Converts bi4 particle data into VTK surface meshes (iso-surfaces). The output files can then be used with animate() or render() via SourceDef(files=[...]) for visualization.

NameTypeReqDescription
bi4_dirstringyesDirectory containing bi4 data files
docker_imagestringDocker image with IsoSurface tool
only_typestringParticle type filter (e.g., "+fluid")
output_dirstringyesDirectory for output VTK surface mesh files
varsstringVariable selection (e.g., "+vel,+press,+rhop")

Structured output declared, but exposes no named fields.

No examples provided.

render ~252

Render a field visualization and return a PNG screenshot.

NameTypeReqDescription
associationstring"POINTS" or "CELLS"
blocksMultiblock region names to include
camerastringCamera preset — isometric, top, front, right, left, back
colormapstringColor map preset (e.g., "Cool to Warm", "Viridis", "Jet")
field_namestringyesName of the field to visualize (e.g., "p", "U", "T")
file_pathstringyesPath to simulation file
heightOverride height in pixels (must set both width and height, or neither)
output_filenamestringOutput PNG filename (e.g., "snapshot_press.png")
purposestringResolution preset — "analyze" (480p), "preview" (720p), "publish" (1080p)
scalar_range[min, max] for color scale, None for auto
timestepSpecific timestep, "latest", or None for first
widthOverride width in pixels (must set both width and height, or neither)

No output schema declared.

No examples provided.

slice ~168

Create a slice (cut plane) visualization.

NameTypeReqDescription
camerastringCamera preset
colormapstringColor map preset
field_namestringyesField to visualize on the slice
file_pathstringyesPath to simulation file
heightOverride height in pixels (must set both width and height, or neither)
normalSlice plane normal [nx, ny, nz]
originSlice plane origin [x, y, z]
purposestringResolution preset — "analyze" (480p), "preview" (720p), "publish" (1080p)
timestepTimestep selection
widthOverride width in pixels (must set both width and height, or neither)

No output schema declared.

No examples provided.

split_animate ~205

Create a split-pane synchronized animation with multiple views. Render 2-4 panes in a grid layout, combining 3D visualizations with time-series graphs. All panes are timestep-synchronized and output as a single GIF or PNG sequence.

NameTypeReqDescription
file_pathstringyesPath to simulation file (PVD, foam, etc.)
fpsintegerFrames per second (15-60)
gifbooleanGenerate animated GIF (True) or PNG sequence only (False)
layoutGrid layout {"rows": 2, "cols": 2, "gap": 4}
panesarrayyesList of pane definitions (render or graph)
resolutionTotal output [width, height] in pixels
speed_factornumberPlayback speed (1.0=real-time, 5.0=5x fast-forward)
time_range[start, end] physics time range

No output schema declared.

No examples provided.

streamlines ~202

Create a streamline visualization for vector fields.

NameTypeReqDescription
camerastringCamera preset
colormapstringColor map preset
file_pathstringyesPath to simulation file
heightOverride height in pixels (must set both width and height, or neither)
max_lengthnumberMaximum streamline length
purposestringResolution preset — "analyze" (480p), "preview" (720p), "publish" (1080p)
seed_point1Start of seed line [x, y, z]
seed_point2End of seed line [x, y, z]
seed_resolutionintegerNumber of seed points
timestepTimestep selection
vector_fieldstringyesName of the vector field (e.g., "U")
widthOverride width in pixels (must set both width and height, or neither)

No output schema declared.

No examples provided.

volume_render ~225

Volume render 3D data (CT, MRI, CFD fields) with transfer function presets. Presets: generic, ct_bone, ct_tissue, mri_brain, thermal, isosurface_like

NameTypeReqDescription
backgroundBackground preset
colormapstringColor map preset
field_nameScalar field to render, None for active scalars
file_pathstringyesPath to volumetric data (VTI, VTK structured grid, etc.)
heightImage height in pixels
lightingLighting preset
output_filenamestringOutput filename
qualitystringRender quality (draft/standard/cinematic/ultra/publication)
scalar_range[min, max] for color scale
timestepSpecific timestep, "latest", or None
transfer_presetstringOpacity preset (ct_bone, ct_tissue, mri_brain, thermal, generic, isosurface_like)
widthImage width in pixels

No output schema declared.

No examples provided.

Common questions

What is the viznoir MCP server?

viznoir is an MCP server listed in the public MCP registry as io.github.kimimgo/viznoir. Cinema-quality science visualization for AI agents, headless VTK via MCP. This page covers its PyPI package (viznoir).

Is the viznoir MCP server safe to use?

viznoir scores 64 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the viznoir MCP server expose?

viznoir exposes 23 tools: inspect_data, render, slice, contour, clip, and 18 more. Their descriptions and schemas cost roughly 4,297 tokens of context every time the server is loaded.

Is the viznoir MCP server still maintained?

viznoir is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.