这是一个介于Cline和Autodesk Fusion 360之间的模型上下文协议(MCP)服务器。该服务器将Fusion 360工具栏级别的命令暴露为可以直接映射到Fusion API的可调用工具。
此项目允许Cline:
克隆此仓库:
git clone https://github.com/yourusername/fusion360-mcp-server.git
cd fusion360-mcp-server
安装依赖项:
pip install -r requirements.txt
cd src
python main.py
这将在http://127.0.0.1:8000启动FastAPI服务器。
cd src
python main.py --mcp
这将以MCP模式启动服务器,从标准输入读取并写入标准输出。
GET /: 检查服务器是否正在运行GET /tools: 列出所有可用工具POST /call_tool: 调用单个工具并生成脚本POST /call_tools: 依次调用多个工具并生成脚本curl -X GET http://127.0.0.1:8000/tools
curl -X POST http://127.0.0.1:8000/call_tool \
-H "Content-Type: application/json" \
-d '{
"tool_name": "CreateSketch",
"parameters": {
"plane": "xy"
}
}'
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
}
}
]
}'
服务器当前支持以下Fusion 360工具:
要使用此服务器与Cline一起工作,请将其添加到您的MCP设置配置文件中:
{
"mcpServers": {
"fusion360": {
"command": "python",
"args": ["/path/to/fusion360-mcp-server/src/main.py", "--mcp"],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}
工具定义在src/tool_registry.json中。每个工具都有:
示例工具定义:
{
"name": "Extrude",
"description": "将轮廓拉伸成三维实体。",
"parameters": {
"profile_index": {
"type": "integer",
"description": "要拉伸的轮廓索引。",
"default": 0
},
"height": {
"type": "number",
"description": "拉伸的高度,单位为毫米。"
},
"operation": {
"type": "string",
"description": "操作类型(例如,'new', 'join', 'cut', 'intersect')。",
"default": "new"
}
},
"docs": "https://help.autodesk.com/view/fusion360/ENU/?guid=GUID-6D381FCD-22AB-4F08-B4BB-5D3A130189AC"
}
服务器基于工具调用生成Fusion 360 Python脚本。这些脚本可以在Fusion 360的脚本编辑器中执行。
示例生成的脚本:
import adsk.core, adsk.fusion, traceback
def run(context):
ui = None
try:
app = adsk.core.Application.get()
ui = app.userInterface
design = app.activeProduct
# 获取设计中的活动组件
component = design.rootComponent
# 在xy平面上创建新的草图
sketches = component.sketches
xyPlane = component.xYConstructionPlane
sketch = sketches.add(xyPlane)
# 绘制矩形
rectangle = sketch.sketchCurves.sketchLines.addTwoPointRectangle(
adsk.core.Point3D.create(0, 0, 0),
adsk.core.Point3D.create(10, 10, 0)
)
# 拉伸轮廓
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('操作成功完成')
except:
if ui:
ui.messageBox('失败:\n{}'.format(traceback.format_exc()))
src/tool_registry.json中添加新的工具定义src/script_generator.py的SCRIPT_TEMPLATES中添加脚本模板src/script_generator.py的_process_parameters中添加参数处理逻辑本项目采用MIT许可证 - 详情见LICENSE文件。