Skip to main content
Glama
ab7646

fusion-reconstruct-mcp

by ab7646

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
mesh_summaryB

Overall size, volume and sanity-check info for an STL/3MF file.

list_planar_facetsA

List coplanar face groups (flat regions) large enough to matter, each with its normal, area and in-plane footprint size - useful for spotting the flat faces that become sketch planes (top/bottom/side walls, bosses, counterbore floors).

find_circular_holesA

Detect circular through-holes / blind-hole rims sitting inside a flat facet (e.g. a bolt hole in a plate). Each result is one inner boundary loop of a facet that fits a circle well.

min_loop_points guards against a false positive that is easy to fall into: any rectangle's 4 corners lie exactly on a circle (a rectangle is a cyclic quadrilateral), so a plain 4-sided quad facet can look like a perfect circle fit. Real circular boundaries coming from a tessellated mesh have one segment per tessellation facet (a few dozen, typically), so requiring at least min_loop_points boundary vertices filters out straight-edged quads/triangles while keeping genuine circles.

min_area skips facets too small to contain a min_radius-sized hole before tracing their boundary (the expensive step) - default is 4pimin_radius**2, i.e. a facet at least ~4x the hole's own area. Without this, a mesh with tens of thousands of small tessellation facets (common on any curved/filleted surface) makes this call slow enough to time out an MCP client, since every facet's boundary gets traced regardless of whether it could possibly contain a hole.

find_circular_facesA

Detect facets whose entire boundary is itself a circle - typically the flat top of a cylindrical boss/pad, or the flat bottom of a blind hole.

See find_circular_holes' docstring for why min_loop_points and min_area matter (false positives from cyclic quads; timeouts from tracing every facet's boundary on a mesh with tens of thousands of them).

get_cross_sectionA

Slice the mesh with a plane and return the resulting 2D profile(s) - exactly what you need to know to draw the matching Fusion sketch on that plane. Each polygon has an outer loop and zero or more hole loops, given as 2D points in the plane's own (u, v) coordinate system (same plane_u_axis/plane_v_axis convention fusion_create_sketch's origin+normal uses, so these coordinates drop straight into sketch_add_line/etc.).

Raw tessellation gives a mesh's cross-section thousands of near-collinear points even for a simple flat-sided shape - simplify_tolerance_mm runs a Douglas-Peucker simplification (points contributing less than this distance to the outline are dropped) so the result is small enough to read and close enough to straight-line/arc-fittable for sketching. Set to 0 to get the raw, unsimplified outline instead.

render_orthographic_viewsA

Render front/top/right/isometric silhouette views to PNG files so a vision-capable LLM can look at the part's overall shape before deciding how to reconstruct it. Returns paths, not image bytes - open them with a file-reading / vision tool.

check_solidA

For each (x, y, z) point (mm), report whether it's inside the solid or outside it (mesh.contains, ray-casting based).

get_cross_section only ever traces the outer boundary at a given slice

  • it will not notice a fully-enclosed internal cavity that doesn't touch that boundary, and can misreport a shape as constant-cross-section when it actually has a void or a step hidden inside. Before assuming a region is solid (e.g. before extruding a wedge/loft to fill it), spot-check a few points inside that assumed volume with this function. Cross-checking with a second point just off any axis-aligned coordinate is a good idea: a ray fired exactly through a mesh edge/vertex can mis-count and give a wrong answer for that exact point.

compare_meshesA

Compare a reconstructed model (exported from Fusion as STL) against the original mesh: volume/bounding-box deltas plus an approximate two-sided surface distance (mean and max, in mm) computed by sampling points on one surface and measuring distance to the nearest point on the other.

fusion_pingA

Check whether Fusion 360 is running with the bridge add-in started.

fusion_new_documentB

Create a new, empty Fusion design document to reconstruct the part in.

fusion_create_sketchA

Create a sketch on a plane.

Either pass plane ("XY", "XZ" or "YZ", optionally with offset_mm along its normal) to sketch on/parallel to a base plane, or pass an explicit origin + normal (both length-3 lists, mm) for an arbitrary plane - typically taken straight from mesh_tools.get_cross_section()'s "origin" and "normal" fields so the sketch lines up exactly with a mesh cross-section.

fusion_sketch_add_lineA

Add a straight line segment to a sketch, in the sketch's own mm coordinates.

fusion_sketch_add_rectangleC

Add a rectangle to a sketch defined by two opposite corners (mm).

fusion_sketch_add_circleA

Add a circle to a sketch, center (cx, cy) and radius in mm.

fusion_sketch_add_arc_three_pointB

Add a 3-point arc (start, end, point-on-arc) to a sketch, in mm.

fusion_list_sketch_profilesA

List the closed regions (profiles) Fusion has found in a sketch, with their index, area and centroid - use this to pick the right profile_index for extrude()/revolve() when a sketch has more than one closed region.

fusion_extrudeB

Extrude a sketch profile.

operation: "new_body" | "join" | "cut" | "intersect". "join"/"cut"/ "intersect" combine into target_body_id (required for those three).

fusion_revolveB

Revolve a sketch profile around an axis line given by two 2D points in the sketch's own coordinate system (mm).

fusion_loftA

Loft through 2+ sketch profiles to build a shape that tapers/morphs between cross-sections, e.g. a wedge or a rounded-to-square transition - use this instead of extrude when the profile isn't constant along its length. Each entry in profiles is {"sketch_id": ..., "profile_index": ...}, given in loft order (they don't need to be parallel planes).

fusion_add_filletA

Round edges with a fillet.

edge_selector: {"kind": "all_edges"} for every edge of the body, or {"kind": "near_points", "points": [[x,y,z], ...], "max_distance_mm": 1.0} to select edges whose midpoint lies within max_distance_mm of any given point (get candidate points from mesh_tools.find_circular_holes/faces or fusion_get_body_info).

fusion_add_chamferC

Chamfer edges. Same edge_selector format as fusion_add_fillet.

fusion_pattern_rectangularC

Rectangular pattern of the body/feature produced by feature_id, along the body's own X and Y directions.

fusion_pattern_circularB

Circular pattern of the body/feature produced by feature_id, around the given base-plane axis ("x", "y" or "z").

fusion_mirrorA

Mirror the body/feature produced by feature_id across a base plane ("XY", "XZ" or "YZ"), optionally offset along that plane's normal by offset_mm - use this for a mirrored pair that isn't touching along the mirror line (e.g. two parts with a real gap between them).

fusion_combineC

Boolean-combine bodies: operation "join" | "cut" | "intersect".

fusion_shellA

Hollow out a solid body into a shell. Pass remove_face_indices (from fusion_get_body_info's face_index, matched by its normal/point_on_face_mm) to leave those faces open - e.g. remove the top face of a box to turn it into an open-top container. Omit for a fully closed hollow shell. direction: "inside" | "outside" | "both" - which way the wall thickness is measured from the original surface.

fusion_set_parameterA

Create (or update) a Fusion user parameter, e.g. name="wall_thickness", expression="3 mm". Reference it in later calls' numeric fields is not supported over this bridge (those stay plain numbers) - this is for keeping the design's parameter table meaningful for a human opening it afterwards.

fusion_list_parametersA

List all user parameters currently defined in the design.

fusion_list_bodiesA

List all solid bodies in the design with their id, name, volume and bounding box - use this to get a body_id for combine/fillet/export.

fusion_get_body_infoA

Detailed geometry of one body: every face (type, area) and every edge (type, length, midpoint) - use the edge midpoints to build an edge_selector for fusion_add_fillet/fusion_add_chamfer.

fusion_get_timelineA

List the feature timeline (creation order, name, type, suppressed state) - Fusion's own record of every feature created so far.

fusion_export_stlA

Export one body to an STL file, e.g. so mesh_tools.compare_meshes() can check the reconstruction against the original.

fusion_screenshotA

Save a screenshot of the current Fusion viewport to file_path (PNG).

fusion_fit_viewA

Zoom/fit the Fusion viewport to the visible geometry (call before fusion_screenshot for a useful picture).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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/ab7646/fusion-reconstruct-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server