{"id":"quellant-openscad-mcp","name":"openscad-mcp","homepage":null,"repo_url":"https://github.com/quellant/openscad-mcp","category":"ai-ml","subcategories":[],"tags":["mcp","openscad","3d-modeling","rendering","tooling","fastmcp","python"],"what_it_does":"Provides a Model Context Protocol (MCP) server (built with FastMCP) that lets an AI assistant render, export, validate, and analyze OpenSCAD (.scad) models by running an OpenSCAD subprocess. Supports stdio transport for MCP with optional HTTP/SSE via environment configuration, and includes workspace file management and render caching options.","use_cases":["Render OpenSCAD models from specific camera/view presets and export images","Batch rendering of standard perspectives (front/back/left/right/top/bottom/isometric)","Export models to multiple CAD formats (STL/3MF/AMF/OFF/DXF/SVG)","Validate OpenSCAD code (syntax-check, warnings, echo output)","Analyze geometry (bounding box/dimensions/triangle count via STL export)","Manage .scad files in a workspace (create/get/update/list/delete)","Discover available OpenSCAD libraries and verify OpenSCAD installation/version"],"not_for":["Running in untrusted remote environments without sandboxing (it executes OpenSCAD on provided code)","Long-lived multi-tenant SaaS use without strong isolation controls","Use as a security boundary for file access (allowed_paths is configurable, and defaults indicate potential unrestricted access)","Producing authoritative engineering results without validating outputs"],"best_when":"You want local/controlled tool-assisted CAD rendering workflows where an agent needs structured MCP tools for OpenSCAD modeling and export.","avoid_when":"You cannot restrict file paths / workspace access or you need strict governance over arbitrary .scad code execution.","alternatives":["Local OpenSCAD scripting + CLI (render/export/analyze) invoked by your own wrapper","Other MCP servers or tool wrappers for CAD that expose only read-only or sandboxed capabilities","Using OpenSCAD in CI with a dedicated runner/container and invoking a custom API for rendering"],"af_score":71.5,"security_score":44.8,"reliability_score":36.2,"package_type":"mcp_server","discovery_source":["github"],"priority":"high","status":"evaluated","version_evaluated":null,"last_evaluated":"2026-03-30T15:19:52.075836+00:00","interface":{"has_rest_api":false,"has_graphql":false,"has_grpc":false,"has_mcp_server":true,"mcp_server_url":null,"has_sdk":false,"sdk_languages":[],"openapi_spec_url":null,"webhooks":false},"auth":{"methods":["None described for MCP tool invocation"],"oauth":false,"scopes":false,"notes":"Authentication/authorization for MCP is not described in the provided README. Access control appears to be driven by how/where you run the server (e.g., local stdio, project/user scopes in client tooling) and configurable file/path restrictions."},"pricing":{"model":null,"free_tier_exists":false,"free_tier_limits":null,"paid_tiers":[],"requires_credit_card":false,"estimated_workload_costs":null,"notes":"Open-source (MIT) package; no pricing described."},"requirements":{"requires_signup":false,"requires_credit_card":false,"domain_verification":false,"data_residency":[],"compliance":[],"min_contract":null},"agent_readiness":{"af_score":71.5,"security_score":44.8,"reliability_score":36.2,"mcp_server_quality":88.0,"documentation_accuracy":82.0,"error_message_quality":0.0,"error_message_notes":null,"auth_complexity":95.0,"rate_limit_clarity":55.0,"tls_enforcement":30.0,"auth_strength":25.0,"scope_granularity":40.0,"dependency_hygiene":70.0,"secret_handling":70.0,"security_notes":"Security controls mentioned include path validation (scad_file/include_paths vs configurable allowed_paths), file size limits (max_file_size_mb), variable name validation (regex), subprocess timeout (default 300s), and model name validation (prevents path traversal). However, the README does not describe authentication/authorization for MCP requests, and defaults suggest allowed_paths may be null (potentially unrestricted file access). TLS/auth strength for HTTP/SSE transport are not documented.","uptime_documented":0.0,"version_stability":55.0,"breaking_changes_history":40.0,"error_recovery":50.0,"idempotency_support":"false","idempotency_notes":"Some tools perform mutations (create/update/delete model files, clear_cache) and may not be idempotent. Render/export operations are likely repeatable for the same inputs, but idempotency is not documented.","pagination_style":"none","retry_guidance_documented":false,"known_agent_gotchas":["Rendering and exporting execute OpenSCAD subprocesses; long runtimes/timeouts can occur depending on model complexity.","File operations may be constrained by allowed_paths and max_file_size_mb; ensure the agent respects workspace and path rules.","Variable and model name validation exists, but agents may still send large/complex inputs that trigger timeouts or size limits.","If using HTTP/SSE transport, ensure MCP_HOST/MCP_PORT and network exposure are appropriate and not unintentionally public."]}}