Loading connector details…
Loading connector details…
Choose a unique username to continue using AgentHotspot
by jingcheng-chen • Modeling & Simulation
Connects Rhino 3D to AI agents via the Model Context Protocol, enabling prompt-assisted creation and manipulation of 3D geometry inside Rhino.
Create, modify, and delete primitive 3D geometry inside a Rhino document programmatically.
Inspect document state (objects, layers, materials) to make context-aware modeling decisions.
Generate or run Rhino Python scripts, manage layers, and perform filtered object selection for automated workflows.
RhinoMCP is a third-party integration that opens a socket-based MCP connection between Rhino and AI agents so agents can send commands, inspect the document, and execute scripts. It supports two-way communication for creating, modifying, and deleting primitive 3D objects, selecting objects by filters, and managing layers. The tool also offers experimental Rhino Python script execution and limited document inspection to avoid overloading agents with too much data.
Create a new object in the Rhino document. Parameters: - type: Object type ("POINT", "LINE", "POLYLINE", "CIRCLE", "ARC", "ELLIPSE", "CURVE", "BOX", "SPHERE", "CONE", "CYLINDER", "PIPE", "SURFACE") - name: Optional name for the object - color: Optional [r, g, b] color values (0-255) for the object - params: Type-specific parameters dictionary (see documentation for each type) - translation: Optional [x, y, z] translation vector - rotation: Optional [x, y, z] rotation in radians - scale: Optional [x, y, z] scale factors The params dictionary is type-specific. For POINT, the params dictionary should contain the following keys: - x: x coordinate of the point - y: y coordinate of the point - z: z coordinate of the point For LINE, the params dictionary should contain the following keys: - start: [x, y, z] start point of the line - end: [x, y, z] end point of the line For POLYLINE, the params dictionary should contain the following keys: - points: List of [x, y, z] points that define the polyline For CIRCLE, the params dictionary should contain the following keys: - center: [x, y, z] center point of the circle - radius: Radius of the circle For ARC, the params dictionary should contain the following keys: - center: [x, y, z] center point of the arc - radius: Radius of the arc - angle: Angle of the arc in degrees For ELLIPSE, the params dictionary should contain the following keys: - center: [x, y, z] center point of the ellipse - radius_x: Radius of the ellipse along X axis - radius_y: Radius of the ellipse along Y axis For CURVE, the params dictionary should contain the following keys: - points: List of [x, y, z] control points that define the curve - degree: Degree of the curve (default is 3, if user asked for smoother curve, degree can be higher) If the curve is closed, the first and last points should be the same. For BOX, the params dictionary should contain the following keys: - width: Width of the box along X axis of the object - length: Length of the box along Y axis of the object - height: Height of the box along Z axis of the object For SPHERE, the params dictionary should contain the following key: - radius: Radius of the sphere For CONE, the params dictionary should contain the following keys: - radius: Radius of the cone - height: Height of the cone - cap: Boolean to indicate if the cone should be capped at the base, default is True For CYLINDER, the params dictionary should contain the following keys: - radius: Radius of the cylinder - height: Height of the cylinder - cap: Boolean to indicate if the cylinder should be capped at the base, default is True For SURFACE, the params dictionary should contain the following keys: - count : ([number, number]) Tuple of two numbers defining number of points in the u,v directions - points: List of [x, y, z] points that define the surface - degree: ([number, number], optional) Degree of the surface (default is 3, if user asked for smoother surface, degree can be higher) - closed: ([bool, bool], optional) Two booleans defining if the surface is closed in the u,v directions Returns: A message indicating the created object name. Examples of params: - POINT: {"x": 0, "y": 0, "z": 0} - LINE: {"start": [0, 0, 0], "end": [1, 1, 1]} - POLYLINE: {"points": [[0, 0, 0], [1, 1, 1], [2, 2, 2]]} - CIRCLE: {"center": [0, 0, 0], "radius": 1.0} - CURVE: {"points": [[0, 0, 0], [1, 1, 1], [2, 2, 2]], "degree": 3} - BOX: {"width": 1.0, "length": 1.0, "height": 1.0} - SPHERE: {"radius": 1.0} - CONE: {"radius": 1.0, "height": 1.0, "cap": True} - CYLINDER: {"radius": 1.0, "height": 1.0, "cap": True} - SURFACE: {"count": (3, 3), "points": [[0, 0, 0], [1, 0, 0], [2, 0, 0], [0, 1, 0], [1, 1, 0], [2, 1, 0], [0, 2, 0], [1, 2, 0], [2, 2, 0]], "degree": (3, 3), "closed": (False, False)}
Create multiple objects at once in the Rhino document. Parameters: - objects: A list of dictionaries, each containing the parameters for a single object Each object should have the following values: - type: Object type ("POINT", "LINE", "POLYLINE", "BOX", "SPHERE", etc.) - name: Optional name for the object - color: Optional [r, g, b] color values (0-255) for the object - params: Type-specific parameters dictionary (see documentation for each type in create_object() function) - translation: Optional [x, y, z] translation vector - rotation: Optional [x, y, z] rotation in radians - scale: Optional [x, y, z] scale factors Returns: A message indicating the created objects. Examples of params: [ { "type": "POINT", "name": "Point 1", "params": {"x": 0, "y": 0, "z": 0} }, { "type": "LINE", "name": "Line 1", "params": {"start": [0, 0, 0], "end": [1, 1, 1]} }, { "type": "POLYLINE", "name": "Polyline 1", "params": {"points": [[0, 0, 0], [1, 1, 1], [2, 2, 2]]} }, { "type": "CURVE", "name": "Curve 1", "params": {"points": [[0, 0, 0], [1, 1, 1], [2, 2, 2]], "degree": 3} }, { "type": "BOX", "name": "Box 1", "color": [255, 0, 0], "params": {"width": 1.0, "length": 1.0, "height": 1.0}, "translation": [0, 0, 0], "rotation": [0, 0, 0], "scale": [1, 1, 1] }, { "type": "SPHERE", "name": "Sphere 1", "color": [0, 255, 0], "params": {"radius": 1.0}, "translation": [0, 0, 0], "rotation": [0, 0, 0], "scale": [1, 1, 1] } ]
Delete an object from the Rhino document. Parameters: - id: The id of the object to delete - name: The name of the object to delete
Get a lightweight summary of the current Rhino document. This returns aggregated statistics about the model without individual object details: - Document metadata (name, units, tolerance, dates) - Total object count - Object counts grouped by type (e.g., 50 curves, 30 surfaces) - Object counts grouped by layer - Model-wide bounding box encompassing all objects - Full layer hierarchy with parent-child relationships and per-layer object counts Use this tool first to understand the model composition before querying specific objects. For detailed object information, use get_objects with filters.
Query objects in the Rhino document with filtering and pagination. Use this tool to retrieve specific subsets of objects after first calling get_document_summary to understand the model composition. Parameters: - offset: Number of objects to skip (default: 0) - limit: Maximum objects to return (default: 50, max: 200) - layer_filter: Return only objects on this layer (name or full path) - type_filter: Return only objects of this type: POINT, LINE, POLYLINE, CIRCLE, ARC, CURVE, BOX, SPHERE, CONE, CYLINDER, SURFACE, BREP, EXTRUSION, MESH - bbox_filter: Return objects within bounding box [[min_x,min_y,min_z],[max_x,max_y,max_z]] - include_geometry: Include detailed geometry data (default: true, false for lightweight listing) Returns: - objects: Array of object information - total_matching: Total count matching filters - offset, limit: Applied pagination - has_more: Whether more objects are available - filters: The filters that were applied Example: Get all curves on layer "Walls": get_objects(layer_filter="Walls", type_filter="CURVE") Example: Get next page of results: get_objects(offset=50, limit=50)
Defines the preferred strategy for working with Rhino objects
CRITICAL: Workflow for writing RhinoScript Python code. Follow this workflow to avoid syntax errors and hallucination.
List all RhinoScript modules with function counts. Browse this to discover what's available.
Scores are informational only and provided “as is” without warranty. AgentHotspot assumes no liability for actions taken based on these ratings.