resinsight
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@resinsightWhat are the property stats at the current time step?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
resinsight-live
Lets Claude — Claude Code, Cowork, or any MCP client — look at and drive a running ResInsight through its Python/gRPC API, and render pictures of reservoir simulation runs without touching the GUI.
Follow the user's session.
ri_watchreports what changed in the GUI since the last call (time step, cell result, camera, picked cells, cases or views opened).ri_selected_cellsandri_picked_cell_reportread the cells the user clicked.ri_snapshotreturns an image of a 3D view.Query the model.
ri_status,ri_overview,ri_view,ri_properties,ri_property_stats,ri_cell_values,ri_time_steps,ri_wells,ri_summary_cases,ri_summary_values.Drive the view.
ri_open,ri_create_view,ri_set_time_step,ri_set_cell_result,ri_summary_plot, andri_execute_commandfor anything else in ResInsight's command API.Render pictures of a run.
ri_renderstarts a private ResInsight, writes PNGs (properties at chosen steps, IJK slices, camera presets, summary plots), closes it and returns the images inline. The same renderer is a command-line tool,render.py.
New users: start with GETTING_STARTED.md.
The plugin also ships the resinsight-pictures skill, which tells Claude how to choose slices,
steps and cameras, and to read the images before describing them.
Requirements
ResInsight with its Python interface. Official releases (https://github.com/OPM/ResInsight/releases) should include it, but so far this plugin has only been tested with a source build on macOS; see docs/building-resinsight-macos.md.
Python ≥ 3.11, macOS or Linux. The launcher
bin/run-servercreates its own environment in~/.cache/resinsight-liveon first start (about half a minute); later starts are instant.Matching
ripsversion.ripsmust have the same year.month version as ResInsight. The launcher installs the newest one; for an older ResInsight setRIPS_VERSION, e.g.RIPS_VERSION=2026.6.1.1.
Related MCP server: Ansys Workbench MCP
Install
Claude Code
claude plugin marketplace add https://github.com/hnil/resinsight-live
claude plugin install resinsight-live@hnil-reservoir-toolsthen restart Claude Code.
Any other MCP client (stdio):
{ "mcpServers": { "resinsight-live": { "command": "/path/to/resinsight-live/bin/run-server" } } }or one shared HTTP server for several clients:
bin/run-server --http --port 8765, then use http://127.0.0.1:8765/mcp. The server has no
authentication and controls a desktop application, so it refuses any other --host unless you
add --allow-remote.
Claude Desktop. Quit the app completely (it rewrites its config file while running), then
run python3 install_desktop.py.
Cowork. The server has to run on the machine where ResInsight runs. Cowork may not be able to
read files the server writes, which is why ri_render returns its images inline. Not yet tested
end to end.
Configuration
Variable | Purpose |
| ResInsight binary used by |
| Pin |
| Port of the ResInsight to drive. Default: the one answering on 50051–50070; with several, |
| Python used to create the environment (default |
| Where that environment lives. |
| Directories (separated by |
Put these in ~/.config/resinsight-live/env, one NAME=value per line. bin/run-server reads
that file, so the settings apply to every client — including apps started from the macOS Dock,
which never see variables from your shell profile:
RESINSIGHT_EXECUTABLE=/Applications/ResInsight.app/Contents/MacOS/ResInsight
RESINSIGHT_LIVE_ALLOWED_DIRS=$HOME/simulations:$HOME/projectsUpgrading from 0.1 (resinsight-mcp): the old ~/.config/resinsight-mcp/env and
RESINSIGHT_MCP_* names are still read, with a warning, until the next release.
Limiting which files the server touches
Claude Code's sandbox confines only its Bash tool. MCP servers, and the ResInsight that
ri_render starts, run outside it, and permission rules such as Read(...) do not apply to
MCP tools either. With RESINSIGHT_LIVE_ALLOWED_DIRS set, the server enforces the limit itself:
every path given to
ri_open,ri_render(case,out,template) and every file or folder argument ofri_execute_commandmust be absolute and resolve, after following symlinks, inside one of the directories;exports that write to ResInsight's global export folder are refused until
setExportFolderhas been called with an allowed directory, andsaveProjectneeds an explicitfilePath;commands with file arguments this server does not know about are refused.
runOctaveScript is always disabled, since it runs arbitrary code.
What the limit does not cover: files ResInsight opens by itself — the UNRST/SMSPEC next to a
case (same directory), and the case files a project (.rsp) refers to — and anything done in the
ResInsight GUI. ri_render and ri_snapshot write their own images to the system temp directory
when no output folder is given.
Starting ResInsight on macOS
Start the binary, not the app bundle:
/Applications/ResInsight.app/Contents/MacOS/ResInsight &An app launched with open or from Finder gets no permission for ~/Documents unless you grant
it in System Settings → Privacy & Security, and then cannot load cases stored there.
render.py
~/.cache/resinsight-live/venv/bin/python render.py RUN_DIR --list
~/.cache/resinsight-live/venv/bin/python render.py RUN_DIR -o OUT \
-p TEMP,STRESSXX -s first,last --slice j=6 -z 5 -v WBHP:B-3HBehaviour worth knowing
The server keeps no state of its own except
ri_watch's baseline, so each client sees changes since its own last call.Default ids of
-1mean "the first case/view"; id0is a real id.The server never closes or resizes the ResInsight it drives (
closeProjectis refused).ri_render's private instance listens on a port outside 50051–50070, so other clients' scans never attach to it.
Implementation notes
Things that were not obvious when building this:
Cell filters cannot be created over gRPC: the
DataFilterCollectionAPI makes filters that no view uses.render.pywrites the slice into a saved project file (<CellFilters><CellRangeFilter>…) and reopens it.CameraMatrixis the world-to-eye view matrix, row-major, with the model centred at the origin.PdmObject.update()writes back every field, including a stalecurrent_time_step: set camera and z-scale beforeset_time_step, never after.Summary plots land on a 2×2 page by default; set the
MultiSummaryPlotto 1×1 before exporting, and export the page rather than theSummaryPlot.rips sends its working directory to ResInsight on connect, and the connection fails if ResInsight may not read that folder; the launcher therefore starts the server from
$HOME.
Related projects
resinsight-mcp by Lukas Mosser is an independent ResInsight MCP server. Both can be installed together: names, environments and caches differ, and each should drive its own ResInsight instance.
License
GPL-3.0-or-later, see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Official MCP server for Softhills 3D/2D Visualization SDKs, API documentation, and code examples.
MCP server for the Seline Analytics API
Remote MCP server for product discovery catalog and retrieving product details.
MCP server for aerospace calculations: orbital mechanics, ephemeris, DSN operations, ...
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables MCP-compatible clients to render, inspect, and diagnose OpenMoonRay scenes through a local MoonRay runtime, with support for interactive viewing, scene validation, and render comparisons.25Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients like Codex to control Ansys Workbench and ICEM CFD locally, executing scripts, managing projects, and running simulations.2MIT
- AlicenseBqualityBmaintenanceEnables MCP clients to inspect and edit animation inside a running Cascadeur instance without Computer Use, including scene/object and skeleton rig inspection, bounded joint and Point-target pose edits, snapshots, playback observation, and FBX export.4372MIT
- AlicenseBqualityCmaintenanceEnables AI assistants and clients to control and automate FlexSim simulations via MCP tools for model operations, execution, node data access, FlexScript evaluation, results export, and batch what-if experiments.73MIT