Fusion 360 MCP Server について
Cline と Autodesk Fusion 360 を接続する MCP サーバーで、ツールバー レベルの Fusion コマンドを呼び出し可能なツールとして公開します。自然言語で 3D モデリング手順を指定したいユーザーに向いています。Fusion 360 のスクリプトエディターで実行できる Python スクリプトを返します。
主な機能
- 01スケッチ作成と長方形・円の描画
- 02押し出しと回転による 3D ボディの作成
- 03フィレット、面取り、シェル、ブーリアン結合
- 04ボディのファイル書き出し
- 05Fusion 360 向け Python スクリプトの生成
活用シーン
- 01プロンプトから角丸の単純なソリッドを生成する
- 02複数のモデリングツールを連結して1つのスクリプトを生成する
- 03Cline から Fusion 360 のモデリングを支援する
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Fusion 360 MCP サーバー
Cline と Autodesk Fusion 360 の間をつなぐ Model Context Protocol(MCP)サーバーです。このサーバーは、Fusion の API に直接対応する、Fusion 360 のツールバーと同等のコマンドを呼び出し可能なツールとして公開します。
🧠 概要
このプロジェクトにより、Cline は以下の操作を行えます。
- 自然言語のプロンプトを解析する(例:「角を丸くした箱を作成する」)
- Fusion のツール操作に変換する(例:CreateSketch → DrawRectangle → Extrude → Fillet)
- この MCP サーバーを通じてそれらのツールを呼び出す
- Fusion 360 で実行できる Python スクリプトを返す
🛠️ インストール
前提条件
- Python 3.9 以降
- Autodesk Fusion 360
セットアップ
-
このリポジトリをクローンします。
git clone https://github.com/yourusername/fusion360-mcp-server.git cd fusion360-mcp-server -
依存関係をインストールします。
pip install -r requirements.txt
🚀 使用方法
HTTP サーバーとして実行する
cd src
python main.py
これにより、FastAPI サーバーが http://127.0.0.1:8000 で起動します。
MCP サーバーとして実行する
cd src
python main.py --mcp
これにより、サーバーが MCP モードで起動し、標準入力から読み取り、標準出力に書き込みます。
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:アクティブなスケッチに円を描画します
- Extrude:プロファイルを押し出して 3D ボディを作成します
- Revolve:プロファイルを軸の周りに回転させます
修正
- Fillet:選択したエッジにフィレットを追加します
- Chamfer:選択したエッジに面取りを追加します
- Shell:指定した壁厚でソリッドボディを中空にします
- Combine:ブーリアン演算を使用して 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:ツールの名前
- description:ツールの機能
- parameters:ツールが受け付けるパラメーター
- 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()))
🧪 サーバーの拡張
ツールの追加
src/tool_registry.jsonに新しいツール定義を追加しますsrc/script_generator.pyのSCRIPT_TEMPLATESにスクリプトテンプレートを追加しますsrc/script_generator.pyの_process_parametersにパラメーター処理ロジックを追加します
📚 ドキュメントへのリンク
🔄 今後の拡張
- コンテキストを考慮した操作のためのセッション状態の追跡
- 動的なツール登録
- ソケットまたはファイルのポーリングによる自動化
- さらなる Fusion コマンド
📄 ライセンス
このプロジェクトは MIT ライセンスのもとでライセンスされています。詳細については LICENSE ファイルを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
