KilnBLOCK
Describe it or draw it — Kiln makes it real. The open-source MCP server for 3D printing: AI agents (Claude, Codex, Cursor, or any MCP client) design, generate, slice & print on Bambu Lab, Creality, Prusa, Elegoo, Klipper/Moonraker, OctoPrint, Duet/RepRapFirmware & any Marlin printer.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
The open-source MCP server for 3D printing.
Kiln lets AI agents (Claude Desktop, Claude Code, Codex, or any custom MCP client) drive real 3D printers end to end — Bambu Lab, Creality, Prusa, Elegoo, Voron, Sovol, AnkerMake, Artillery, FlashForge, QIDI, RatRig, and SparkX, over OctoPrint, Moonraker/Klipper, PrusaLink, and Direct USB.
In a single conversation, an agent can design a part, slice it, queue it on the right printer, monitor the camera, recover from failures, and ship the result. No human in the middle.
Reading this as an AI agent? **kiln3d.com/agents** is written for you rather than for the person running you: install, MCP config, the design-to-print loop, and exactly what Kiln will refuse to do and why.
pip install kiln3d
6b5e5ba35f29OBSERVED · 2026-10-08Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add kiln3d --env KILN_PRINTER_API_KEY=${KILN_PRINTER_API_KEY} -- uvx kiln3d==1.4.1.1 serveExposed tools (200)
224 read · 61 write · 6 destructive. Blast radius: 6 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
acquire_printer_lock | read | Acquire an exclusive lock on a printer for safe concurrent access. |
add_assembly_interface | write | Add a mating interface between two parts in an assembly. |
add_assembly_part | write | Add a part to an existing assembly. |
add_mesh_chamfer | write | Bevel a part |
add_mesh_fillet | write | Round a part |
analyze_design_requirements | read | Analyze a functional requirement and return technical recommendations. |
analyze_generation_feedback | read | Analyze a generated model and get feedback for improvement. |
analyze_non_manifold_edges | read | Count and classify non-manifold edges in a mesh. |
analyze_print_failure_smart | read | Classify a print failure and suggest recovery steps. |
analyze_scad_code | read | Analyze the structure of OpenSCAD code. |
analyze_structural_risks | read | Analyze an STL mesh for structural weak points. |
analyze_warping_risk | read | Analyze warping risk for a 3D model based on geometry and material. |
apply_decoration | write | Apply a saved decoration to a new model — proven settings, one call. |
apply_design_reinforcements | write | Analyze a part for structural risks, then auto-apply fixes. |
arrange_parts_on_plate | read | Pack multiple STL files onto a virtual build plate. |
assess_load_bearing | read | Analyze load-bearing characteristics of a mesh from its geometry. |
audit_original_design | write | Run a ruthless audit of an original design before printing. |
auto_arrange_parts_on_plate | read | Calculate non-overlapping XY positions for multiple parts on a print plate. |
auto_color_by_height | read | Split a 3D model into horizontal color zones by Z-height. |
auto_color_by_region | read | Split a 3D model into color zones by geometric region. |
auto_orient_model | read | Find the optimal print orientation for a 3D model. |
await_generation | read | Wait for a generation job to complete and return the final status. |
backup_database | read | Back up the Kiln database with optional credential redaction. |
boolean_mesh_op | read | Perform a CSG boolean operation on two or more STL meshes. |
build_generation_prompt | read | Build a design-aware generation prompt for original 3D creation. |
build_parametric_prompt | read | Build a prompt optimized for parametric OpenSCAD code generation. |
cache_design | read | Cache a 3D design file for faster access and version tracking. |
cache_design_with_source | read | Cache a design file alongside its parametric source code. |
cache_model | write | Add a 3D model file to the local cache for reuse across jobs. |
can_ask | read | Whether this connection |
cancel_print_recovery | read | Cancel an active recovery session. |
cancel_print_service_order | write | Cancel a print service order. |
cancel_split_plan | read | Cancel all pending/in-progress parts of a split plan. |
center_model_on_bed | read | Center a mesh on the build plate and place at z=0. |
check_assembly_clearances | read | Check clearances between all mating parts in an assembly. |
check_firmware_status | read | Check firmware version for a specific printer by name (fleet-level, firmware manager). |
check_material_environment | read | Check whether a material is compatible with an environment, and |
check_material_sufficiency | read | Check if a printer has enough material for a print job. |
check_multi_material_pairing | read | Check if two materials can be co-printed in dual extrusion. |
check_my_tier | read | Check the user |
check_print_health | read | Perform a single-shot health assessment of the current print. |
check_print_readiness | read | Single-call print readiness check with optional auto-repair. |
check_printer_material_compatibility | read | Check if a specific printer can handle a material. |
check_step_support | write | Check which STEP import backends are available on this system. |
community_stats | read | Get overall print-registry statistics. |
compare_mesh_versions | read | Compare two mesh files and report geometric differences. |
compile_scad | read | Compile OpenSCAD source into a mesh. |
complete_print_recovery | read | Mark a recovery session as completed. |
compose_assembly_parts | read | Compose all assembly parts into a single output STL file. |
compose_models | write | Merge multiple mesh files into a single combined model. |
compose_part_from_primitives | read | Build a functional part by composing geometric primitives with booleans. |
confirm_print_recovery | read | Confirm that a recovery plan should proceed. |
connect_provider_account | read | Connect a local printer to a provider account (integration path). |
consent_window_status | read | Which standing consent windows are open, for what, until when. |
consumer_onboarding | read | Get the guided onboarding workflow for users without a 3D printer. |
contribute_community_print | read | Contribute a print outcome to the community registry. |
create_assembly | write | Create a new empty assembly. |
create_print_service_order | write | Create a Print-as-a-Service order and get a quote. |
cross_section_view | read | Compute a 2D cross-section of a mesh at a cutting plane. |
decoration_info | read | Get full details about a saved decoration. |
decoration_quota_status | read | Check your decoration quota — how many decorations you |
delete_agent_note | destructive | Remove a stored note or preference. |
delete_cached_model | destructive | Remove a model from the local cache (file and metadata). |
delete_shipping_profile | destructive | Delete a saved local shipping profile. |
design_advisor | read | Ask which generation method to use for a design idea (triage tool — call FIRST). |
design_improvement_plan | read | Generate a complete structural improvement plan for a design. |
detect_mesh_pockets | read | Detect pockets and cavities in a mesh before multi-part composition. |
detect_print_failure | read | Analyze printer telemetry to detect and classify a print failure. |
diagnose_mesh | read | Deep mesh defect analysis — self-intersections, holes, normals, fragments (defect-focused). |
diagnose_print_failure_live | read | Diagnose a print failure using live printer state + model geometry. |
diff_design_versions | read | Compute a unified diff between two design versions. |
discover_printers | read | Scan the local network for 3D printers. |
donate_info | read | Get crypto wallet addresses to tip/donate to the Kiln project. |
download_generated_model | read | Download a completed generated model, check it, and open it on the stage. |
download_model | read | Download model file(s) from a marketplace to local storage. |
estimate_before_design | read | Estimate print time, cost, and filament usage BEFORE generating a model. |
estimate_cost | read | Estimate the cost of a print job from a G-code file (already-sliced only). |
estimate_material_cost | read | Estimate material usage and cost for printing a mesh. |
estimate_price | read | Get an instant price estimate before requesting a full quote. |
estimate_print_progress | read | Estimate print progress with phase-aware time prediction. |
estimate_print_time | read | Estimate print time and filament usage for a model. |
estimate_structural_load | read | Estimate safe structural load for a cantilevered section. |
estimate_support_material | read | Estimate support material needed for a mesh. |
estimate_supports | read | Estimate support volume for a 3D model. |
estimate_timeline | write | Estimate order-to-delivery timeline with per-stage breakdown. |
export_model_3mf | read | Export a mesh to 3MF format (preferred by modern slicers). |
extract_model_from_3mf | read | Extract the embedded 3D model from a .3mf or .gcode.3mf file to STL. |
failure_history | read | View failure history for a printer or failure type. |
find_material_match | read | Fuzzy-match a catalog entry from spool metadata. |
find_printers_with_material | read | Find printers that have a specific material loaded. |
find_provider_capacity | read | Find available provider capacity by material/location. |
find_similar_prints | read | Find similar models in the print DNA knowledge base. |
find_slicer | read | Check if a slicer (PrusaSlicer/OrcaSlicer) is available on the system. |
fingerprint_model | read | Compute a geometric fingerprint for a 3D model file. |
firmware_status | read | Check firmware updates on the default/connected printer (adapter-level, no name needed). |
first_layer_status | read | Check the status of a first-layer monitor. |
forecast_material_consumption | write | Forecast when a material type will run out. |
fulfillment_alerts | write | Check for fulfillment order alerts (stalled, failed, cancelled orders). |
fulfillment_cancel | write | Cancel a fulfillment order (if still cancellable). |
fulfillment_materials | read | List available materials from external manufacturing services. |
fulfillment_order | write | Place a manufacturing order based on a previous quote. |
fulfillment_order_status | write | Check the status of a fulfillment order. |
fulfillment_quote | read | Get a manufacturing quote for a 3D model from Craftcloud. |
generate_and_print | write | Full pipeline: generate a model, validate, slice, and upload (preview). |
generate_model | read | Generate a 3D model from a text prompt via external AI API (Meshy/etc). |
generate_model_from_image | read | Make a 3D model from a reference image. |
generate_model_with_provider | read | Generate a printable design via an external AI provider. |
generate_print_certificate | read | Generate a print |
generate_template_variations | read | Generate multiple variations of a parametric template. |
generate_texture | read | Cloud AI texture generation (requires Meshy API key + internet). |
generation_feedback_loop_status | read | Check the status of a generation feedback loop. |
generation_status | read | Check the status of a model generation job. |
get_active_material | read | Get the filament physically active in the AMS hardware right now (Bambu Lab). |
get_cached_design | read | Retrieve a cached design by ID. |
get_cached_model | read | Return details for a specific cached model. |
get_community_insight | read | Get aggregated print data for a model geometry. |
get_design_source | read | Retrieve the parametric source code for a cached design. |
get_design_version | read | Retrieve a single design version by its ID. |
get_fleet_material_summary | read | Aggregate material inventory across all printers and spools. |
get_joint_recommendation | read | Get recommended clearance settings for a joint type and material pairing. |
get_material_consumption_history | read | Get material consumption history from completed prints. |
get_material_design_profile | read | Compatibility lookup for a material |
get_material_info | read | Get detailed information for a specific material by ID. |
get_material_purchase_urls | read | Get purchase URLs for a material. |
get_model_print_history | read | Get all print attempts for a model. |
get_post_processing_guide | write | Get bounded public post-processing help for one goal. |
get_print_diagnostic | read | Get a comprehensive print diagnostic combining multiple knowledge sources. |
get_printer_insights | read | Query cross-printer learning insights for a specific printer. |
get_recovery_gcode_steps | read | Get the G-code/commands for executing a recovery. |
get_recovery_plan | read | Get a recovery plan for a specific failure type. |
get_recovery_session_status | read | Get the current status of a recovery session. |
get_recovery_statistics | read | Get historical recovery success rates and failure distribution. |
get_restock_suggestions | read | Find materials running low and generate purchase links. |
get_safety_profile | read | Get the full safety profile for a specific printer model. |
get_session_log | read | Return the full audit log for an agent session. |
get_skill_manifest | read | Get the Kiln skill manifest for agent self-discovery. |
get_slicer_profile | read | Get the full bundled slicer profile for a printer model. |
get_started | write | Quick-start guide for AI agents using Kiln. |
give_print_code | read | Relay the code the person typed after Kiln showed one on their screen. |
hand_back_printer | write | Tell Kiln you are taking a printer from here, so it can move on. |
health_check | read | Return system health information for monitoring. |
hollow_mesh_model | write | Create a hollow version of a mesh to save material. |
import_step_file | write | Import a STEP (.step/.stp) CAD file and convert it for Kiln |
improve_generation_prompt | read | Generate an improved prompt from feedback. |
infer_print_settings | read | Infer optimal slicer settings from structural analysis. |
insert_into_scad | write | Insert code into an OpenSCAD module without replacing it. |
issue_shipping_confirmation_token | read | Issue a single-use token after the user confirms shipping details. |
iterate_design | read | Automated design iteration: generate -> validate -> improve -> regenerate. |
job_history | read | Get history of completed, failed, and cancelled print jobs. |
kiln_health | read | Get a health check for the Kiln system. |
kiln_monitor_control | read | Internal support for Kiln |
kiln_monitor_snapshot | read | Internal support for Kiln |
kiln_signin | write | Start a Kiln sign-in via OAuth. |
kiln_signin_poll | read | Check whether a sign-in started by ``kiln_signin`` is done. |
kiln_spend_caps_confirm_change | read | Confirm a cap change with the person |
kiln_spend_caps_confirm_order_approval | write | Confirm a one-order approval with the person |
kiln_spend_caps_request_change | write | Ask to raise the per-order and/or monthly spend cap (step 1 of 2). |
kiln_spend_caps_request_order_approval | write | Ask to approve ONE order over the cap (step 1 of 2). |
kiln_spend_caps_show | read | Show your current Kiln spend caps and whether chat may change them. |
kiln_startup_diagnosis | write | Why the Kiln server failed to start, in plain language, with the fix. |
kiln_viewer_payload | read | Internal support for Kiln |
list_available_materials | read | List all available 3D printing materials with properties. |
list_cached_designs | read | List cached designs, optionally filtered by material. |
list_cached_models | read | List all models in the local cache, newest first. |
list_credentials | read | List all stored credentials (metadata only, no plaintext). |
list_decorations | read | List all saved decorations in the library. |
list_design_components | read | List available pre-built OpenSCAD components from bundled libraries. |
list_design_materials | read | List public material identifiers and safety/process summaries. |
list_design_templates_catalog | read | Browse the whole design-template library, both kinds. |
list_design_versions | read | List version history for a design, newest first. |
list_generation_providers | read | List available text-to-3D generation providers. |
list_materials | read | return { |
list_multi_material_addons | write | List available multi-material add-on systems for 3D printers. |
list_print_pipelines | read | List all available pre-validated print pipelines. |
list_printer_variants | read | Show the curated hardware variants available for a printer. |
list_provider_capacity | read | List printers registered with connected provider integrations. |
list_published_models | read | List models that have been published to marketplaces. |
list_safety_profiles | read | List all available printer safety profiles. |
list_shipping_profiles | read | List saved local shipping profiles. |
list_slicer_profiles | read | List all bundled slicer profiles for supported printers. |
list_trusted_printers | read | Return the list of trusted printer hostnames/IPs. |
marketplace_diagnostics | write | Run connectivity checks against all configured marketplaces. |
marketplace_status | read | Check which 3D model marketplaces are connected and available. |
match_design_components | read | Find pre-built library components matching a design description. |
match_design_requirements | write | Identify which functional requirements apply to a design task. |
merge_mesh_files | write | Combine multiple STL files into a single mesh file (simple concatenation). |
mesh_quality_scorecard | read | Assess a model — a graded scorecard for a mesh, an intake |
mirror_mesh_model | read | Mirror (reflect) a mesh along an axis. |
model_files | read | List downloadable files for a Thingiverse model. |
model_revenue | read | Get revenue summary for a specific model. |
modify_scad_module | write | Replace a module in OpenSCAD code with new implementation. |
monitor_print | read | One-shot print status report. |
monitor_print_vision | read | Snapshot + structured data for AI visual inspection of an in-progress print. |
my_tool | read | return { |
optimize_fleet_assignment | read | Assign print jobs to printers by material availability. |
optimize_print_orientation | read | Auto-rotate a mesh to minimize overhangs and maximize bed contact. |
optimize_template_params | read | Find the structurally strongest version of a parametric template. |
paint_decoration_faces | read | Paint exactly the faces a decoration carve created (Pro-free). |
parse_scad_parameters | read | Parse parameter variables from OpenSCAD code. |
pipeline_abort | read | Abort a running or paused pipeline. |
Trust audit
BLOCKgrade F · trust 36/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (11 observation(s))
- Network
- declared (11 observation(s))
- Shell
- declared (10 observation(s))
- Dependencies
- pinned
- Secrets in source
- found
Findings (25)
exec(compile(Path(args.known_from).read_text(encoding="utf-8"), args.known_from, "exec"), namespace)
session = self._session_verdict(verify=False)
- Never repeat a printer access code or an API key back in the conversation.
kiln-notifier
Kiln.icns
__import__(fqn)
__import__(fqn)
camera_word = importlib.import_module(LOCAL_MODULE).camera_word
check = importlib.import_module(LOCAL_MODULE).rule_check
mod = importlib.import_module(module_path)
logger.info("Revoked API key %r (id=%s)", api_key.name, key_id)logger.info("Revoked API key %r (id=%s)", api_key.name, api_key.id)if any(_cfg_has_prefix(config, name) for name in ("probe_eddy_current", "beacon", "cartographer", "scanner")):callback_url: str | None = None # webhook for status updates
callback_url=request.callback_url,
callback_url: str | None = None,
callback_url,
+ (f" (nearest: {nearest[0].label}, ΔE {nearest[1]:.0f})" if nearest else "")f" — nearest is {m['nearest']} (ΔE {m['delta_e']:.0f})"cfg = AgentConfig(api_key="sk-or-very-secret-key-12345")
c = SyncConfig(cloud_url="https://x.com", api_key="secret-key-here-long")
token = "QzN57tLRbyH2N-ZAHsJrK3vJX_k51thF"
TOKEN = "QzN57tLRbyH2N-ZAHsJrK3vJX_k51thF"
delete_agent_note, delete_cached_model, delete_shipping_profile, remove_mesh_floating_regions, revoke_consent_window, untrust_printer
.clawignore
Gates applied: no_behavioural_pass.
6b5e5ba35f29full audit observations/trust-audit/mcp-server/codeofaxel__kiln.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-08 | 6b5e5ba35f29 | BLOCK | F | 36 | first audit |
Questions
What is the Kiln MCP server?
Describe it or draw it — Kiln makes it real. The open-source MCP server for 3D printing: AI agents (Claude, Codex, Cursor, or any MCP client) design, generate, slice & print on Bambu Lab, Creality, Prusa, Elegoo, Klipper/Moonraker, OctoPrint, Duet/RepRapFirmware & any Marlin printer.
What tools does Kiln expose?
200 in total: 224 read-only, 61 that write, and 6 that can delete or overwrite (delete_agent_note, delete_cached_model, delete_shipping_profile). Every one is listed on this page with its risk.
Is Kiln safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (36/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 6 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does Kiln need?
It reads KILN_3DOS_API_KEY, KILN_AUDIT_HMAC_KEY, KILN_AUTH_ENABLED, KILN_AUTH_HOME, KILN_AUTH_KEY, KILN_CREDENTIAL_DB_PATH, KILN_CULTS3D_API_KEY, KILN_GEMINI_API_KEY, KILN_LICENSE_KEY, KILN_LIVE_OCTOPRINT_KEY, KILN_MASTER_KEY and KILN_MESHY_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does Kiln run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as kiln3d at 1.2.0.
How current is this page?
The grade is for one exact copy of the source (6b5e5ba35f29), read on 2026-10-08. The repository is watched and re-audited when it changes.