openPASOBLOCK
openPASO (formerly OASiS): an MCP server that lets an AI model run nine finite-element and multiphysics codes, with curated knowledge, verified execution and cross-code coupling. Under active development; contributions welcome.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
openPASO
open Platform for Agentic Simulation and Optimization
Describe a physics problem in plain words. An AI model picks a solver, writes its input, runs it, and checks the answer.
Click the film to watch it in full quality on the documentation website.
[!WARNING] openPASO is under active development, and we invite you to help. It works and is used for
678b3ab53bf0OBSERVED · 2026-10-09Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add openpaso-ui --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN} --env OPENROUTER_API_KEY=${OPENROUTER_API_KEY} -- npx -y [email protected]{
"mcpServers": {
"openpaso-ui": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
"CLAUDE_CODE_OAUTH_TOKEN": "${CLAUDE_CODE_OAUTH_TOKEN}",
"OPENROUTER_API_KEY": "${OPENROUTER_API_KEY}"
}
}
}
}Exposed tools (64)
51 read · 13 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
audit_results | read | Check your OWN result files for the failures that most often sink a |
benchmark_poisson_cross_solver | read | Quick benchmark: Poisson on unit square across all available solvers. |
benchmark_problem | write | Run the same physics problem on all available backends and compare. |
browse_solver_tests | read | Browse real test/example files from a solver |
build_source | write | Run the build recipe (CMake + ninja, or pip install -e .) for a |
check_input | read | Name the defects of an input deck or script BEFORE it runs: the setup checks the run |
check_simulation_quality | write | Run quality checks on a simulation BEFORE running it. |
compare_solvers | read | Compare results from multiple solver runs side by side. |
couple | read | GENERAL partitioned multi-code coupling — works for ANY physics/coupling. |
couple_levels | read | EVERY PRESCRIBED MESH LEVEL IN ONE CALL -- the same partitioned coupling as |
couple_precice | read | GENERAL preCICE coupling of ARBITRARY codes/paradigms, end-to-end. |
coupled_solve | read | LEGACY cross-solver coupling — FIXED toy geometries only. PREFER `couple`. |
deep_validate | read | Deep validation of solver input — catches physics errors, not just syntax. |
developer | read | Developer tools: architecture, source files, capabilities matrix. |
discover | read | Discover available solvers and their capabilities. |
discover_sources | read | Find source trees + binaries for every backend by scanning the |
ensure_source | read | One-shot: discover → fetch if missing → optionally build if no |
examples | read | Find and retrieve example input files from solver test suites. |
fetch_source | read | Clone the canonical upstream source for a backend into |
generate_input | read | Generate a complete, runnable input for a solver backend. |
generate_mesh | read | Generate a mesh using Gmsh for non-trivial geometries. |
get_coupling_knowledge | read | Complete knowledge for partitioned multi-code coupling via `couple`. |
get_example_input | read | Retrieve a complete, runnable example input file. |
get_example_inputs | read | Get working example input files for a given physics module. |
get_input_file_guide | read | Get a comprehensive guide for writing input files for a solver. |
get_input_schema | read | Get the full input schema for a solver |
get_job_status | read | Check the status of a simulation job. |
get_module_info | read | Get detailed information about a specific physics module on a specific solver. |
get_physics_knowledge | read | Get domain knowledge for a physics module from a specific solver backend. |
get_precice_knowledge | read | Complete knowledge for preCICE coupling via `couple_precice`. |
get_solver_architecture | read | Get the source code architecture and extension points for a solver backend. |
get_solver_capabilities_matrix | read | Get a comprehensive capabilities matrix across all available backends. |
get_solver_info | read | Get detailed information about a specific solver backend. |
get_tsi_knowledge | read | Get complete knowledge for thermo-structural interaction (TSI) coupling. |
list_jobs | read | List all simulation jobs from this session. |
list_physics | read | List all physics problems solvable by available backends. |
list_solver_source_files | read | List source files matching a pattern in a solver |
list_solvers | read | List all registered FEM solver backends and their availability status. |
list_template_variants | read | List all available template variants for a solver and/or physics module. |
list_tutorials | read | List available tutorial examples for a solver backend. |
parameter_study | write | Run a parameter study: same simulation with different parameter values. |
plot_all_fields | read | Generate PNG plots for ALL fields in a simulation result. |
plot_result | read | Generate a publication-quality visualization of simulation results. |
post_process | write | Extract field statistics from simulation results. |
prepare_simulation | write | Prepare everything needed to set up a simulation — in ONE call. |
query_documentation | read | Search solver documentation for a specific topic. |
read_solver_test_file | read | Read the content of a specific test/example file from a solver. |
recommend_solver_for | read | Recommend the best available solver for a given physics problem. |
rediscover_backends | read | Probe the system for solver backends and report findings. |
reload_catalog | read | Hot-reload the per-backend KNOWLEDGE dicts from disk. |
restart_simulation | write | Restart a completed simulation from its last checkpoint. |
run_simulation | write | Run a simulation directly with input content. |
run_with_generator | write | Run a generator script that creates an input file, then execute the solver. |
search_examples | read | Search for example input files across all backends. |
session_insights | read | Review knowledge discovered during this session or from saved |
setup_backend | write | Guided backend setup: detect, plan, install, verify, persist. |
submit_critic_review | write | Put an independent critic |
transfer_field | write | Extract field values at an interface from a VTU file and format for transfer. |
validate_input | read | Validate solver-specific input content before running. |
validate_physics | read | Validate simulation parameters against physics constraints. |
verify_interface_flux | read | On a COUPLED task: is your interface flux the right sign, and do |
verify_mesh_independence | read | Heuristic mesh-independence study for problems WITHOUT an exact |
verify_pde_consistency | read | Does your field actually satisfy the equation the task stated? |
visualize | write | Post-process and visualize simulation results. |
Trust audit
BLOCKgrade F · trust 39/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (7 observation(s))
- Network
- declared (14 observation(s))
- Shell
- declared (11 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (25)
F_SRC = lambda x, y: eval(_code, {"__builtins__": {}}, dict(_names, x=x, y=y)) + 0.0 * x # noqa: E731,F811return lambda x, y: eval(code, {"__builtins__": {}}, dict(names, x=x, y=y)) + 0.0 * xreturn lambda *a: eval(code, {"__builtins__": {}}, dict(env, **dict(zip(names, a)))) + 0.0 * a[0]return eval(code, {"__builtins__": {}}, env) + 0.0 * xreturn (eval(_bx, {"__builtins__": {}}, env) + 0.0 * x, eval(_by, {"__builtins__": {}}, env) + 0.0 * x)?)[ \r ]*`,Qw=`[̀-ͯ]`,$w=RegExp(Qw+`+$`),eT=`(`+qw+`+)|`+(Zw+`|`)+`([!-\\[\\]-‧-豈-]`+(Qw+`*`)+`|[\ud800-\udbff][\udc00-\udfff]`+(Qw+`*`)+`|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5`+(`|`+Xw)+(
IMPORTANT: Always call this before writing new input files to study
mod = importlib.import_module(module)
mod = importlib.import_module(module)
mod = importlib.import_module(module_path, package=__name__)
mod = importlib.import_module(module_path, package=__name__)
raw_mod = importlib.import_module(module_path, package=__name__)
'/api': 'http://127.0.0.1:8080',
'/sandbox-file': 'http://127.0.0.1:8080',
"http://127.0.0.1:5173"],
r = await c.get(f"http://127.0.0.1:{port}/v1/models")base_url=f"http://127.0.0.1:{_MOCK_PORT}/v1",description="Poisson equation -Δu = f (UFL forms, DUNE backend)",
description="Maxwell equations: 2-D TE-mode scalar Helmholtz proxy (-Δu - k2u = f); full H(curl) via NGSolve",
description="Eigenvalue problem -Δu = λu via shift-invert inverse iteration",
description="Helmholtz equation -Δu - k2u = f with MMS verification",
description="Transient heat du/dt - alpha*Δu = f via implicit Euler time-stepping",
.windsurfrules
return hashlib.sha1(text.encode("utf-8", "replace")).hexdigest()"<config>/../../../include exists) and then globs for a "
Gates applied: no_behavioural_pass.
678b3ab53bf0full audit observations/trust-audit/mcp-server/hereon-institutems__openpaso.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-09 | 678b3ab53bf0 | BLOCK | F | 39 | first audit |
Questions
What is the openPASO MCP server?
openPASO (formerly OASiS): an MCP server that lets an AI model run nine finite-element and multiphysics codes, with curated knowledge, verified execution and cross-code coupling. Under active development; contributions welcome.
What tools does openPASO expose?
64 in total: 51 read-only, 13 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is openPASO safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (39/100) and found 7 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does openPASO need?
It reads ANTHROPIC_API_KEY, CLAUDE_CODE_OAUTH_TOKEN and OPENROUTER_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does openPASO run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as openpaso-ui at 1.1.0.
How current is this page?
The grade is for one exact copy of the source (678b3ab53bf0), read on 2026-10-09. The repository is watched and re-audited when it changes.