self-host-fusion360-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FUSION_MCP_MOCK | No | Set to 'true' to run in mock mode without a real Fusion 360 instance. | |
| FUSION_ADDIN_URL | No | URL of the Fusion 360 add-in HTTP endpoint. Default is http://localhost:9000. | http://localhost:9000 |
| FUSION_MCP_TOKEN | No | Shared authentication token for the MCP server. Auto-generated if not provided. | |
| FUSION_MCP_HTTP_HOST | No | Host interface for the HTTP server when using http transport. Default 0.0.0.0. | 0.0.0.0 |
| FUSION_MCP_HTTP_PORT | No | Port for the HTTP server when using http transport. Default 8765. | 8765 |
| FUSION_MCP_TRANSPORT | No | Transport protocol for the MCP server: 'stdio' (default) or 'http'. | |
| FUSION_MCP_ALLOW_ARBITRARY_CODE | No | Set to 'true' to enable the arbitrary Fusion API escape hatch tools (fusion_run_script, etc.). Default 'false'. |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| fusion_new_documentA | Create a NEW empty Fusion design document. Prefer NOT calling this. If a document is already open, build in THAT one — several parts belong in ONE document as separate components (fusion_create_component). Stray documents pile up and only the user can close them by hand. Set confirm=true only when the user explicitly asked for a new document/project, or when nothing is open at all (then it is a no-op flag). Without confirm the call is refused while any document is open. |
| fusion_document_infoA | Summarize the active document: display units, counts of bodies, components, sketches and parameters, save state, and the active component. |
| fusion_list_documentsA | List all open Fusion documents with their active / modified / saved state. |
| fusion_list_projectsA | List the Fusion projects a document can be saved into, and which one is active (where fusion_save_document / _as put a never-saved document). |
| fusion_save_documentA | Save a document (the active one unless A never-saved document is saved into the active Fusion project automatically
(optionally under |
| fusion_save_document_asA | Save a document as a NEW file called |
| fusion_close_documentA | Close a document — save=true saves it first, save=false discards unsaved changes. Closes the active document unless |
| fusion_close_other_documentsA | Close every open document EXCEPT the active one — handy for tidying up after stray documents accumulated. save=false discards their unsaved changes. |
| fusion_list_bodiesA | List all solid/surface bodies with index, name, volume (mm³), and bounding box (mm). Use the index or name to target a body in other tools. |
| fusion_list_componentsA | List all components in the design with their body counts. |
| fusion_list_sketchesA | List sketches with index, name, and number of closed profiles. |
| fusion_bounding_boxA | Get the overall bounding box of the whole design, in millimetres. |
| fusion_summaryA | High-level snapshot of the design: units, counts, and a body list. A good first call to understand the current model. |
| fusion_get_bodyA | Detailed info for one body (by index or name): volume, area, face/edge/ vertex counts, and bounding box. |
| fusion_body_infoA | Inspect one body by index or name, including its current operative ID, component, topology counts, volume, visibility, and bounding box. |
| fusion_list_facesA | List a body's faces (index, area mm², is_planar, centroid, normal). Use a planar face's index to sketch/drill on it (fusion_create_sketch_on_face, fusion_hole with on_body/on_face). |
| fusion_list_edgesA | Enumerate one body's edges for selective operations. Returns a topology snapshot plus index, curve type, length, points, radius when circular, and adjacent face indices/types for each edge. |
| fusion_physical_propertiesA | Mass (g), volume (mm³), area (mm²), density, and center of mass for a body (by index/name) or the whole design if omitted. Also reports material name, material source, assignment scope, and whether material evidence was verified. |
| fusion_measure_distanceB | Minimum distance in millimetres between two bodies. |
| fusion_measure_angleA | Angle (degrees) between the first faces of two bodies. |
| fusion_interferenceA | Check interference between 2+ bodies (list of indices/names); returns the overlapping volumes (mm³). Use to validate clearances/fits in an assembly. |
| fusion_list_parametersA | List all parameters (user + model) with expression, value, and unit. |
| fusion_get_parameterC | Get one parameter by name. |
| fusion_set_parameterA | Set a parameter's expression, e.g. '25 mm' or 'width * 2'. This is the preferred way to resize an existing parametric model. |
| fusion_create_parameterB | Create a new user parameter (e.g. name='width', expression='40 mm'). |
| fusion_delete_parameterA | Delete a user parameter by name (model parameters cannot be deleted). |
| fusion_create_sketchA | Create an empty sketch on a base plane (xy/xz/yz) or construction-plane index. |
| fusion_create_sketch_on_faceA | Create a sketch ON a planar face of a body. Get the face index from fusion_list_faces (is_planar=true). Sketch coordinates are then local to that face. |
| fusion_sketch_rectangleA | Draw a rectangle (mm). mode='corner' treats (x,y) as a corner;
mode='center' treats (x,y) as the center. Creates a new sketch on |
| fusion_sketch_circleB | Draw a circle (mm) by center (x,y) and radius OR diameter. |
| fusion_sketch_lineB | Draw a single line segment from (x1,y1) to (x2,y2), in mm. |
| fusion_sketch_arcA | Draw a 3-point arc (mm): from start (x1,y1), through (x2,y2), to end (x3,y3). Useful as a sweep/revolve path. |
| fusion_sketch_polygonB | Draw a regular polygon (mm) by center, circumradius, and side count (>=3). |
| fusion_sketch_splineA | Draw a spline through points [[x,y],...] (mm). type 'fit_points' or 'control_points' (uses degree). |
| fusion_sketch_constrainB | Add a geometric constraint between sketch entities (by curve index). type: coincident/parallel/perpendicular/tangent/equal/horizontal/vertical/ concentric/collinear/midpoint/symmetry. For coincident/midpoint, entity_one is a sketch-point index. This is the key to robust, editable parametric sketches. |
| fusion_sketch_dimensionA | Add a driving dimension. type: distance/horizontal/vertical/angular/radial/ diameter. value is mm (degrees for angular). Drives parametric sizing. |
| fusion_sketch_offsetB | Offset a sketch curve (by index) by distance mm toward (dir_x, dir_y). |
| fusion_sketch_projectA | Project a body's edges onto a sketch (linked reference geometry). |
| fusion_extrudeB | Extrude a sketch profile by |
| fusion_revolveC | Revolve a sketch profile around axis x/y/z by |
| fusion_filletA | Round edges of a body by |
| fusion_chamferB | Chamfer edges of a body by |
| fusion_shellC | Hollow out a body to a wall |
| fusion_rectangular_patternA | Pattern a body in a line along axis x/y/z: |
| fusion_circular_patternA | Pattern a body around axis x/y/z: |
| fusion_mirrorB | Mirror a body across plane xy/xz/yz. |
| fusion_sweepA | Sweep a profile (from profile_sketch) along the first curve of path_sketch. Draw the path as an open sketch (line/arc/spline) and the profile as a closed sketch, then sweep. |
| fusion_loftA | Loft a smooth solid between profiles taken from a list of sketch indices/ names (>=2), in order. Each sketch should contain one closed profile. |
| fusion_holeA | Drill a circular hole (cut) of |
| fusion_scale_bodyB | Uniformly scale a body by |
| fusion_draftA | Apply draft to faces of a body. angle deg; pull-direction plane xy/xz/yz. faces is a list of face indices (from fusion_list_faces) or omitted for all. |
| fusion_split_bodyB | Split a body by a plane (xy/xz/yz) or by another body (tool_body). |
| fusion_split_faceB | Split faces of a body by a plane (xy/xz/yz). |
| fusion_offset_facesB | Offset faces of a body by distance mm (creates an offset surface body). |
| fusion_threadA | Add a thread to a cylindrical face (face index from fusion_list_faces, the non-planar one). internal=True for a hole; modeled=True for real geometry. |
| fusion_list_threadsB | Inspect thread features in the active or named component without modifying it. |
| fusion_list_featuresA | List timeline features in creation order. |
| fusion_boxA | Create a box (cuboid): width(X) x depth(Y) x height(Z) in mm, centered on
the XY origin and rising in +Z. Auto-creates a document if none is open.
For a cube, pass equal width/depth/height. Pass |
| fusion_cylinderA | Create a cylinder of |
| fusion_sphereA | Create a sphere of |
| fusion_rename_bodyC | Rename a body. |
| fusion_set_body_visibleC | Show or hide a body. |
| fusion_delete_bodyA | Delete exactly one body and verify the resulting model state. Destructive. This does not delete sketches, features, or construction geometry. |
| fusion_move_bodyA | Translate a body by (dx, dy, dz) millimetres. |
| fusion_rotate_bodyA | Rotate a body by |
| fusion_combineA | Boolean-combine a target body with one or more tool bodies (by index or name). operation: join (union), cut (subtract tools from target), or intersect. Set keep_tools=true to preserve the tool bodies. |
| fusion_offset_planeA | Create a construction plane offset from a base plane (xy/xz/yz) by
|
| fusion_list_appearancesA | List available appearance names (optionally filtered by substring). |
| fusion_set_appearanceA | Apply an appearance (by name) to a body. Use fusion_list_appearances to discover valid names (e.g. 'Steel', 'Aluminum', 'ABS'). |
| fusion_export_stlA | Export to STL (for 3D printing). Optional |
| fusion_export_stepB | Export the whole design to STEP (.step), the best format for CAD interchange. |
| fusion_export_igesA | Export the whole design to IGES (.igs). Note: IGES export is restricted on personal-use Fusion licenses — prefer STEP for CAD interchange. |
| fusion_export_f3dC | Export a native Fusion archive (.f3d), preserving the full design tree. |
| fusion_export_dxfB | Export a sketch to a 2D DXF file (e.g. for laser cutting / drawings). |
| fusion_screenshotB | Capture the active Fusion viewport and return it as a PNG image so you can visually inspect the model. Set fit=False to keep the current camera. |
| fusion_fit_viewA | Zoom/fit the view to show the whole model. |
| fusion_set_viewA | Set a named camera orientation: home/iso/top/bottom/front/back/left/right. |
| fusion_get_unitsB | Get the document's default length unit. |
| fusion_set_unitsA | Set the document's display length unit: mm/cm/m/in/ft. (Note: tool inputs are always in millimetres regardless of this display setting.) |
| fusion_create_componentB | Create a component occurrence, optionally making it the build target. |
| fusion_set_active_componentA | Set the build target for subsequent sketch, primitive, and feature operations. Use |
| fusion_get_active_componentA | Return the current build target; subsequent build operations target it. |
| fusion_list_occurrencesA | List component occurrences: name, grounded, visible, body count. |
| fusion_list_jointsA | List joints (name, type), plus as-built-joint and rigid-group counts. |
| fusion_move_componentB | Translate a component occurrence by (dx, dy, dz) millimetres. |
| fusion_ground_componentC | Ground (lock in place) or unground a component occurrence. |
| fusion_jointA | Create a joint between two components. type: rigid / revolute / slider / cylindrical / planar; axis (x/y/z) is the motion axis. By default it joins at the component origins; pass face_one/face_two (planar face indices on each component's first body) to mate specific faces. |
| fusion_create_flat_patternA | Create a flat pattern from an EXISTING sheet-metal body. Note: Fusion's API cannot create sheet-metal flanges/bends (model those interactively). |
| fusion_as_built_jointB | Create an as-built joint (keeps both components in their current place). |
| fusion_rigid_groupB | Lock 2+ components together as a rigid group (pass a list of names). |
| fusion_cam_list_setupsA | List CAM setups and their operations. Requires the Manufacturing workspace to have been opened once in Fusion. |
| fusion_cam_list_operationsA | List operations in a CAM setup (name, has_toolpath, is_valid). |
| fusion_cam_list_toolsB | List cutting tools from the local tool library (for assigning to operations). |
| fusion_cam_create_setupC | Create a CAM setup around a body. operation_type: milling/turning/cutting. |
| fusion_cam_create_operationA | Add an operation to a setup by |
| fusion_cam_generateA | Generate toolpaths: one |
| fusion_cam_post_processC | Post-process a setup (or one operation) to a G-code file on the host (default ~/fusion-mcp-exports/nc). post_processor is a generic post name. |
| fusion_undoA | Undo the last operation (guards against a parametric->direct design flip). |
| fusion_redoA | Redo the last undone operation. |
| fusion_delete_allA | Delete every timeline feature, clearing the design. Destructive. |
| fusion_suppress_featureB | Suppress a timeline feature by name (from fusion_list_features). |
| fusion_unsuppress_featureB | Unsuppress a timeline feature by name. |
| fusion_surface_thickenB | Thicken a (surface) body's faces into a solid by thickness mm. direction 'positive' or 'symmetric'. |
| fusion_surface_patchC | Patch a closed sketch profile into a surface body. |
| fusion_surface_ruledA | Create a ruled surface from a body edge (by index), extended by distance mm. |
| fusion_surface_stitchB | Stitch surface bodies (list of indices/names) into one, with tolerance mm. |
| fusion_api_introspectA | Inspect the live Fusion API: list a class's (or an object path's) properties
and method signatures. |
| fusion_api_docsA | Get the Autodesk cloudhelp URL for an API class or member (e.g. 'ExtrudeFeatures.createInput'). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 108 tools
Several tools overlap heavily (e.g., fusion_get_body vs fusion_body_info, fusion_document_info vs fusion_summary) and an agent could easily pick the wrong one. Most tools, however, have distinct resource+action targets, and the detailed descriptions help resolve most ambiguities.
All tools share a consistent fusion_ prefix and follow a predictable verb_noun pattern (get_, list_, create_, set_, etc.). Even specialized groups like sketch_ and cam_ maintain the same style, with no mixed conventions or irregular nouns.
With 108 tools, the set is far beyond the well-scoped range and will severely burden an agent's context window and tool-selection process. Even for a comprehensive CAD server, this count is excessive and clearly falls into the 50+ category per the calibration guide.
The toolset covers a very broad range of Fusion 360 workflows: documents, sketches, solids, surfaces, components, joints, CAM, exports, and API introspection. Minor gaps exist (e.g., no sketch editing/deletion, no component renaming), but most core design and manufacturing workflows are present.