FreeCAD MCP插件
一个FreeCAD插件,通过实现模型上下文协议(MCP)来启用FreeCAD和Claude AI之间通过Claude Desktop进行通信。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"freecad": {
"args": [
"/Users/USER/Library/Preferences/FreeCAD/Mod/freecad_mcp/src/freecad_bridge.py"
],
"command": "/usr/local/bin/python3"
}
}
}
该服务需要配置环境变量:PYTHONPATH
服务介绍
FreeCAD MCP (模型控制协议)
概述
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可执行文件的路径。这可能因您的操作系统而异:
- Windows: 通常可能是
C:\\ProgramData\\anaconda3\\python.exe或C:\\Python39\\python.exe。 - Linux: 可能是
/usr/bin/python3或您Python安装的路径。 - macOS: 通常是
/usr/local/bin/python3或您Python安装的路径。
- Windows: 通常可能是
-
args: 要传递给Python命令的参数数组。第一个参数应该是
freecad_bridge.py脚本的路径,该脚本负责处理MCP服务器逻辑。请根据您的安装调整路径。
不同操作系统的示例
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文件。