RSAP MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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