{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"github_mcp-neka-nat-freecad-mcp","slug":"mcp-neka-nat-freecad-mcp","name":"freecad-mcp","type":"mcp","url":"https://github.com/neka-nat/freecad-mcp","page_url":"https://unfragile.ai/mcp-neka-nat-freecad-mcp","categories":["mcp-servers"],"tags":["claude","freecad","mcp"],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"github_mcp-neka-nat-freecad-mcp__cap_0","uri":"capability://tool.use.integration.mcp.to.freecad.protocol.bridging.with.xml.rpc.tunneling","name":"mcp-to-freecad protocol bridging with xml-rpc tunneling","description":"Implements a three-tier architecture that translates Model Context Protocol (MCP) tool calls from AI clients into XML-RPC method invocations against a FreeCAD addon server running on localhost:9875. The FastMCP framework exposes FreeCAD operations as standardized MCP tools, while a singleton FreeCADConnection class manages the XML-RPC client connection with automatic reconnection and error handling. This decouples AI frameworks (Claude Desktop, LangChain, Google ADK) from FreeCAD's GUI thread, enabling safe asynchronous control.","intents":["Connect Claude or other AI agents to FreeCAD for automated CAD modeling","Enable LangChain agents to orchestrate multi-step FreeCAD workflows","Integrate FreeCAD into AI-driven design automation pipelines"],"best_for":["AI/ML engineers building autonomous design agents","Teams integrating FreeCAD into LLM-powered CAD workflows","Developers extending Claude Desktop with CAD capabilities"],"limitations":["XML-RPC communication adds ~50-200ms latency per tool call depending on network conditions","Single-threaded RPC server in FreeCAD addon processes requests sequentially via QTimer callback queue","No built-in authentication or encryption for localhost RPC channel","Requires FreeCAD addon to be manually installed and running before MCP server starts"],"requires":["FreeCAD 0.20+ with Python 3.9+ support","FreeCADMCP addon installed in FreeCAD's Mod directory","Python 3.9+ for MCP server process","Claude Desktop 0.1.0+ or compatible MCP client","Port 9875 available on localhost"],"input_types":["MCP tool call with JSON parameters","Python code strings for execute_code tool","Object property dictionaries (name, type, parameters)"],"output_types":["JSON-serialized FreeCAD object metadata","PNG screenshots (base64-encoded)","Python execution results (stdout/stderr)","Boolean success/failure with error messages"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-neka-nat-freecad-mcp__cap_1","uri":"capability://automation.workflow.parametric.cad.object.creation.with.multi.workbench.type.support","name":"parametric cad object creation with multi-workbench type support","description":"Exposes a create_object MCP tool that instantiates FreeCAD objects across multiple workbenches (Part, PartDesign, Draft, Sketcher, Assembly, etc.) by accepting a type string and property dictionary. The RPC server's object creation logic maps type names to FreeCAD class constructors, sets properties via setattr, and returns serialized object metadata including UUID, label, and computed properties. Supports complex objects like PartDesign::Body with nested features and Draft objects with geometric constraints.","intents":["Programmatically create 3D primitives (boxes, cylinders, spheres) from AI-generated specifications","Build parametric assemblies where dimensions are driven by LLM reasoning","Generate Draft sketches and technical drawings from natural language descriptions"],"best_for":["Generative design systems using AI to explore design spaces","Automated part library generators","AI-assisted CAD for non-expert users"],"limitations":["Limited to object types explicitly supported in the RPC server's type registry — custom workbench objects require code modification","Property validation happens post-creation; invalid parameters may create malformed objects","No built-in constraint solving — PartDesign features require properly sequenced dependencies","Nested object hierarchies (e.g., sketches within bodies) require multiple sequential create_object calls"],"requires":["FreeCAD 0.20+ with target workbench installed","Object type string matching FreeCAD's internal class names (e.g., 'Part::Box', 'Draft::Circle')","Valid property dictionary with correct data types for the object class"],"input_types":["JSON object with 'type' (string), 'name' (string), 'properties' (dict)"],"output_types":["JSON object with 'id', 'label', 'type', 'properties', 'computed_properties'"],"categories":["automation-workflow","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-neka-nat-freecad-mcp__cap_10","uri":"capability://tool.use.integration.automatic.freecad.connection.management.with.singleton.pattern.and.reconnection.logic","name":"automatic freecad connection management with singleton pattern and reconnection logic","description":"Implements a FreeCADConnection singleton class that manages the XML-RPC client connection to the FreeCAD addon server. The singleton maintains a persistent connection, automatically reconnects on failure with exponential backoff, and provides a unified interface for all RPC calls. Connection state is cached to avoid repeated connection attempts. The MCP server instantiates this singleton once and reuses it for all tool invocations, ensuring connection pooling and efficient resource usage.","intents":["Maintain a persistent, reliable connection to FreeCAD across multiple MCP tool calls","Handle transient network failures or FreeCAD restarts gracefully","Reduce connection overhead by reusing a single RPC client"],"best_for":["Long-running AI workflows that issue many sequential FreeCAD commands","Resilient systems that must tolerate FreeCAD restarts or temporary unavailability","Production deployments where connection reliability is critical"],"limitations":["Singleton pattern makes testing difficult — connection state is global and persists across test cases","Exponential backoff may delay reconnection unnecessarily if FreeCAD is restarted quickly","No connection pooling for multiple concurrent clients — all requests share a single RPC connection","Connection timeout is hardcoded; no configuration mechanism for different network conditions","No health check mechanism — stale connections may not be detected until next operation"],"requires":["FreeCAD addon running on localhost:9875","Network connectivity to localhost"],"input_types":["Internal: RPC method name (string) + args"],"output_types":["Internal: RPC response (any JSON-serializable type)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-neka-nat-freecad-mcp__cap_11","uri":"capability://data.processing.analysis.object.serialization.with.computed.property.calculation.and.type.aware.json.encoding","name":"object serialization with computed property calculation and type-aware json encoding","description":"Implements object serialization logic in the RPC server that converts FreeCAD objects to JSON-compatible dictionaries. The serializer traverses object attributes, computes derived properties (e.g., bounding box, volume, mass), handles special types (lists, nested objects, geometry data), and encodes them as JSON. Computed properties are calculated on-demand and cached per object. The serializer handles type coercion for non-JSON types (e.g., converting vectors to tuples, colors to hex strings). Enables AI agents to reason about object state without understanding FreeCAD's internal object model.","intents":["Convert FreeCAD objects to JSON for transmission in MCP responses","Calculate derived properties (volume, mass, bounding box) for design analysis","Enable AI agents to inspect object state without FreeCAD API knowledge"],"best_for":["Design analysis systems that need to extract geometry metrics","AI agents that reason about object properties in JSON format","Data extraction pipelines that convert CAD models to structured data"],"limitations":["Computed property calculation is expensive for complex objects — may add 100-500ms per serialization","Caching of computed properties may become stale if object is modified externally","Complex geometry data (mesh vertices, spline control points) may produce very large JSON responses","Type coercion is lossy — some FreeCAD types cannot be faithfully represented in JSON","No control over which properties are serialized — all properties are included even if not needed"],"requires":["FreeCAD object with accessible attributes","Computed property calculation functions for each object type"],"input_types":["Internal: FreeCAD object (App.DocumentObject)"],"output_types":["JSON object with 'id', 'label', 'type', 'properties' (dict), 'computed_properties' (dict)"],"categories":["data-processing-analysis","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-neka-nat-freecad-mcp__cap_2","uri":"capability://image.visual.live.cad.viewport.screenshot.capture.with.viewpoint.control","name":"live cad viewport screenshot capture with viewpoint control","description":"Implements a get_view MCP tool that captures PNG screenshots of the FreeCAD 3D viewport from specified viewpoints (Isometric, Front, Top, Bottom, Left, Right, etc.) by invoking FreeCAD's camera positioning API and rendering the scene. Screenshots are base64-encoded and returned in the MCP response, enabling AI agents to receive visual feedback on model state without opening the FreeCAD GUI. The RPC server handles viewport rendering synchronously within the Qt event loop.","intents":["Provide visual feedback to Claude or other AI agents about current CAD model state","Enable AI-driven iterative design refinement based on visual inspection","Generate documentation or design review images programmatically"],"best_for":["Multimodal AI agents that reason about both geometry and visual appearance","Automated design validation systems that inspect rendered models","AI-assisted CAD tutorials or design documentation generators"],"limitations":["Screenshot generation is synchronous and blocks the RPC server for ~500ms-2s depending on model complexity","Rendering quality depends on FreeCAD's viewport settings and graphics hardware — no control over resolution or anti-aliasing from MCP layer","Base64 encoding adds ~33% overhead to response size; large screenshots may exceed MCP message size limits","Viewpoint presets are fixed; arbitrary camera angles require custom code"],"requires":["FreeCAD GUI running with active 3D viewport","Valid viewpoint name from predefined set (Isometric, Front, Top, etc.)","Sufficient graphics memory for viewport rendering"],"input_types":["JSON object with 'viewpoint' (string, e.g., 'Isometric')"],"output_types":["JSON object with 'image' (base64-encoded PNG), 'viewpoint' (string), 'timestamp' (ISO 8601)"],"categories":["image-visual","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-neka-nat-freecad-mcp__cap_3","uri":"capability://code.generation.editing.arbitrary.python.code.execution.within.freecad.s.runtime.context","name":"arbitrary python code execution within freecad's runtime context","description":"Exposes an execute_code MCP tool that accepts arbitrary Python code strings and executes them within FreeCAD's Python interpreter, with access to the FreeCAD API (App, Gui modules) and the current document. Code execution happens synchronously in the RPC server's thread, with stdout/stderr captured and returned in the response. This enables AI agents to perform complex operations not exposed by dedicated MCP tools, such as custom geometry calculations, macro-like workflows, or debugging.","intents":["Execute complex multi-step FreeCAD workflows that aren't covered by standard MCP tools","Perform custom geometry calculations or transformations using FreeCAD's math libraries","Debug or inspect FreeCAD document state programmatically"],"best_for":["Advanced users building custom AI-driven CAD automation","Researchers prototyping novel generative design algorithms","Teams with domain-specific FreeCAD macros to integrate into AI workflows"],"limitations":["No sandboxing — arbitrary code execution poses security risk if MCP server is exposed to untrusted clients","Code execution is synchronous and blocks the RPC server; long-running code freezes FreeCAD GUI","No built-in timeout mechanism; infinite loops or resource-intensive operations can hang FreeCAD","Stdout/stderr capture may miss GUI-related output or asynchronous callbacks","Code must be syntactically valid Python; no error recovery or partial execution"],"requires":["FreeCAD Python environment with App and Gui modules available","Valid Python 3 syntax in code string","Trust in the MCP client sending code (no authentication layer)"],"input_types":["JSON object with 'code' (string, Python code)"],"output_types":["JSON object with 'result' (string, return value or stdout), 'error' (string or null), 'execution_time_ms' (number)"],"categories":["code-generation-editing","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-neka-nat-freecad-mcp__cap_4","uri":"capability://data.processing.analysis.document.and.object.state.inspection.with.hierarchical.querying","name":"document and object state inspection with hierarchical querying","description":"Implements get_objects and get_object MCP tools that query FreeCAD document structure and return serialized object metadata including properties, computed values, and hierarchical relationships. The RPC server traverses the document's object tree, serializes each object's attributes to JSON, and handles special cases like sketches with geometry data and assemblies with part references. Enables AI agents to understand current CAD state without visual inspection.","intents":["Query current CAD document structure to inform next design steps","Inspect object properties to validate previous operations","Extract geometry metadata for analysis or reporting"],"best_for":["AI agents implementing feedback loops that inspect model state","Automated design validation systems","CAD-to-data extraction pipelines"],"limitations":["Serialization of complex geometry (e.g., mesh data, spline control points) may produce large JSON responses","Computed properties are calculated on-demand; expensive calculations may slow queries","Hierarchical relationships are flattened to JSON; deep nesting can be hard to traverse","No filtering or query language — must return all object properties even if only subset is needed"],"requires":["Active FreeCAD document","Valid object ID or document reference"],"input_types":["JSON object with optional 'object_id' (string) to query specific object, or empty to query all"],"output_types":["JSON array of objects with 'id', 'label', 'type', 'properties', 'computed_properties', 'children' (array)"],"categories":["data-processing-analysis","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-neka-nat-freecad-mcp__cap_5","uri":"capability://automation.workflow.object.property.mutation.with.type.aware.validation","name":"object property mutation with type-aware validation","description":"Exposes an edit_object MCP tool that modifies properties of existing FreeCAD objects by accepting an object ID and property dictionary, then using Python's setattr to apply changes. The RPC server validates property types against the object's class definition and returns updated object metadata. Supports both simple properties (dimensions, colors) and complex properties (lists, nested objects). Changes are immediately reflected in the FreeCAD document.","intents":["Adjust parametric dimensions based on AI reasoning or user feedback","Update object appearance (colors, transparency) for design iteration","Modify constraint values in sketches or assemblies"],"best_for":["Parametric design systems where AI refines dimensions iteratively","Design optimization loops that adjust properties based on analysis","Interactive AI-assisted CAD where user feedback drives property updates"],"limitations":["No type checking before setattr — invalid property types may cause FreeCAD errors or silent failures","No validation of property constraints (e.g., negative dimensions) — invalid values may create degenerate geometry","Changes are applied immediately without undo/redo support from MCP layer","Complex properties (e.g., nested objects, arrays) may not serialize/deserialize correctly","No dependency tracking — changing a property may invalidate dependent features without notification"],"requires":["Valid object ID from existing document","Property names matching FreeCAD's object class attributes","Correct data types for each property"],"input_types":["JSON object with 'object_id' (string), 'properties' (dict with property names and values)"],"output_types":["JSON object with updated 'id', 'label', 'type', 'properties', 'computed_properties'"],"categories":["automation-workflow","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-neka-nat-freecad-mcp__cap_6","uri":"capability://automation.workflow.object.deletion.with.cascading.dependency.handling","name":"object deletion with cascading dependency handling","description":"Implements a delete_object MCP tool that removes objects from the FreeCAD document by ID. The RPC server invokes FreeCAD's object removal API, which handles cascading deletion of dependent features (e.g., removing a sketch deletes constraints and geometry). Returns success/failure status and updated document state. Enables AI agents to clean up intermediate objects or reset design iterations.","intents":["Remove failed design iterations to reset the model","Clean up temporary objects created during AI-driven workflows","Manage object hierarchy by deleting parent features"],"best_for":["Iterative design systems that create and discard candidate solutions","Automated cleanup routines in AI workflows","Design exploration agents that need to backtrack"],"limitations":["Deletion is immediate and irreversible from MCP layer (no undo support)","Cascading deletion may remove more objects than intended if dependencies are complex","No dry-run mode to preview what will be deleted","Deleting objects with external references may leave dangling pointers"],"requires":["Valid object ID from existing document","Object must not be locked or protected"],"input_types":["JSON object with 'object_id' (string)"],"output_types":["JSON object with 'success' (boolean), 'message' (string), 'deleted_count' (number)"],"categories":["automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-neka-nat-freecad-mcp__cap_7","uri":"capability://automation.workflow.multi.document.lifecycle.management.with.creation.and.enumeration","name":"multi-document lifecycle management with creation and enumeration","description":"Exposes create_document and list_documents MCP tools that manage FreeCAD document lifecycle. create_document instantiates a new FreeCAD document with optional name and returns its ID; list_documents enumerates all open documents with metadata. The RPC server maintains document references and handles FreeCAD's document manager API. Enables AI agents to organize work across multiple design files.","intents":["Create separate documents for different design variants or iterations","List available documents to select context for subsequent operations","Organize multi-part assemblies across linked documents"],"best_for":["Multi-variant design exploration where each variant lives in a separate document","Batch CAD generation systems processing multiple design requests","Assembly workflows that link parts from multiple documents"],"limitations":["No document save/load functionality in MCP layer — documents exist only in FreeCAD's memory","No inter-document linking or reference management from MCP","Document names are not guaranteed unique; enumeration returns all documents without filtering","No document-level access control or permissions"],"requires":["FreeCAD instance with document manager available","Unique document name (optional, auto-generated if not provided)"],"input_types":["JSON object with optional 'name' (string) for create_document; empty object for list_documents"],"output_types":["JSON object with 'id' (string), 'name' (string), 'object_count' (number) for create_document; JSON array of document objects for list_documents"],"categories":["automation-workflow","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-neka-nat-freecad-mcp__cap_8","uri":"capability://memory.knowledge.pre.built.parts.library.insertion.with.metadata.discovery","name":"pre-built parts library insertion with metadata discovery","description":"Implements insert_part_from_library and get_parts_list MCP tools that provide access to FreeCAD's parts library (or custom libraries). get_parts_list enumerates available parts with metadata (name, category, description, thumbnail); insert_part_from_library instantiates a part into the current document by name or ID. The RPC server queries the library index and handles part instantiation, returning the created object's metadata. Enables AI agents to compose designs from pre-built components.","intents":["Discover available parts to inform design composition decisions","Insert standard components (fasteners, connectors, structural elements) into assemblies","Build designs by combining pre-built parts rather than creating from scratch"],"best_for":["Assembly design systems that compose products from standard parts","Generative design agents that select from part libraries","Non-expert users building designs with pre-validated components"],"limitations":["Library must be pre-indexed and available to FreeCAD — no dynamic library discovery","Part metadata (descriptions, categories) depends on library curation — may be incomplete or outdated","Inserted parts may require post-insertion modifications (positioning, scaling) not handled by this tool","No search or filtering capability — must enumerate entire library to find parts","Library paths are hardcoded or configured externally; no dynamic library path management from MCP"],"requires":["FreeCAD parts library installed and indexed","Valid part name or ID from library","Active document to insert part into"],"input_types":["JSON object with 'part_name' (string) or 'part_id' (string) for insert_part_from_library; empty object for get_parts_list"],"output_types":["JSON array of part metadata objects with 'id', 'name', 'category', 'description', 'thumbnail_url' for get_parts_list; JSON object with inserted part's 'id', 'label', 'type', 'properties' for insert_part_from_library"],"categories":["memory-knowledge","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-neka-nat-freecad-mcp__cap_9","uri":"capability://automation.workflow.thread.safe.gui.operation.queuing.with.qt.event.loop.integration","name":"thread-safe gui operation queuing with qt event loop integration","description":"Implements a thread-safe request queue (rpc_request_queue) in the FreeCAD addon that serializes all RPC operations through FreeCAD's Qt event loop via QTimer callbacks. The RPC server runs in a separate thread from FreeCAD's GUI, so all operations that touch the document or viewport are queued and processed synchronously by the Qt main thread via process_gui_tasks() callback. This prevents race conditions and GUI crashes from concurrent access. The queue uses Python's thread-safe Queue class and processes tasks in FIFO order.","intents":["Ensure thread-safe access to FreeCAD's GUI and document from external MCP clients","Prevent race conditions when multiple AI agents or concurrent requests modify the same document","Maintain FreeCAD GUI responsiveness during long-running RPC operations"],"best_for":["Multi-client AI systems where multiple agents may issue concurrent FreeCAD commands","Long-running design automation workflows that must not freeze the FreeCAD GUI","Production systems requiring high reliability and crash-free operation"],"limitations":["Queuing adds latency (~10-50ms per operation) due to Qt event loop scheduling","FIFO queue ordering means slow operations block subsequent requests","No priority queue — all operations have equal priority regardless of urgency","Queue size is unbounded — pathological clients can exhaust memory by flooding with requests","No timeout mechanism — stuck operations block the queue indefinitely"],"requires":["FreeCAD addon running with Qt event loop active","RPC server thread separate from Qt main thread (enforced by architecture)"],"input_types":["Internal: callable (function) + args tuple"],"output_types":["Internal: return value from queued function"],"categories":["automation-workflow","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":41,"verified":false,"data_access_risk":"moderate","permissions":["FreeCAD 0.20+ with Python 3.9+ support","FreeCADMCP addon installed in FreeCAD's Mod directory","Python 3.9+ for MCP server process","Claude Desktop 0.1.0+ or compatible MCP client","Port 9875 available on localhost","FreeCAD 0.20+ with target workbench installed","Object type string matching FreeCAD's internal class names (e.g., 'Part::Box', 'Draft::Circle')","Valid property dictionary with correct data types for the object class","FreeCAD addon running on localhost:9875","Network connectivity to localhost"],"failure_modes":["XML-RPC communication adds ~50-200ms latency per tool call depending on network conditions","Single-threaded RPC server in FreeCAD addon processes requests sequentially via QTimer callback queue","No built-in authentication or encryption for localhost RPC channel","Requires FreeCAD addon to be manually installed and running before MCP server starts","Limited to object types explicitly supported in the RPC server's type registry — custom workbench objects require code modification","Property validation happens post-creation; invalid parameters may create malformed objects","No built-in constraint solving — PartDesign features require properly sequenced dependencies","Nested object hierarchies (e.g., sketches within bodies) require multiple sequential create_object calls","Singleton pattern makes testing difficult — connection state is global and persists across test cases","Exponential backoff may delay reconnection unnecessarily if FreeCAD is restarted quickly","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.4263715998946108,"quality":0.34,"ecosystem":0.48999999999999994,"match_graph":0.25,"freshness":0.75,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-05-24T12:16:22.065Z","last_scraped_at":"2026-05-03T14:23:34.856Z","last_commit":"2026-04-29T02:49:39Z"},"community":{"stars":880,"forks":146,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=mcp-neka-nat-freecad-mcp","compare_url":"https://unfragile.ai/compare?artifact=mcp-neka-nat-freecad-mcp"}},"signature":"lxpaF8Ln2dypdOlN42N3YdmUdFb187yOWRcfNT0/2sB5yOOieuOZfeFPOEVGwEUffs1wuep6LwrtwonHwJmmDg==","signedAt":"2026-06-22T08:44:39.818Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/mcp-neka-nat-freecad-mcp","artifact":"https://unfragile.ai/mcp-neka-nat-freecad-mcp","verify":"https://unfragile.ai/api/v1/verify?slug=mcp-neka-nat-freecad-mcp","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}