Servidor Fusion 360 MCP
Un servidor de Protocolo de contexto de modelo (MCP) que interactúa entre Cline y Autodesk Fusion 360. Este servidor expone los comandos de nivel de barra de herramientas de Fusion 360 como herramientas invocables que se asignan directamente a la API de Fusion.
🧠 Descripción general
Este proyecto permite a Cline:
Analizar indicaciones en lenguaje natural (por ejemplo, "Haz una caja con esquinas redondeadas")
Resolverlos en acciones de la herramienta Fusión (por ejemplo, Crear Boceto → Dibujar Rectángulo → Extruir → Redondear)
Llama a esas herramientas a través de este servidor MCP
Devuelve scripts de Python que se pueden ejecutar en Fusion 360
Related MCP server: MCP Atlassian Server
🛠️ Instalación
Prerrequisitos
Python 3.9 o superior
Autodesk Fusion 360
Configuración
Clonar este repositorio:
git clone https://github.com/yourusername/fusion360-mcp-server.git cd fusion360-mcp-serverInstalar dependencias:
pip install -r requirements.txt
🚀 Uso
Ejecución del servidor HTTP
cd src
python main.pyEsto iniciará el servidor FastAPI en http://127.0.0.1:8000 .
Ejecutándose como un servidor MCP
cd src
python main.py --mcpEsto iniciará el servidor en modo MCP, leyendo desde stdin y escribiendo en stdout.
Puntos finales de API
GET /: Comprueba si el servidor está en ejecuciónGET /tools: Lista todas las herramientas disponiblesPOST /call_tool: Llamar a una sola herramienta y generar un scriptPOST /call_tools: Llamar a múltiples herramientas en secuencia y generar un script
Ejemplos de llamadas API
Herramientas de lista
curl -X GET http://127.0.0.1:8000/toolsLlamar a una sola herramienta
curl -X POST http://127.0.0.1:8000/call_tool \
-H "Content-Type: application/json" \
-d '{
"tool_name": "CreateSketch",
"parameters": {
"plane": "xy"
}
}'Llamar a varias herramientas
curl -X POST http://127.0.0.1:8000/call_tools \
-H "Content-Type: application/json" \
-d '{
"tool_calls": [
{
"tool_name": "CreateSketch",
"parameters": {
"plane": "xy"
}
},
{
"tool_name": "DrawRectangle",
"parameters": {
"width": 10,
"depth": 10
}
},
{
"tool_name": "Extrude",
"parameters": {
"height": 5
}
}
]
}'📦 Herramientas disponibles
Actualmente, el servidor admite las siguientes herramientas de Fusion 360:
Crear
CreateSketch : crea un nuevo boceto en un plano específico
DrawRectangle : dibuja un rectángulo en el boceto activo
DrawCircle : dibuja un círculo en el boceto activo
Extruir : extruye un perfil en un cuerpo 3D
Girar : gira un perfil alrededor de un eje
Modificar
Filete : agrega un filete a los bordes seleccionados
Chaflán : agrega un chaflán a los bordes seleccionados
Carcasa : ahueca un cuerpo sólido con un espesor de pared especificado
Combinar : combina dos cuerpos mediante operaciones booleanas
Exportar
ExportBody : exporta un cuerpo a un archivo
🔌 Integración MCP
Para utilizar este servidor con Cline, agréguelo a su archivo de configuración de MCP:
{
"mcpServers": {
"fusion360": {
"command": "python",
"args": ["/path/to/fusion360-mcp-server/src/main.py", "--mcp"],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}🧩 Registro de herramientas
Las herramientas se definen en src/tool_registry.json . Cada herramienta tiene:
nombre : El nombre de la herramienta
Descripción : Qué hace la herramienta
parámetros : Los parámetros que acepta la herramienta
docs : Enlace a la documentación relevante de la API de Fusion
Ejemplo de definición de herramienta:
{
"name": "Extrude",
"description": "Extrudes a profile into a 3D body.",
"parameters": {
"profile_index": {
"type": "integer",
"description": "Index of the profile to extrude.",
"default": 0
},
"height": {
"type": "number",
"description": "Height of the extrusion in mm."
},
"operation": {
"type": "string",
"description": "The operation type (e.g., 'new', 'join', 'cut', 'intersect').",
"default": "new"
}
},
"docs": "https://help.autodesk.com/view/fusion360/ENU/?guid=GUID-6D381FCD-22AB-4F08-B4BB-5D3A130189AC"
}📝 Generación de scripts
El servidor genera scripts Python de Fusion 360 basados en las llamadas a la herramienta. Estos scripts se pueden ejecutar en el editor de scripts de Fusion 360.
Ejemplo de script generado:
import adsk.core, adsk.fusion, traceback
def run(context):
ui = None
try:
app = adsk.core.Application.get()
ui = app.userInterface
design = app.activeProduct
# Get the active component in the design
component = design.rootComponent
# Create a new sketch on the xy plane
sketches = component.sketches
xyPlane = component.xYConstructionPlane
sketch = sketches.add(xyPlane)
# Draw a rectangle
rectangle = sketch.sketchCurves.sketchLines.addTwoPointRectangle(
adsk.core.Point3D.create(0, 0, 0),
adsk.core.Point3D.create(10, 10, 0)
)
# Extrude the profile
prof = sketch.profiles.item(0)
extrudes = component.features.extrudeFeatures
extInput = extrudes.createInput(prof, adsk.fusion.FeatureOperations.NewBodyFeatureOperation)
distance = adsk.core.ValueInput.createByReal(5)
extInput.setDistanceExtent(False, distance)
extrude = extrudes.add(extInput)
ui.messageBox('Operation completed successfully')
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))🧪 Ampliación del servidor
Agregar nuevas herramientas
Agregar una nueva definición de herramienta a
src/tool_registry.jsonAgregue una plantilla de script a
SCRIPT_TEMPLATESensrc/script_generator.pyAgregue lógica de procesamiento de parámetros a
_process_parametersensrc/script_generator.py
📚 Enlaces de documentación
🔄 Mejoras futuras
Seguimiento del estado de la sesión para operaciones sensibles al contexto
Registro dinámico de herramientas
Automatización mediante sondeo de sockets o archivos
Más comandos de Fusion
📄 Licencia
Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.