https://github.com/daedalus/mcp-stl
https://github.com/daedalus/mcp-stl
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/daedalus/mcp-stl
- Owner: daedalus
- License: mit
- Created: 2026-04-04T04:57:19.000Z (3 months ago)
- Default Branch: master
- Last Pushed: 2026-04-22T14:51:51.000Z (2 months ago)
- Last Synced: 2026-04-22T16:33:23.257Z (2 months ago)
- Language: Python
- Size: 163 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# mcp-stl
[](https://pypi.org/project/mcp-stl/)
[](https://pypi.org/project/mcp-stl/)
[](https://codecov.io/gh/daedalus/mcp-stl)
[](https://github.com/astral-sh/ruff)
MCP server for editing STL 3D model files. Provides tools for parsing, viewing, and manipulating STL files through the Model Context Protocol.
## Install
```bash
pip install mcp-stl
```
## MCP Server
mcp-name: io.github.daedalus/mcp-stl
## Tools
### Reading & Writing
- **read_stl_file**: Read an STL file and return mesh data (vertices, normals, bounding box)
- **get_mesh_info**: Get summary information about an STL file without loading full geometry
- **write_stl**: Write mesh data to an STL file (ASCII or binary format)
### Transformations
- **translate_stl**: Translate (move) the mesh by specified X, Y, Z offsets
- **rotate_stl**: Rotate the mesh around X, Y, or Z axis by a given angle in degrees
- **scale_stl**: Scale the mesh by specified X, Y, Z factors
- **shear_stl**: Apply a shear transformation (shift one axis per unit along another)
- **mirror_stl**: Mirror (reflect) the mesh across the plane perpendicular to a given axis
- **rotate_stl_axis**: Rotate the mesh around an arbitrary axis vector (Rodrigues' formula)
- **combine_stl**: Merge multiple STL files into one
- **array_linear**: Create N copies of the mesh spaced by a fixed X/Y/Z offset
- **array_circular**: Create N copies of the mesh at equal angular intervals around an axis
### Primitives
- **create_cube**: Create a cube mesh
- **create_box**: Create a rectangular box (cuboid) with independent width/height/depth
- **create_sphere**: Create a sphere mesh
- **create_cylinder**: Create a cylinder mesh
- **create_cone**: Create a cone mesh
- **create_torus**: Create a torus (donut) mesh
- **create_plane**: Create a flat plane mesh
- **create_capsule**: Create a capsule (cylinder with hemispherical end caps)
- **create_ellipsoid**: Create an ellipsoid with independent radii on each axis
- **create_frustum**: Create a frustum (truncated cone)
- **create_tube**: Create a hollow cylinder (tube/pipe)
- **create_pyramid**: Create a regular n-sided pyramid
- **create_prism**: Create a regular n-sided prism (e.g. hexagonal prism)
- **create_hemisphere**: Create a hemisphere (dome with flat circular base)
- **create_wedge**: Create a right-triangular wedge (triangular prism)
### Engine-Design Shapes
- **create_gear**: Create a spur gear mesh (configurable module, teeth, pressure angle)
- **create_spring**: Create a helical coil spring
- **create_connecting_rod**: Create a connecting rod with big/small-end bores
- **create_crankshaft**: Create an N-throw crankshaft
- **create_valve**: Create a poppet valve (stem + head disc)
- **create_camshaft_lobe**: Create an eccentric cam lobe with cosine nose profile
## Usage
### Python API
```python
from mcp_stl import read_stl_file, create_cube, translate_stl
# Read an existing STL file
mesh = read_stl_file("model.stl")
print(f"Faces: {mesh.face_count}")
# Create a primitive
create_cube("cube.stl", size=2.0)
# Transform a mesh
translate_stl("input.stl", "output.stl", x=10.0, y=0.0, z=5.0)
```
### MCP Server
Configure in your MCP client:
```json
{
"mcpServers": {
"mcp-stl": {
"command": "mcp-stl"
}
}
}
```
## Development
```bash
git clone https://github.com/daedalus/mcp-stl.git
cd mcp-stl
pip install -e ".[test]"
# run tests
pytest
# format
ruff format src/ tests/
# lint
ruff check src/ tests/
# type check
mypy src/
```