Fusion 360模型协议服务器

一个为Autodesk Fusion 360设计的模型上下文协议服务器,提供数据管理、设计导出、自动化操作和Webhook通知功能,适用于CAD协作和3D打印工作流。

  • by benhalverson
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 benhalverson/fusion-mcp

使用说明

融合MCP服务器

Autodesk Fusion 360的MCP(模型上下文协议)服务器,用TypeScript编写,使用Hono部署在Cloudflare Workers上。

特性

此MCP服务器提供以下与Autodesk Fusion 360设计交互的功能:

🗂️ 数据管理

  • 列出中心/项目/设计 -浏览Fusion团队内容,包括中心(团队)、项目和设计
  • 获取顶级文件夹 -访问项目中的顶级文件夹

📦 导出与下载

  • 导出到STL/STEP/OBJ -将设计转换为各种格式,以实现3D打印和CAD互操作性
  • 下载IPT/F3D/Fusion档案 -直接访问原始源CAD文件

⚙️ 设计自动化

  • 读取和修改参数 -更改设计中的参数值(需要设计自动化工作项)
  • 运行Fusion工作项 -使用Autodesk Design Automation在服务器端执行脚本以自动化CAD操作

🔔 网络钩子

  • 创建Webhooks -设置设计更改时的通知
  • 列出Webhooks -查看所有已注册的webhooks
  • 删除Webhooks -删除webhook订阅

先决条件

  • 具有API证书的Autodesk Forge/APS帐户
  • Cloudflare Workers帐户(可用免费层)
  • Node.js 18+用于本地开发

设置

1.安装依赖项

pnpm install

2.配置Autodesk Forge凭据

您需要设置Autodesk Forge(现在为Autodesk平台服务)API凭据:

  1. 首选 锻造门户
  2. 创建应用程序
  3. 记下您的客户端ID和客户端密码

为了地方发展,创建一个 .dev.vars 文件:

FORGE_CLIENT_ID=your_client_id_here
FORGE_CLIENT_SECRET=your_client_secret_here

对于生产部署,请使用Wrangler设置机密:

wrangler secret put FORGE_CLIENT_ID
wrangler secret put FORGE_CLIENT_SECRET

3.发展

运行开发服务器:

pnpm run dev

服务器将在以下时间可用 http://localhost:8787

4.建造

将TypeScript编译为JavaScript:

pnpm run build

5.部署到Cloudflare Workers

pnpm run deploy

用法

MCP协议

服务器在以下位置实现模型上下文协议 /mcp 终点。发送具有以下结构的POST请求:

列出可用工具

{
  "method": "tools/list"
}

调用工具

{
  "method": "tools/call",
  "params": {
    "name": "list_hubs",
    "arguments": {}
  }
}

可用工具

1. list_hubs

列出用户可用的所有Fusion Team中心。

论据: 无

2. list_projects

列出中心中的所有项目。

论据:

  • hubId (string,必填):集线器ID

3. list_designs

在项目文件夹中列出设计。

论据:

  • projectId (string,必填):项目ID
  • folderId (字符串,必填):文件夹ID

4. get_top_folders

获取项目中的顶级文件夹。

论据:

  • hubId (string,必填):集线器ID
  • projectId (string,必填):项目ID

5. export_design

将设计导出为STL、STEP或OBJ格式。

论据:

  • urn (string,必填):设计URN(base64编码)
  • format (字符串,必填):导出格式-其中之一 stl, step, obj

6. get_export_status

检查设计导出/翻译的状态。

论据:

  • urn (string,必填):设计URN

7. download_derivative

下载导出的文件衍生品。

论据:

  • urn (string,必填):设计URN
  • derivativeUrn (string,必填):清单的派生URN

8. create_workitem

创建并运行Fusion WorkItem以执行脚本和修改参数。

论据:

  • activityId (字符串,必填):设计自动化活动ID
  • inputFileUrl (字符串,必填):输入Fusion文件的URL
  • outputFileUrl (string,必填):上传输出的签名URL
  • parameters (对象,可选):设计中要修改的参数

9. get_workitem_status

获取正在运行的WorkItem的状态。

论据:

  • workItemId (string,必填):工作项ID

10. create_webhook

创建一个webhook,以便在设计更改时接收通知。

论据:

  • system (字符串,可选):系统名称(默认值:“data”)
  • event (字符串,必填):事件名称(例如,“dm.version.added”)
  • callbackUrl (字符串,必填):接收通知的URL
  • scope (对象,可选):webhook的作用域筛选器

11. list_webhooks

列出所有已注册的webhooks。

论据:

  • system (字符串,可选):系统名称筛选器
  • event (字符串,可选):事件名称筛选器

12. delete_webhook

删除webhook。

论据:

  • system (字符串,必填):系统名称
  • event (字符串,必填):事件名称
  • hookId (字符串,必填):要删除的Webhook ID

13. download_file

下载Fusion文件(F3D、IPT或存档)。

论据:

  • projectId (string,必填):项目ID
  • itemId (字符串,必填):项目ID
  • versionId (字符串,可选):版本ID(如果未提供,则使用最新版本)

Webhook端点

服务器提供 /webhook 从Autodesk Forge接收webhook通知的端点:

POST https://your-worker.workers.dev/webhook

使用以下命令创建Webhook时配置此URL create_webhook 工具。

建筑

  • 荣誉 -Cloudflare Workers的快速、轻量级web框架
  • Autodesk Forge/APS API -用于访问Fusion 360数据的RESTful API
  • 模型上下文协议 -人工智能模型交互的标准化协议
  • Cloudflare员工 -无服务器边缘计算平台

API范围要求

服务器需要以下Forge API作用域:

  • data:read -从数据管理中读取数据
  • data:write -将数据写入数据管理
  • data:create -创建新数据
  • bucket:read -从OSS bucket读取
  • bucket:create -创建OSS存储桶

常见用例

1.浏览团队内容

// List hubs
{ "method": "tools/call", "params": { "name": "list_hubs" } }

// List projects in a hub
{ "method": "tools/call", "params": { "name": "list_projects", "arguments": { "hubId": "b.xxx" } } }

// Get folders
{ "method": "tools/call", "params": { "name": "get_top_folders", "arguments": { "hubId": "b.xxx", "projectId": "b.xxx" } } }

2.导出3D打印设计

// Start export to STL
{ 
  "method": "tools/call", 
  "params": { 
    "name": "export_design", 
    "arguments": { 
      "urn": "dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLnlvdXJfdXJuP3ZlcnNpb249MQ",
      "format": "stl"
    } 
  } 
}

// Check export status
{ "method": "tools/call", "params": { "name": "get_export_status", "arguments": { "urn": "..." } } }

// Download the STL file
{ "method": "tools/call", "params": { "name": "download_derivative", "arguments": { "urn": "...", "derivativeUrn": "..." } } }

3.修改设计参数

// Create a workitem to modify parameters
{ 
  "method": "tools/call", 
  "params": { 
    "name": "create_workitem", 
    "arguments": { 
      "activityId": "your.activity+prod",
      "inputFileUrl": "https://...",
      "outputFileUrl": "https://...",
      "parameters": {
        "Width": 100,
        "Height": 50,
        "Depth": 25
      }
    } 
  } 
}

开发说明

  • OAuth令牌被缓存并自动刷新
  • 所有API调用都需要有效的Forge凭据
  • WorkItems需要在您的Forge帐户中设置设计自动化
  • Webhooks需要一个可公开访问的回调URL

许可证

麻省理工学院