3Dオートファブリック は何をしますか?
mcp-cura(メッシュ→スライス→Gコード)とmcp-moonraker (プリンター状態→印刷)のオーケストレーター。 この2つのサーバーは意図的に互いを認識しません。 mcp-curaは決してプリンターに接続せず、mcp-moonrakerは決してスライスしません。 このスキルがその橋渡し役となります。 ファイルは、明示的かつ承認ゲートを経由したハンドオフによってのみ、 2つのサーバー間を移動します。
絶対条件 — ハードウェアに触れる前に必読
これらのルールが存在する理由は、3Dプリンターがヒーター、モーター、 先の鋭いノズルを備えているからです。摩擦こそが重要です。
- ユーザーに代わって準備された高リスクアクションを決して確認しない。
moonraker_print_start、moonraker_print_cancel、moonraker_run_macro、cura_artifact_export、moonraker_file_deleteなどは、最初に承認プロンプトを返します。 あなたの仕事は、そのプロンプトを明確かつ正直に提示し、待つことです。 ユーザーが明示的に承認した後(チャット内、またはmcp-moonraker approve <id>/mcp-cura approve <id>を帯域外で実行した後)にのみ、 対応する*_confirm_actionツールを呼び出してよい。承認IDや確認フレーズを 決して新規作成、再利用、言い換えしてはいけません。 - 親切心から検証をスキップしない。 印刷前には必ず
cura_gcode_verify、 プリンター操作前には必ずmoonraker_verify_connection、 転送後には必ずmoonraker_files_list+moonraker_file_metadataを実行。 moonraker_emergency_stopだけがゲートなしのレバーです。 物理的に問題が 発生している まさにその時(煙、研削音、ノズルがパーツに衝突、軸同士が衝突)のみ使用します。 緊急時以外の「加熱停止」にはmoonraker_turn_off_heatersを使用します。 こちらは元に戻せ、ゲートもありません。- ローカルの安全ポリシー内に留まる。 温度上限、読み取り専用モード、
allow_raw_gcode、allow_host_adminはユーザーが意図的に設定しています。 ツールが拒否した場合は、その拒否と理由を伝えてください。呼び出しを言い換えたり、 フラグを有効にしたり、同じことを行う別のツールを探したりしないでください。 - 迷ったら、止めて尋ねる。 一時停止したプリンターはわずかな電力を浪費するだけですが、 間違った印刷は数時間とフィラメントを無駄にし、ゲートを迂回すれば家を焼き尽くす可能性があります。 ユーザーには常に連絡が取れます — 尋ねてください。
準備チェック — ハードウェアに触れるすべてのセッションで実施
mcp-cura doctorおよびmcp-moonraker doctor(ローカル、読み取り専用の診断)。moonraker_verify_connection— 接続済み?レイテンシは?Klipperはready、busy、shutdownのどれ?cura_policy_infoおよびmoonraker_policy_info— 変更を計画する前に、アクティブな制限(温度上限、承認モード、読み取り専用スイッチ)を確認。moonraker_server_info— Klipperがready状態であり、shutdownや他のジョブでビジーではないことを確認。- 計画をユーザーと確定する:どのプリンター、どの材料、どのノズル、どの品質、どのファイル、何部、ベッド上のどこに配置するか。 推測してはいけません。
サーバーが見つからないか接続できない場合は、その旨を伝え、ユーザーを references/troubleshooting.md に誘導してください。チェックを通すためだけに、設定を編集したり、パッケージをインストールしたり、--force を実行したりしないでください。
パイプライン
ステージごとに作業を進めます。各ステージの後で簡単に報告し、ゲートが必要な場合はユーザーのために一時停止します。
ステージ0 — 計画。 ジョブを1段落で要約します(ファイル、プリンター、材料、ノズル、プロファイル、部数、配置)。承認を得ます。
ステージ1 — インポート。 設定されたインポートルート(デフォルトでは ~/Downloads、~/Documents、~/Desktop、~/models)下の絶対パス、またはルート外のファイルの場合は data パラメータ(base64)を指定して cura_artifact_import を実行します。
ルートは ファイルシステムパス を制限します。data パスはクライアント提供バイト用のサーバー自身がサポートするチャネルであり、バイパスではなく、ポリシー変更は不要です。パスインポートが拒否された場合は、「お手伝いできません」とジョブを断念する代わりに、同じバイトを data 経由で再インポートします(コンテンツアドレッシングにより同じアーティファクトIDが返されます)。返された artifact_id を記録します — 以降のすべてのステップでこれを参照します。
ステージ2 — 検査と修復。 cura_mesh_inspect(mm単位の境界、三角形数、水密性、体積、退化三角形)。その後、必要に応じて:
- 向き / 配置 / スケーリング →
cura_mesh_transform(スケール→回転→移動、その後center_on_bed) - 非多様体または粗い表面 →
cura_mesh_remesh(voxel_size指定)、またはcura_mesh_offset(閉じたメッシュを膨張/収縮) - 複数のパーツを1つの印刷物として →
cura_mesh_merge(三角形スープ)またはcura_mesh_boolean(真の和/差 — ボクセルベース) - 三角形が多すぎる →
target_trianglesを指定してcura_mesh_decimate
修復のたびに再度検査し、数値を引用します。中リスクのメッシュ操作はポリシーゲートの対象ですが、承認は必要ありません。ただし、変更内容をユーザーに示してください。
ステージ3 — プロファイルの解決と検証。 cura_profile_list で定義と品質プロファイルを見つけ、cura_profile_resolve(定義 + 品質 + 材料 + バリアント + インテント)を実行します。警告を読んでください:Curaが評価できない式、ハードな温度違反。次に cura_profile_verify — エラーはスライス前にゼロでなければなりません。ゼロでない場合は、プロファイルを修正するか(別のものを選択)、理由を説明してください。検証に失敗したままスライスしてはいけません。
ステージ4 — スライス。 cura_slice(model_artifact_ids=[…], definition, quality, material, variant, intent, overrides?, name, wait=true, wait_timeout_secs) を実行します。max_concurrent_jobs(デフォルト2)を尊重します。cura_slice_status でポーリング、短いジョブには cura_slice_wait、キューイング中/実行中のジョブには cura_slice_cancel をそれぞれ使用します。スライスが失敗した場合、cura_slice_status はエンジンログの末尾を保持しています — 実際のエラーを引用してください。
ステージ5 — Gコードレビュー。 スライスから返されたGコードアーティファクトに対して:
cura_gcode_inspect— 推定時間、フィラメント、レイヤー数、Z範囲、最高温度、疑わしいコマンド。cura_gcode_verify— 危険なコマンド、温度がローカルポリシーに違反していないか、ヒーターシャットダウン/ステッパー無効化/メタデータの欠落。- 何か不足している場合、
cura_gcode_prepareは安全なシャットダウンシーケンス(または完全なエンドシーケンス)を含む 新しい アーティファクトを作成します。使用する場合は、新しい アーティファクトIDを引き継いでください — 元のアーティファクトは変更されません。
次に、ユーザーにサマリーを表示 — 時間、フィラメント、最高温度、検証結果 — ステージ6の前に明示的な確認を得ます。これが中止できる最後の安価な機会です。
ステージ6 — プリンターへの転送。 Gコードアーティファクトは、プリンターの gcodes ルートに存在する必要があります。MCPサーバーはアップロードツールを公開していません。サポートされるパスは次のとおりです:
cura_artifact_exportをプリンターが読み取り可能なエクスポートルート(プリンターが監視するマウントされた共有/USB)にエクスポート、または- ユーザーが自分でファイルをそこにコピーする(Web UI、SCP、共有)、または
- もし — かつその場合に限り — ユーザーが明示的に要求した場合、Moonraker HTTPアップロードエンドポイントを明確にログに記録されたワンオフとして使用。
プリンターに触れる前に、ファイルが到着したことを確認します:moonraker_files_list(ルート gcodes)および moonraker_file_metadata — 推定時間とフィラメントがCuraの出力と一致する必要があります。
ステージ7 — 印刷。 moonraker_print_start の前に:
moonraker_printer_statusでKlipperがreadyかつidleであり、shutdownやbusyでないことを確認。moonraker_temperaturesで適正な周囲温度の読み取り値を確認。- ベッドがクリア、正しいプレート、正しい材料が装填、ドアが閉じている — ユーザーに確認。あなたには見えません。
- ユーザーが正確なファイル名を確認します。
moonraker_print_startは高リスクアクションを準備します。承認プロンプトを中継し、承認を待ち、その後moonraker_confirm_actionをフレーズとacknowledge=trueで実行します。
印刷中:moonraker_printer_status と moonraker_temperatures をポーリング。何かおかしいときは moonraker_camera_snapshot で目視確認。コマンドが失敗したときは moonraker_gcode_history を使用。検査のために印刷を一時停止するには moonraker_print_pause → 検査 → moonraker_print_resume。中止するには moonraker_print_cancel(高リスク、二重確認) — ユーザーが要求した場合のみ。その後、moonraker_print_history に結果が記録されます。
印刷後。 ヒーターはオフになっているはずです(エンドシーケンスが行います — moonraker_temperatures で確認)。ユーザーにプレートを掃除するよう促します。ユーザーがアーティファクトのクリーンアップを希望する場合、リスト(cura_artifact_list)して、明示的な確認があった場合にのみ削除します — cura_artifact_delete は高リスクです。
承認を一呼吸で
承認モード(in_band、out_of_band、both)はサーバーごとに [approval] で設定されます。すべてのモードで、1つの準備されたアクション = 1つの approval_id = 短いTTL(デフォルト120秒)の使い捨て確認フレーズです。prepare呼び出しからの保存されたツールと引数が実行されるものであり、*_confirm_action に与えられた引数は装飾的です。*_pending_approvals は待機中のものを再リストします。moonraker_cancel_approval / mcp-cura deny <id> は、アクションが実行される前に無効にします。完全なプロトコル:references/safety-approvals.md。
クイックリファレンス — 詳細情報はこちら
- references/pipeline.md — 例示的なダイアログ付きの拡張ステージウォークスルー
- references/mcp-cura-tools.md — 全32のmcp-curaツール:リスク、ゲート、引数
- references/mcp-moonraker-tools.md — 同様に全49のmcp-moonrakerツール
- references/safety-approvals.md — 承認モード、拒否ルール、緊急時対応
- references/troubleshooting.md — doctor出力、よくある障害、修正方法
- scripts/check-setup.sh — 両方のサーバーがインストール済みで到達可能かを確認
インストールおよびプラットフォームごとのMCP/スキル登録は、リポジトリのドキュメント(docs/platforms.md)に記載されており、このスキルには含まれません。ユーザーがセットアップについて尋ねたときにロードしてください。
このスキルを使用すべきでない場合
CAD/STL形状の手動によるドラフトまたは修復(モデリングツールを使用)、printer.cfg またはKlipperインクルードの編集(ホスト管理と設定書き込みはデフォルトでオフ — オフのままにすべき)、またはホスト再起動、ファームウェア再起動、ユーザーが明示的に有効にしていない生のGコードを含むもの。その旨を伝えて停止してください。