Skip to main content
Glama
codersag

Mechanical MCP Server

by codersag
README.md
# ANSYS Mechanical MCP Server

A [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that connects any MCP-compatible AI client to ANSYS Mechanical via [PyMechanical](https://mechanical.docs.pyansys.com/) gRPC. Talk to your simulation in plain English.

https://github.com/user-attachments/assets/309952dc-dce0-4aa6-9b06-e8047f32c2de

## Compatible clients

Works with any MCP-compatible client, including:

- [Claude Desktop](https://claude.ai/download)
- [Cursor](https://www.cursor.com)
- [Windsurf](https://windsurf.ai)
- [VS Code](https://code.visualstudio.com) (with Copilot MCP support)
- [Continue](https://continue.dev)

## What it does

| Category | Capabilities |
|---|---|
| **Connection** | Connect to one or more running Mechanical instances by port |
| **Geometry** | List bodies, assign materials, suppress/unsuppress bodies |
| **Mesh** | Set element size, generate mesh, get statistics |
| **Boundary Conditions** | Fixed support, displacement, remote displacement, frictionless support, force, remote force, pressure, moment, gravity |
| **Solve & Results** | Solve, get status, modal frequencies, equivalent stress, directional deformation, principal stress, stress tool, reaction force |
| **Point Mass** | Convert a Part to a combined Point Mass (no extensions required), auto-create attachment Named Selection |
| **Named Selections** | List, delete |
| **Reports** | Generate DOCX or TXT simulation reports |
| **Scripting** | Run arbitrary IronPython directly in the Mechanical ACT API |

## Requirements

- ANSYS Mechanical 2023 R1 or later (with gRPC enabled)
- Python 3.10+

## Installation

```bash
git clone https://github.com/codersag/mechanical-mcp.git
cd mechanical-mcp
pip install -e .
```

To include DOCX report generation:

```bash
pip install -e ".[report]"
```

## MCP Client Configuration

Add the following to your MCP client's config file. The config file location varies by client:

| Client | Config file location |
|---|---|
| Claude Desktop (Windows) | `%APPDATA%\Claude\claude_desktop_config.json` |
| Claude Desktop (Mac) | `~/Library/Application Support/Claude/claude_desktop_config.json` |
| Cursor | `.cursor/mcp.json` in your project, or `~/.cursor/mcp.json` globally |
| Windsurf | `~/.codeium/windsurf/mcp_config.json` |

```json
{
  "mcpServers": {
    "mechanical-mcp": {
      "command": "ansys-mechanical-mcp"
    }
  }
}
```

Or if running from source:

```json
{
  "mcpServers": {
    "mechanical-mcp": {
      "command": "python",
      "args": ["C:/path/to/mechanical-mcp/mechanical_mcp_server.py"]
    }
  }
}
```

Restart your client after editing the config.

## Finding the Mechanical gRPC port

Mechanical exposes a gRPC server whose port you pass to `connect_to_mechanical`.

In Workbench (`Tools → Scripting → Run Script`):

```python
port = GetSystem("SYS").GetContainer(ComponentName="Model").StartGrpcServer()
print(port)
```

If you have multiple Mechanical systems open (e.g. Modal + Static Structural), run the script for each system by replacing `"SYS"` with the system name (e.g. `"SYS 1"`, `"SYS 2"`).

## Usage

1. Open ANSYS Mechanical (gRPC is enabled by default in 2023 R1+)
2. Find the port using one of the methods above
3. Connect to your Mechanical instance:

> "Connect to Mechanical on port 10000"

Then interact naturally:

> "Assign Structural Steel to all bodies"

> "Generate a mesh with 50mm element size"

> "Add a fixed support to the named selection called Base"

> "Solve the analysis and get the maximum von Mises stress"

> "Convert part Equipment1 to a point mass"

## Multiple Instances

You can connect to multiple Mechanical instances (e.g. Modal on port 51811, Static Structural on port 53038) by calling `connect_to_mechanical` with the relevant port. The server maintains one active connection at a time.

## License

Apache License 2.0 — see [LICENSE](LICENSE)