MCP Hub
Back to servers

pyNastran MCP Server

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.

Updated
Mar 1, 2026

pyNastran MCP Server

Python 3.10+ License: MIT MCP

A Model Context Protocol (MCP) Server for pyNastran, built with FastMCP. Enables AI agents to interact with Nastran FEA models.

Features

  • 🔧 BDF Tools: Read, write, and analyze Nastran input files
  • 📊 OP2 Tools: Extract results from Nastran output files
  • 🔍 Geometry Tools: Mesh quality checks and geometric analysis
  • 📝 Analysis Tools: Automated report generation
  • 🚀 FastMCP: Built with modern FastMCP framework
  • 🌐 Multiple Transports: stdio, SSE, and streamable-http

Installation

pip install pynastran-mcp

Or install from source:

git clone https://github.com/Shaoqigit/pynastran-mcp.git
cd pynastran-mcp
pip install -e .

Quick Start

Stdio Transport (Default)

For MCP clients like Cherry Studio, Claude Desktop:

pynastran-mcp

SSE Transport

# Default: host=127.0.0.1, port=8080
pynastran-mcp --transport sse

# Custom host and port
pynastran-mcp --transport sse --host 0.0.0.0 --port 8080

Streamable HTTP Transport (Production)

# Default: host=127.0.0.1, port=8080
pynastran-mcp --transport streamable-http

# Custom host and port
pynastran-mcp --transport streamable-http --host 0.0.0.0 --port 8080

MCP Client Configuration

Cherry Studio / Cursor / Claude Desktop

Add to your MCP client configuration:

{
  "mcpServers": {
    "pynastran": {
      "command": "pynastran-mcp"
    }
  }
}

See CHERRY_STUDIO_TUTORIAL.md for detailed setup instructions.

Available Tools

BDF Tools

ToolDescription
read_bdfRead BDF file and return model summary
get_model_infoGet detailed model information
write_bdfWrite model to new BDF file
get_nodesGet node coordinates
get_elementsGet element connectivity
get_materialsGet material properties
get_propertiesGet property definitions

OP2 Tools

ToolDescription
read_op2Read OP2 result file
get_result_casesList available result cases
get_stressExtract stress results
get_displacementExtract displacement results

Geometry Tools

ToolDescription
check_mesh_qualityCheck mesh quality metrics
get_model_boundsGet model bounding box

Analysis Tools

ToolDescription
generate_reportGenerate comprehensive analysis report

Usage Examples

With AI Agents

Once configured, you can ask your AI assistant:

"Read the BDF file at /path/to/model.bdf and tell me about the mesh"
"Analyze the stress results from /path/to/results.op2"
"Check the mesh quality and suggest improvements"
"Generate a report for my Nastran model"

Programmatic Usage

from pynastran_mcp.tools.bdf_tools import BdfTools
from pynastran_mcp.tools.op2_tools import Op2Tools

async def analyze_model():
    # BDF Analysis
    bdf_tools = BdfTools()
    summary = await bdf_tools.read_bdf("wing.bdf")
    print(summary)
    
    # OP2 Results
    op2_tools = Op2Tools()
    stresses = await op2_tools.get_stress("results.op2", element_type="CQUAD4")
    print(stresses)

Project Structure

pynastran-mcp/
├── pynastran_mcp/
│   ├── __init__.py
│   ├── server.py          # FastMCP server with all tools
│   └── tools/
│       ├── __init__.py
│       ├── bdf_tools.py   # BDF file operations
│       ├── op2_tools.py   # OP2 result operations
│       ├── geometry_tools.py  # Mesh quality checks
│       └── analysis_tools.py  # Report generation
├── pyproject.toml
├── README.md
└── examples/
    └── example_usage.py

Requirements

  • Python 3.10+
  • pyNastran >= 1.4.0
  • mcp >= 1.0.0 (with FastMCP)

Development

# Setup
git clone https://github.com/Shaoqigit/pynastran-mcp.git
cd pynastran-mcp
pip install -e ".[dev]"

# Run tests
pytest

# Code formatting
black pynastran_mcp/

License

MIT License - see LICENSE file

Acknowledgments

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please make sure to update tests as appropriate and follow the existing code style.

Reviews

No reviews yet

Sign in to write a review