Skip to main content
Glama
ArchimedesCrypto

Fusion 360 MCP Server

Fusion 360 MCP サーバー

Cline と Autodesk Fusion 360 間のインターフェイスとなるモデル コンテキスト プロトコル (MCP) サーバー。このサーバーは、Fusion 360 ツールバー レベルのコマンドを、Fusion の API に直接マップされる呼び出し可能なツールとして公開します。

🧠 概要

このプロジェクトにより、Cline は次のことが可能になります。

  • 自然言語プロンプトを解析する(例:「角の丸いボックスを作成してください」)

  • これらをFusionツールのアクションに解決します(例:CreateSketch → DrawRectangle → Extrude → Fillet)

  • これらのツールをこのMCPサーバー経由で呼び出します

  • Fusion 360で実行できるPythonスクリプトを返す

Related MCP server: MCP Atlassian Server

🛠️ インストール

前提条件

  • Python 3.9以上

  • オートデスク Fusion 360

設定

  1. このリポジトリをクローンします:

    git clone https://github.com/yourusername/fusion360-mcp-server.git
    cd fusion360-mcp-server
  2. 依存関係をインストールします:

    pip install -r requirements.txt

🚀 使用方法

HTTPサーバーの実行

cd src
python main.py

これにより、 http://127.0.0.1:8000で FastAPI サーバーが起動します。

MCP サーバーとして実行

cd src
python main.py --mcp

これにより、サーバーが MCP モードで起動され、stdin から読み取り、stdout に書き込みます。

APIエンドポイント

  • GET / : サーバーが稼働しているかどうかを確認する

  • GET /tools : 利用可能なすべてのツールを一覧表示する

  • POST /call_tool : 単一のツールを呼び出してスクリプトを生成する

  • POST /call_tools : 複数のツールを順番に呼び出してスクリプトを生成する

API呼び出しの例

リストツール

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 ツールをサポートしています。

作成する

  • CreateSketch : 指定された平面上に新しいスケッチを作成します

  • DrawRectangle : アクティブなスケッチに長方形を描画します

  • DrawCircle : アクティブなスケッチに円を描きます

  • 押し出し: プロファイルを 3D ボディに押し出します

  • 回転: 軸を中心にプロファイルを回転します

修正する

  • フィレット: 選択したエッジにフィレットを追加します

  • 面取り: 選択したエッジに面取りを追加します

  • シェル: 指定された壁厚のソリッドボディをくり抜きます

  • 結合: ブール演算を使用して2つのボディを結合します

輸出

  • ExportBody : ボディをファイルにエクスポートします

🔌 MCP統合

このサーバーを 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 : ツールの名前

  • 説明: ツールの機能

  • パラメータ: ツールが受け入れるパラメータ

  • docs : 関連するFusion APIドキュメントへのリンク

ツール定義の例:

{
  "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"
}

📝 スクリプト生成

サーバーはツール呼び出しに基づいて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
        
        # 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()))

🧪 サーバーの拡張

新しいツールの追加

  1. src/tool_registry.jsonに新しいツール定義を追加します。

  2. src/script_generator.pySCRIPT_TEMPLATESにスクリプト テンプレートを追加します。

  3. src/script_generator.py_process_parametersにパラメータ処理ロジックを追加します。

📚 ドキュメントリンク

🔄今後の機能強化

  • コンテキスト認識操作のためのセッション状態追跡

  • 動的ツール登録

  • ソケットまたはファイルポーリングによる自動化

  • その他のFusionコマンド

📄 ライセンス

このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については LICENSE ファイルを参照してください。

-
security - not tested
A
license - permissive license
-
quality - not tested

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/ArchimedesCrypto/fusion360-mcp-server'

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