Skip to main content
Glama

FreeCAD MCP

by bonninr
README.md4.74 kB
# FreeCAD MCP (Model Control Protocol) ## Overview The FreeCAD MCP (Model Control Protocol) provides a simplified interface for interacting with FreeCAD through a server-client architecture. This allows users to execute commands and retrieve information about the current FreeCAD document and scene. https://github.com/user-attachments/assets/5acafa17-4b5b-4fef-9f6c-617e85357d44 ## Configuration To configure the MCP server, you can use a JSON format to specify the server settings. Below is an example configuration: ```json { "mcpServers": { "freecad": { "command": "C:\\ProgramData\\anaconda3\\python.exe", "args": [ "C:\\Users\\USER\\AppData\\Roaming\\FreeCAD\\Mod\\freecad_mcp\\src\\freecad_bridge.py" ] } } } ``` ### Configuration Details - **command**: The path to the Python executable that will run the FreeCAD MCP server. This can vary based on your operating system: - **Windows**: Typically, it might look like `C:\\ProgramData\\anaconda3\\python.exe` or `C:\\Python39\\python.exe`. - **Linux**: It could be `/usr/bin/python3` or the path to your Python installation. - **macOS**: Usually, it would be `/usr/local/bin/python3` or the path to your Python installation. - **args**: An array of arguments to pass to the Python command. The first argument should be the path to the `freecad_bridge.py` script, which is responsible for handling the MCP server logic. Make sure to adjust the path according to your installation. ### Example for Different Operating Systems #### Windows ```json { "mcpServers": { "freecad": { "command": "C:\\ProgramData\\anaconda3\\python.exe", "args": [ "C:\\Users\\USER\\AppData\\Roaming\\FreeCAD\\Mod\\freecad_mcp\\src\\freecad_bridge.py" ] } } } ``` #### Linux ```json { "mcpServers": { "freecad": { "command": "/usr/bin/python3", "args": [ "/home/USER/.FreeCAD/Mod/freecad_mcp/src/freecad_bridge.py" ] } } } ``` #### macOS ```json { "mcpServers": { "freecad": { "command": "/usr/local/bin/python3", "args": [ "/Users/USER/Library/Preferences/FreeCAD/Mod/freecad_mcp/src/freecad_bridge.py" ] } } } ``` ## Features The FreeCAD MCP currently supports the following functionalities: ### 1. `get_scene_info` - **Description**: Retrieves comprehensive information about the current FreeCAD document, including: - Document properties (name, label, filename, object count) - Detailed object information (type, position, rotation, shape properties) - Sketch data (geometry, constraints) - View information (camera position, direction, etc.) ### 2. `run_script` - **Description**: Executes arbitrary Python code within the FreeCAD context. This allows users to perform complex operations, create new objects, modify existing ones, and automate tasks using FreeCAD's Python API. ### Example Usage To use the FreeCAD MCP, you can connect to the server and send commands as follows: ```python 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() ``` ## Installation 1. Clone the repository or download the files. 2. Place the `freecad_mcp` directory in your FreeCAD modules directory: - Windows: `%APPDATA%/FreeCAD/Mod/` - Linux: `~/.FreeCAD/Mod/` - macOS: `~/Library/Preferences/FreeCAD/Mod/` 3. Restart FreeCAD and select the "FreeCAD MCP" workbench from the workbench selector. ## Contributing Feel free to contribute by submitting issues or pull requests. Your feedback and contributions are welcome! ## License This project is licensed under the MIT License. See the LICENSE file for details.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bonninr/freecad_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server