FreeCAD MCP(模型控制协议)通过服务器-客户端架构为与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可执行文件路径。根据操作系统不同,该路径可能有所变化:
C:\\ProgramData\\anaconda3\\python.exe
或C:\\Python39\\python.exe
。/usr/bin/python3
或你的Python安装路径。/usr/local/bin/python3
或你的Python安装路径。args:传递给Python命令的参数数组。第一个参数应该是freecad_bridge.py
脚本的路径,该脚本负责处理MCP服务器逻辑。请根据你的安装调整路径。
{
"mcpServers": {
"freecad": {
"command": "C:\\ProgramData\\anaconda3\\python.exe",
"args": [
"C:\\Users\\USER\\AppData\\Roaming\\FreeCAD\\Mod\\freecad_mcp\\src\\freecad_bridge.py"
]
}
}
}

{
"mcpServers": {
"freecad": {
"command": "/usr/bin/python3",
"args": [
"/home/USER/.FreeCAD/Mod/freecad_mcp/src/freecad_bridge.py"
]
}
}
}

{
"mcpServers": {
"freecad": {
"command": "/usr/local/bin/python3",
"args": [
"/Users/USER/Library/Preferences/FreeCAD/Mod/freecad_mcp/src/freecad_bridge.py"
]
}
}
}

FreeCAD MCP目前支持以下功能:
get_scene_info
run_script
要使用FreeCAD MCP,可以连接到服务器并按如下方式发送命令:
import socket
import json
# 连接到FreeCAD MCP服务器
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_mcp
目录放置在FreeCAD模块目录中:
%APPDATA%/FreeCAD/Mod/
~/.FreeCAD/Mod/
~/Library/Preferences/FreeCAD/Mod/
欢迎通过提交问题或拉取请求来贡献。我们欢迎您的反馈和贡献!
本项目根据MIT许可证授权。详情请参阅LICENSE文件。