Skip to main content
Glama
salome-mcp

salome-mcp

by gnshb

SalomeMCP

SALOME Model Context Protocol for agentic use

Overview

This repository provides three components:

  1. SALOME GUI plugin to start/stop the local bridge port.

  2. SALOME-side bridge (salome_bridge.py) that executes GEOM/SMESH operations.

  3. MCP server (salome-mcp) that agent clients connect to.

Related MCP server: COMSOL MCP Server

Requirements

  1. SALOME 9.x

  2. Python 3.10+

  3. uv

Setup

1) Install Python dependencies

cd /path/to/salome-mcp
uv sync

2) Install SALOME plugin files

mkdir -p ~/.config/salome/Plugins   # or wherever your plugins folder is located
cp salome_plugin/*.py salome_bridge.py ~/.config/salome/Plugins/

Configure MCP Client

It is recommended that you set up the MCP server inside a particular project instead of globally.

Claude Code CLI (from inside your project root)

claude mcp add --scope project salome -- uv run --directory /path/to/salome-mcp salome-mcp

Codex CLI (from inside your project root)

mkdir -p .codex && cat > .codex/config.toml <<'EOF'
[mcp_servers.salome]
command = "uv"
args = ["run", "--directory", "/path/to/salome-mcp", "salome-mcp"]
EOF

Custom Host and Port

By default, the bridge uses localhost:1234. You can set your custom host/port in the SALOME GUI bridge settings, then simply prompt your agent to connect to that.

Usage

  1. Start SALOME and start: Tools -> PLugins -> MCP Bridge -> Start (default)

  2. Open your agent and prompt it to "ping salome". The agent should be able to use check_salome_status and return success

  3. The agent should now be able to make tool calls based on your prompts. Check samples

  4. End session with MCP Bridge -> Stop

Tool Coverage

These are the tool calls that can be used by your agent. You probably don't need to know this

General

  • ping_salome, check_salome_status, get_study_info, get_scene_summary, list_study_objects: Session and study status/overview

Geometry (GEOM)

  • create_box, create_cylinder, create_sphere, create_naca4_airfoil: Primitive creation

  • translate_object, rotate_object, copy_object, duplicate_object, rename_object, delete_object: Transforms and object lifecycle

  • boolean_operation, fuse_objects, cut_objects, common_objects: Boolean operations (fuse, cut, common)

  • create_group, create_groups, create_surface_group, create_volume_group: Group creation

  • make_partition, explode_shape, import_geometry, export_geometry, get_object_info, list_subshapes: Partition, explode, I/O, and inspection

Mesh (SMESH)

  • import_mesh, export_mesh: Mesh I/O

  • create_mesh: Standard mesh setup with hypotheses

  • create_mesh_with_hypotheses: Explicit algorithm + detailed hypotheses meshing

  • compute_mesh, get_mesh_info: Mesh compute and statistics

Advanced

  • execute_salome_code (raw Python code)

WARNING

execute_salome_code executes arbitrary Python inside SALOME. Keep bridge access local and trusted.

Samples

Prompt 1

lets do these step by step: 1. make a cylinder r = 4 h =8 and place it along x axis 2. make two more cylinders of r = 2 and h = 4 3. place these cylinders on either of the circular ends 4. carve a cylinder out of these smaller ones to make two shells of rout = 2 and rin = 1 5. fuse all 6. create the single vol group 7. make surface groups inlet outlet and walls 8. make a mesh with netgen 1d 2d 3d very fine mesh. 9. compute mesh and report its stats

image

Prompt 2

1.make a naca 4412 airfoil 2. create a fluid box region around it for wind tunnel testing 3. cut the region for the air 4. make a partition and name all surface and vol groups 5. generate a netgen 1d2d3d coarse mesh 6. report mesh stats

image

Available Tools

36 tools
boolean_operationC

Perform boolean operation on GEOM objects.

operation: fuse | cut | common base_object/tool_objects: entry IDs or object names

Inputs: operation (required), base_object (required), tool_objects (required), result_name. Returns: result

check_salome_statusA

Standard health check for bridge accessibility and active study.

Returns host/port, reachability, ping message, and study metadata when available.

Inputs: no named parameters. Returns: result

common_objectsB

Intersect GEOM objects (common region).

Inputs: base_object (required), tool_objects (required), result_name. Returns: result

compute_meshD

Compute mesh and return basic mesh statistics.

Inputs: mesh_ref (required). Returns: result

copy_objectC

Create a GEOM copy of an object.

Inputs: source_ref (required), name. Returns: result

create_boxB

Create a GEOM box by dimensions.

Inputs: dx (required), dy (required), dz (required), name. Returns: result

create_cylinderC

Create a GEOM cylinder at origin.

Inputs: height (required), radius (required), name. Returns: result

create_groupC

Create GEOM group from subshape IDs.

Inputs: shape_ref (required), subshape_ids (required), subshape_type (required), name. Returns: result

create_groupsA

Create multiple GEOM groups in one call.

Each group item supports: name, subshape_type, subshape_ids.

Inputs: groups (required), shape_ref (required), replace_existing. Returns: result

create_meshC

Create a mesh definition on GEOM object using standard hypotheses.

surface_algorithm: triangle | quadrangle | none volume_algorithm: tetrahedron | hexahedron | none

Inputs: shape_ref (required), mesh_name, segment_count, max_element_area, +3 more. Returns: result

create_mesh_with_hypothesesB

Create mesh with explicit algorithm and detailed hypotheses.

Supported algorithm values:

  • netgen_1d2d3d | netgen_2d3d | netgen_1d2d | netgen_2d

  • tetrahedron | hexahedron | triangle | quadrangle

Common hypotheses keys:

  • segment_count

  • fineness (very_coarse/coarse/moderate/fine/very_fine/user_defined)

  • max_size, min_size, growth_rate

  • nb_seg_per_edge, nb_seg_per_radius

  • second_order, optimize, use_surface_curvature, fuse_edges, quad_allowed

  • max_element_area, max_element_volume

Inputs: shape_ref (required), compute, algorithm, mesh_name, +1 more. Returns: result

create_naca4_airfoilA

Create a NACA 4-digit airfoil (3D solid if span>0, 2D profile if span=0).

Inputs: code (required), name, span, chord, +2 more. Returns: result

create_sphereB

Create a GEOM sphere at origin.

Inputs: radius (required), name. Returns: result

create_surface_groupD

Create FACE group convenience wrapper.

Inputs: shape_ref (required), subshape_ids (required), name. Returns: result

create_volume_groupD

Create SOLID group convenience wrapper.

Inputs: shape_ref (required), subshape_ids (required), name. Returns: result

cut_objectsB

Cut GEOM objects (base minus tools).

Inputs: base_object (required), tool_objects (required), result_name. Returns: result

delete_objectC

Delete GEOM study object by entry/name.

Inputs: object_ref (required), with_children. Returns: result

duplicate_objectB

Create N GEOM duplicates from one source object.

Inputs: source_ref (required), count, name_prefix. Returns: result

execute_salome_codeB

Execute arbitrary Python code in the SALOME process.

The executed code can set a result variable that will be returned.

Inputs: code (required). Returns: result

explode_shapeC

Explode GEOM object to subshapes and optionally add them to study.

Inputs: shape_ref (required), add_to_study, result_prefix, subshape_type, +1 more. Returns: result

export_geometryC

Export GEOM object to BREP/STEP/IGES/STL.

Inputs: filepath (required), shape_ref (required), format, ascii_stl, +1 more. Returns: result

export_meshC

Export mesh to MED/UNV/STL.

Inputs: filepath (required), mesh_ref (required), format, ascii_stl, +1 more. Returns: result

fuse_objectsC

Fuse GEOM objects (explicit convenience wrapper for boolean fuse).

Inputs: base_object (required), tool_objects (required), result_name. Returns: result

get_mesh_infoB

Return mesh counts and detailed SMESH info.

Inputs: mesh_ref (required). Returns: result

get_object_infoA

Return GEOM object info: name, bbox, basic properties, and subshape counts.

Inputs: object_ref (required), precise_bbox. Returns: result

get_scene_summaryC

Return GEOM and SMESH scene summary for the active study.

Inputs: limit_per_component. Returns: result

get_study_infoB

Return high-level information about the current SALOME study.

Inputs: no named parameters. Returns: result

import_geometryC

Import GEOM from BREP/STEP/IGES.

Inputs: filepath (required), name, format, ignore_units. Returns: result

import_meshC

Import mesh from MED/UNV/STL/CGNS/GMF.

Inputs: filepath (required), name, format. Returns: result

list_study_objectsC

List study objects, optionally filtered by component (GEOM, SMESH, ...).

Inputs: limit, component. Returns: result

list_subshapesA

List subshape IDs (FACE/EDGE/VERTEX/SOLID/...) for a GEOM object.

Inputs: shape_ref (required), subshape_type, sorted_centres. Returns: result

make_partitionC

Create GEOM partition from objects and optional tools.

Inputs: object_refs (required), tool_refs, shape_type, result_name, +1 more. Returns: result

ping_salomeA

Check connectivity to the SALOME bridge process.

Inputs: no named parameters. Returns: result

rename_objectB

Rename GEOM study object (entry ID or existing name).

Inputs: new_name (required), object_ref (required). Returns: result

rotate_objectA

Rotate a GEOM object in place around X/Y/Z axis (degrees, no new copy).

Inputs: source_ref (required), angle_degrees (required), axis. Returns: result

translate_objectB

Translate a GEOM object in place by vector components (no new copy).

Inputs: dx (required), dy (required), dz (required), source_ref (required). Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.5/5.0

    Scored across 36 tools

    Disambiguation2/5

    Several tools have overlapping purposes: boolean_operation duplicates fuse_objects/cut_objects/common_objects, create_group/create_groups/create_surface_group/create_volume_group are redundant, and copy_object vs duplicate_object are similar. This overlapping surface will confuse an agent.

    Naming Consistency4/5

    Most names follow a consistent verb_noun pattern (get_, create_, list_, export_, import_, etc.). Minor deviations include 'boolean_operation' (not a verb) and the somewhat inconsistent group creation variants (create_group, create_groups, create_surface_group, create_volume_group), but overall the naming is predictable.

    Tool Count2/5

    With 36 tools, the server is over-scoped for the domain. While SALOME is complex, the tool set includes many near-duplicates and convenience wrappers that inflate the count beyond what is necessary, making it heavy and harder to navigate.

    Completeness4/5

    The tool surface covers the main geometry and meshing workflows: creation, import/export, boolean operations, grouping, transformations, and mesh generation/computation. Minor gaps exist (e.g., no scaling, no mesh deletion explicitly but delete_object likely covers it), but core operations are well represented.

    Maintenance

    ActivityInactive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      Not graded
      maintenance
      An MCP server that enables AI agents to interact with Nastran FEA models by reading, writing, and analyzing BDF and OP2 files. It provides tools for mesh quality assessment, geometric analysis, and automated report generation for structural engineering workflows.
      3
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      A local MCP server that enables AI agents to create and edit parametric CAD models through natural language, using a validated operation graph that compiles to real geometry.
      1
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      A parametric CAD workspace as an MCP server, enabling agents to create, edit, and manipulate 3D models through tools, with a live studio UI and STL/OBJ import/export.
      12
      58 npm
      4
      MIT