RSAP MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| rsap_connectA | Connect to (or launch) Autodesk Robot Structural Analysis Professional. Call this once before other tools, unless auto-connect is enabled. If Robot is already open it attaches to it; otherwise it starts Robot. Args: visible: Show the Robot application window. interactive: Keep Robot interactive so its GUI refreshes as the model changes. |
| rsap_statusA | Report connection status and a summary of the current Robot model. |
| rsap_new_projectA | Create a new, empty Robot project. Args: project_type: One of shell, frame_3d, frame_2d, truss_3d, truss_2d, plate, grillage. |
| rsap_open_projectA | Open an existing Robot model from an absolute .rtd path. Args: path: Absolute path to the .rtd file on the machine running Robot. |
| rsap_save_projectA | Save the current model. Pass a path to Save As, or omit to Save in place. Args: path: Absolute .rtd path to save to (Save As), or None to overwrite the currently open file. |
| rsap_close_projectA | Close the current project (Robot itself stays open). |
| rsap_add_nodeA | Create a single node at the given coordinates (metres). Args: x: X coordinate (m). y: Y coordinate (m). z: Z coordinate (m, vertical). number: Explicit node number; auto-assigned (next free) if omitted. |
| rsap_add_nodesB | Create many nodes at once. Args: nodes: List of {x, y, z, number?} node specifications (coordinates in m). |
| rsap_add_barA | Create a bar (beam/column) between two existing nodes, optionally assigning an existing section and/or material label. Args: start_node: Start node number. end_node: End node number. number: Explicit bar number; auto-assigned if omitted. section: Name of an existing section label to assign (see rsap_define_section). material: Name of an existing material label to assign (see rsap_define_material). |
| rsap_add_barsB | Create many bars at once. Args: bars: List of {start_node, end_node, number?, section?, material?} specs. |
| rsap_list_nodesA | List nodes with their coordinates. Args: limit: Maximum number of nodes to return. |
| rsap_list_barsA | List bars with their start/end node numbers. Args: limit: Maximum number of bars to return. |
| rsap_delete_objectsA | Delete nodes or bars matching a selection string. Args: object_type: 'node' or 'bar'. selection: Robot selection text, e.g. '1to10 15' or '1 2 3'. |
| rsap_define_sectionA | Define a bar section label by loading a profile from Robot's active section database (e.g. an I-profile, HEA, IPE, tube...). The section database must already be active in Robot's job preferences and must contain the requested profile name. Args:
name: Name to give the new section label (often the profile name itself).
db_section: Profile name to load from the section database. Defaults to |
| rsap_define_materialA | Define a material label, either loaded from Robot's material database or from explicit elastic properties. Args: name: Name for the new material label. from_database: Load a named material from Robot's database (e.g. 'S235', 'C30/37'). If given, the explicit properties below are ignored. material_type: One of steel, concrete, timber, aluminium, other. e: Young's modulus E (Pa). nu: Poisson's ratio (dimensionless). ro: Unit WEIGHT density (N/m^3) — Robot's RO is a weight density, not mass. kirchoff: Shear modulus G (Pa) — stored in Robot's 'Kirchoff' property. |
| rsap_assign_sectionA | Assign an existing section label to a set of bars. Args: section_name: Name of a section label defined with rsap_define_section. bars: Robot selection text, e.g. '1to20' or '1 2 3'. |
| rsap_assign_materialA | Assign an existing material label to a set of bars. Args: material_name: Name of a material label defined with rsap_define_material. bars: Robot selection text, e.g. '1to20' or '1 2 3'. |
| rsap_list_sectionsA | List the names of section labels defined in the model. |
| rsap_define_supportA | Define a support (boundary condition) label. True = restrained. Common presets: a pinned support is ux=uy=uz=True, rx=ry=rz=False; a fully fixed support is all True; a roller restrains only the relevant translation. Args: name: Name for the support label (e.g. 'pinned', 'fixed'). ux: Restrain translation X. uy: Restrain translation Y. uz: Restrain translation Z. rx: Restrain rotation X. ry: Restrain rotation Y. rz: Restrain rotation Z. |
| rsap_assign_supportA | Assign an existing support label to a set of nodes. Args: support_name: Name of a support label defined with rsap_define_support. nodes: Robot selection text, e.g. '1 4' or '1to4'. |
| rsap_add_load_caseB | Create a simple load case. Args: name: Case name, e.g. 'Self-weight', 'Live load', 'Wind X'. nature: permanent/dead, live/exploitation, wind, snow, seismic, temperature, accidental. analysis: static_linear (default), static_nonlinear, modal. number: Explicit case number; auto-assigned if omitted. |
| rsap_add_self_weightA | Add a self-weight (dead) load to a case. Args: case_number: Target load case number. direction: Gravity direction: z- (default), z+, x-, x+, y-, y+. factor: Multiplier on self-weight (1.0 = full self-weight). selection: 'all' for the whole structure, or a bar selection like '1to20'. |
| rsap_add_nodal_forceA | Add a nodal force/moment to a case (global axes). Args: case_number: Target load case number. nodes: Node selection text, e.g. '5' or '5 6 7'. fx: Force X (N). fy: Force Y (N). fz: Force Z (N). cx: Moment X (N·m). cy: Moment Y (N·m). cz: Moment Z (N·m). |
| rsap_add_bar_uniform_loadA | Add a uniformly distributed load along bars. Args: case_number: Target load case number. bars: Bar selection text, e.g. '1to10'. px: Intensity along X (N/m). py: along Y (N/m). pz: along Z (N/m). local: Interpret px/py/pz in the bar's local axes (default global). projected: Apply as projected load. |
| rsap_add_bar_point_loadA | Add a concentrated (point) force/moment on bars. Args: case_number: Target load case number. bars: Bar selection text. fx, fy, fz: Forces (N). cx, cy, cz: Moments (N·m). position: Location along the bar. Relative (0–1) if relative=True, else metres from end A. relative: Treat 'position' as a 0–1 fraction of the bar length. local: Interpret forces in the bar's local axes. |
| rsap_add_combinationA | Create a load combination from weighted load cases. Args: name: Combination name, e.g. 'ULS 1.35G + 1.5Q'. factors: List of {case, factor} terms, e.g. [{case:1, factor:1.35},{case:2, factor:1.5}]. combo_type: 'uls' or 'sls'. nature: Combination nature (usually 'permanent'). number: Explicit combination number; auto-assigned if omitted. |
| rsap_list_load_casesA | List load cases and combinations in the model. |
| rsap_generate_meshA | Generate the finite-element mesh. Note: FE meshing only applies to surface/panel (shell) models, and Robot generates it automatically when you run rsap_calculate(). Pure bar/frame models do not need an explicit mesh, so for them this is a no-op. |
| rsap_calculateA | Run the structural analysis (solve the model). This blocks until Robot finishes calculating. After it returns, use the results tools (rsap_bar_forces, rsap_node_displacement, rsap_node_reaction). |
| rsap_calculation_statusA | Report whether analysis results are currently available. |
| rsap_bar_forcesA | Internal forces at a point along a bar (local axes). Args: bar: Bar number. case: Load case or combination number. position: Relative position along the bar, 0.0 (start) to 1.0 (end). |
| rsap_bar_force_envelopeB | Sample a bar along its length and return the extreme internal forces. Args: bar: Bar number. case: Load case or combination number. samples: Number of equally spaced sample points (>= 2). |
| rsap_node_displacementB | Nodal displacement (global axes). Args: node: Node number. case: Load case or combination number. |
| rsap_node_reactionA | Support reaction at a node (global axes). Args: node: Node number (must be a supported node). case: Load case or combination number. |
| rsap_results_summaryA | Summarise results for a case: peak nodal displacement and peak bar moment. Args: case: Load case or combination number. max_nodes: Cap on nodes scanned (largest |Uz|). max_bars: Cap on bars scanned (largest |My| at mid-span). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| enums_reference | Cheatsheet mapping the friendly names used by tools to RobotOM constants. |
| sections_reference | Guidance on defining sections and materials. |
| workflow_cheatsheet | The typical end-to-end modelling workflow. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nhantruong96/rsap-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server