FreeCAD MCP
FreeCAD MCP (Model Control Protocol) — это надстройка для FreeCAD, которая открывает возможность управления документами и сценой через внешние скрипты и AI-агентов. Реализована по принципу сервер-клиент: серверный модуль запускается внутри FreeCAD, а клиент (ваше приложение, бот или MCP-клиент) отправляет команды и получает данные.
Возможности
Сейчас доступны две основные операции:
-
get_scene_info — запрашивает полную информацию о текущем документе:
- свойства документа (имя, метка, путь к файлу, количество объектов)
- детальные данные по каждому объекту: тип, положение, поворот, свойства формы
- данные эскизов (геометрия, ограничения)
- состояние камеры (позиция, направление и т.д.)
-
run_script — выполняет произвольный Python-код внутри контекста FreeCAD. Это позволяет создавать объекты, изменять геометрию, запускать расчёты — всё, что доступно через API FreeCAD.
Установка
-
Скачайте репозиторий (или скопируйте папку freecad_mcp) и поместите её в каталог модулей FreeCAD:
- Windows:
%APPDATA%/FreeCAD/Mod/
- Linux:
~/.FreeCAD/Mod/
- macOS:
~/Library/Preferences/FreeCAD/Mod/
-
Перезапустите FreeCAD и выберите верстак FreeCAD MCP.
Настройка MCP-сервера
Если вы используете MCP-совместимый клиент (Claude Desktop, VS Code и т.п.), добавьте в конфигурацию следующий блок (пример для Windows):
{
"mcpServers": {
"freecad": {
"command": "C:\\ProgramData\\anaconda3\\python.exe",
"args": [
"C:\\Users\\USER\\AppData\\Roaming\\FreeCAD\\Mod\\freecad_mcp\\src\\freecad_bridge.py"
]
}
}
}
Поле command указывает на интерпретатор Python, в котором установлен FreeCAD (можно узнать командой where python или which python3). Поле args содержит путь к скрипту freecad_bridge.py — он отвечает за логику MCP-сервера.
Примеры для разных ОС
Linux
{
"command": "/usr/bin/python3",
"args": [
"/home/USER/.FreeCAD/Mod/freecad_mcp/src/freecad_bridge.py"
]
}
macOS
{
"command": "/usr/local/bin/python3",
"args": [
"/Users/USER/Library/Preferences/FreeCAD/Mod/freecad_mcp/src/freecad_bridge.py"
]
}
Быстрый старт
Сервер по умолчанию слушает порт 9876. Ниже приведён пример клиента на Python для получения информации о сцене и создания параллелепипеда.
import socket
import json
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('localhost', 9876))
# Получить информацию о документе
command = {"type": "get_scene_info"}
client.sendall(json.dumps(command).encode('utf-8'))
response = client.recv(4096)
print(json.loads(response.decode('utf-8')))
# Выполнить скрипт — создать коробку
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'))
response = client.recv(4096)
print(json.loads(response.decode('utf-8')))
client.close()
Как это работает
После установки и выбора верстака FreeCAD запускает TCP-сервер на localhost:9876. Клиент (ваша программа, AI-агент или MCP-клиент) подключается и отправляет JSON-команды. Сервер обрабатывает их внутри FreeCAD и возвращает результат в формате JSON.
Предостережения
- Команда
run_script выполняет произвольный Python-код. Не подключайте сервер к публичной сети и не отправляйте скрипты из ненадёжных источников.
- Путь к Python и файлу
freecad_bridge.py должен быть абсолютным и указывать на тот Python, в котором установлен FreeCAD.
Участие в разработке
Репозиторий проекта открыт для pull request'ов и issue. Сообщения об ошибках и предложения приветствуются.
Лицензия
MIT.
Комментарии
Комментариев пока нет. Будьте первым.