Freecad について
FreeCAD MCP は、FreeCAD を Claude などの MCP 対応ツールに接続し、FreeCAD のドキュメントを読み取りおよび操作できるようにします。AI の支援を受けて3D CAD設計を行いたいユーザー向けです。
主な機能
- 01ドキュメント内のオブジェクトとシーン情報の取得
- 02FreeCAD のコンテキストでの Python スクリプト実行
- 03ソケットによるサーバーとクライアントの通信
- 04FreeCAD ワークベンチとしてのインストール
活用シーン
- 01AI アシスタントによる3Dモデリングの支援
- 02スクリプトによるFreeCADの定型操作の自動化
- 03スケッチの形状と拘束条件の確認
MCP 対応
本プロジェクトは、get_scene_info と run_script の2つの機能を通じて、FreeCAD を Claude などの MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
FreeCAD MCP(Model Control Protocol)
概要
FreeCAD MCP(Model Control Protocol)は、サーバー・クライアントアーキテクチャを通じて FreeCAD を操作するためのシンプルなインターフェースを提供します。これにより、ユーザーはコマンドを実行し、現在の FreeCAD ドキュメントやシーンに関する情報を取得できます。
https://github.com/user-attachments/assets/5acafa17-4b5b-4fef-9f6c-617e85357d44
設定
MCP サーバーを設定するには、JSON 形式でサーバーの設定を指定できます。以下に設定例を示します。
{
"mcpServers": {
"freecad": {
"command": "C:\\ProgramData\\anaconda3\\python.exe",
"args": [
"C:\\Users\\USER\\AppData\\Roaming\\FreeCAD\\Mod\\freecad_mcp\\src\\freecad_bridge.py"
]
}
}
}
設定の詳細
-
command:FreeCAD MCP サーバーを実行する Python 実行ファイルへのパスです。オペレーティングシステムによって異なります。
- Windows:通常は
C:\\ProgramData\\anaconda3\\python.exeまたはC:\\Python39\\python.exeのようになります。 - Linux:
/usr/bin/python3または Python のインストール先のパスを指定できます。 - macOS:通常は
/usr/local/bin/python3または Python のインストール先のパスを指定します。
- Windows:通常は
-
args:Python コマンドに渡す引数の配列です。最初の引数には、MCP サーバーのロジックを処理する
freecad_bridge.pyスクリプトへのパスを指定してください。インストール環境に応じてパスを調整してください。
オペレーティングシステム別の設定例
Windows
{
"mcpServers": {
"freecad": {
"command": "C:\\ProgramData\\anaconda3\\python.exe",
"args": [
"C:\\Users\\USER\\AppData\\Roaming\\FreeCAD\\Mod\\freecad_mcp\\src\\freecad_bridge.py"
]
}
}
}
Linux
{
"mcpServers": {
"freecad": {
"command": "/usr/bin/python3",
"args": [
"/home/USER/.FreeCAD/Mod/freecad_mcp/src/freecad_bridge.py"
]
}
}
}
macOS
{
"mcpServers": {
"freecad": {
"command": "/usr/local/bin/python3",
"args": [
"/Users/USER/Library/Preferences/FreeCAD/Mod/freecad_mcp/src/freecad_bridge.py"
]
}
}
}
機能
FreeCAD MCP は現在、以下の機能をサポートしています。
1. get_scene_info
- 説明:現在の FreeCAD ドキュメントに関する包括的な情報を取得します。以下が含まれます。
- ドキュメントのプロパティ(名前、ラベル、ファイル名、オブジェクト数)
- オブジェクトの詳細情報(タイプ、位置、回転、形状プロパティ)
- スケッチデータ(ジオメトリ、拘束)
- ビュー情報(カメラの位置、方向など)
2. run_script
- 説明:FreeCAD のコンテキスト内で任意の Python コードを実行します。ユーザーはこれにより、複雑な操作の実行、新しいオブジェクトの作成、既存のオブジェクトの変更、FreeCAD の Python API を使用したタスクの自動化を行えます。
使用例
FreeCAD MCP を使用するには、サーバーに接続し、次のようにコマンドを送信します。
import socket
import json
# Connect to the FreeCAD MCP server
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('localhost', 9876))
# Example: Get scene information
command = {
"type": "get_scene_info"
}
client.sendall(json.dumps(command).encode('utf-8'))
# Receive the response
response = client.recv(4096)
print(json.loads(response.decode('utf-8')))
# Example: Run a script
script = """
import FreeCAD
doc = FreeCAD.ActiveDocument
box = doc.addObject("Part::Box", "MyBox")
box.Length = 20
box.Width = 20
box.Height = 20
doc.recompute()
"""
command = {
"type": "run_script",
"params": {
"script": script
}
}
client.sendall(json.dumps(command).encode('utf-8'))
# Receive the response
response = client.recv(4096)
print(json.loads(response.decode('utf-8')))
# Close the connection
client.close()
インストール
- リポジトリをクローンするか、ファイルをダウンロードします。
freecad_mcpディレクトリを FreeCAD のモジュールディレクトリに配置します。- Windows:
%APPDATA%/FreeCAD/Mod/ - Linux:
~/.FreeCAD/Mod/ - macOS:
~/Library/Preferences/FreeCAD/Mod/
- Windows:
- FreeCAD を再起動し、ワークベンチセレクターから「FreeCAD MCP」ワークベンチを選択します。
貢献
イシューやプルリクエストを送信して、ぜひ貢献してください。フィードバックや貢献をお待ちしています。
ライセンス
このプロジェクトは MIT ライセンスのもとでライセンスされています。詳細は LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。