MCP 3Dプリンターサーバー
- Bambu
.3mf
印刷: Bambu Lab プリンター専用のprint_3mf
ツールを追加しました。このツールは.3mf
ファイルをアップロードし、OpenBambuAPI 仕様に基づいて MQTT 経由で直接印刷コマンドを送信します。 - **直接 MQTT 通信 (Bambu):**コマンドに
bambu-js
のみに依存するのではなく、直接 MQTT (TLS ポート 8883) を使用するように Bambu コマンド処理 (print_3mf
、cancelJob
) をリファクタリングしました。 .3mf
ファイルの解析:.3mf
ファイル内のメタデータと Bambu 固有のスライサー設定 (project_settings.config
から) を読み取るためのパーサー (src/3mf_parser.ts
) を実装しました。- Bambu プリセット リソース:
BAMBU_STUDIO_CONFIG_PATH
が設定されている場合、Bambu Studio プリセット ファイル (machine
、filament
、process
) を MCP リソース (例:preset://bambu/process/MyPreset
) として読み取るためのサポートが追加されました。 - OrcaSlicer 統合:
slice_stl
ツールのコマンドライン インターフェイス経由で OrcaSlicer を使用するためのサポートが追加されました。 - 新しい STL 操作ツール:
three.js
を使用して基本的なモデルを準備するためのmerge_vertices
、center_model
、およびlay_flat
ツールが追加されました。 - **設定の更新:**プリセットの読み込み用に
BAMBU_STUDIO_CONFIG_PATH
環境変数を追加しました。 - FTP 使用上の注意: Bambu のファイル操作では現在
bambu-js
経由の潜在的に安全でない FTP が使用されていることがドキュメントで確認されています。 - 機能の同等性を実現: OctoPrint、Klipper、Duet、Repetier、Prusa Connect、Creality Cloud の機能 (ステータスの詳細、ファイル操作、可能な場合は直接印刷、プリセットの処理) を、Bambu 実装で計画されている堅牢性のレベルまで引き上げます。
- 完全な Bambu MQTT ステータスを実装する: Bambu の
getStatus
をリファクタリングして、MQTT レポートをサブスクライブし、リアルタイムの状態を維持します。 - **堅牢な AMS マッピングを実装する:**プレースホルダー ロジックを置き換え、
.3mf
スライサー構成または MQTT 印刷コマンドのユーザー オーバーライドから AMS マッピングを正しく解析して使用します。 .3mf
印刷オーバーライドを実装する:print_3mf
ツールにロジックを追加して、ユーザー指定のオーバーライド (キャリブレーション フラグなど) と、MQTT/G コード経由で実行可能な場合は一般的なスライサー設定を処理します。- MD5 ハッシュの計算:
.3mf
ファイルの MD5 ハッシュを計算して MQTT 印刷コマンドに含めるロジックを追加します (オプションですが、プロトコルでは推奨されています)。 - **Bambu ファイル操作のリファクタリング:**可能かつ安定している場合は
bambu-js
FTP 操作 (getFiles
、uploadFile
) を直接 MQTT メソッドに置き換えることを検討し、またはbambu-js
に FTPS サポートを提供します。 - **プリセット検出ロジックの追加:**プリセット リソースのリスト表示を改善します (現在は潜在的なファイル名に基づいてリスト表示され、存在する場合はインデックス ファイルを解析できます)。
- **
.3mf
サポートの拡張:**該当する場合は、他のプリンタ タイプに対して.3mf
印刷サポートを追加します。 - エラー処理とレポート: MQTT エラー処理と印刷の進行状況/完了のレポートを強化します。
- **テスト:**すべての新しい Bambu 機能の徹底的なランタイム テストを実施します。
目次
- 説明
- 特徴
- インストール
- 構成
- Claude Desktopでの使用
- サポートされているプリンタ管理システム
- 利用可能なツール
- 利用可能なリソース
- LLM のコマンド例
- Bambu Labプリンターの制限
- 制限事項と考慮事項
- バッジ
- ライセンス
説明
これは、MCP ユーザーが次の 3D プリンターの API エンドポイントに接続できるようにするサーバーです。
- オクトプリント
- クリッパー(ムーンレイカー)
- デュエット
- レペティエ
- バンブーラボ
- プルサコネクト
- クリエイティビティ/エンダー
このサーバーは、Claudeと3Dプリンター管理システムを接続するためのModel Context Protocol(MCP)サーバーです。MCPは、OctoPrint、Klipper(Moonraker経由)、Duet、Repetier、Bambu Labsプリンターなど、様々なプリンター管理システムのAPIを介して3Dプリンターと通信できます。
リソース使用に関する注意:このMCPサーバーには高度な3Dモデル操作機能が含まれており、大規模なSTLファイルを扱う際にはメモリを大量に消費する可能性があります。メモリ使用量とパフォーマンスに関する重要な情報については、「制限事項と考慮事項」セクションをご覧ください。
特徴
- プリンターのステータス(温度、印刷の進行状況など)を取得します
- プリンタ上のファイルを一覧表示する
- Gコードファイルをプリンターにアップロードする
- 印刷ジョブの開始、キャンセル、監視
- プリンターの温度を設定する
- 高度な STL ファイル操作:
- ベースを延長して接着力を高める
- モデルを均一に、または特定の軸に沿って拡大縮小する
- 任意の軸を中心にモデルを回転
- モデルを移動(変換)する
- STL ファイルの特定のセクション (上部、下部、中央、またはカスタム) を変更します。
- 詳細なモデル情報を含む包括的なSTL分析
- STL ファイルのマルチアングル SVG ビジュアライゼーションを生成する
- 長時間の操作のリアルタイム進捗レポート
- 詳細な診断によるエラー処理
- STLファイルをスライスしてGコードを生成する
- Gコードファイルで温度設定を確認する
- STL の修正から印刷までの完全なエンドツーエンドのワークフロー
.3mf
ファイルを Bambu Lab プリンターで直接印刷する (MQTT コマンド経由)- Bambu Studio のプリセットファイル(プリンター、フィラメント、プロセス)をリソースとして読み込む
インストール
前提条件
- Node.js 18以上
- npmまたはyarn
npmからインストール
ソースからインストール
Dockerで実行する
コンテナ化された環境向けに Docker と Docker Compose を使用してサーバーを実行することもできます。
- Docker と Docker Compose がインストールされていることを確認してください。
.env.example
を.env
にコピーして設定を構成します。- コンテナをビルドして実行します。
Dockerでスライサーを使用する
デフォルトのDockerセットアップでは**、ホストマシンにインストールされたスライサーを直接使用できない**ことにご注意ください。ホストマシンからコンテナにスライサー実行ファイルを直接マウントすることは、ホストとコンテナのオペレーティングシステムやライブラリの違いにより、信頼性が低くなります。
推奨される方法は**、Dockerイメージ内に 好みのスライサーをインストールする**ことです。これにより、コンテナは自己完結的になります。
これを行うには、 Dockerfile
変更する必要があります。以下は、PrusaSlicer または OrcaSlicer を追加する方法の概念的な例です(具体的なコマンドは、スライサー、その依存関係、および現在の Alpine パッケージによって異なる場合があります)。
Dockerfile
を修正したら、イメージを再構築します( docker-compose build
)。また、 .env
ファイルまたはdocker-compose.yml
内のSLICER_PATH
環境変数がコンテナ内の正しいパス(例: /usr/local/bin/orcaslicer
)を指していることSLICER_TYPE
確認してください。SLICER_TYPE もorcaslicer
に設定してください。
特定のスライサーを標準搭載していないことをお詫び申し上げます。PrusaSlicer、OrcaSlicer、Curaなど、スライサーの種類や設定が多岐にわたるため、特定のスライサーをプリインストールすると、多くのユーザーにとって画像が不必要に肥大化してしまう可能性があります。特定のスライサーのご要望が非常に多くなれば、将来のバージョンで公式サポートを追加することを検討いたします。
構成
サーバーを実行するディレクトリまたは環境変数を設定するディレクトリに.env
ファイルを作成します。
Claude Desktopでの使用
- Claude Desktop 構成ファイルを編集します。
- Bambu Labs プリンターの場合:
- Claudeデスクトップを再起動します
- Claude経由でプリンターに接続する
サポートされているプリンタ管理システム
オクトプリント
OctoPrintは、3Dプリンター用の人気のWebインターフェースです。プリンターを制御するためのREST APIを提供します。
- デフォルトのポート: 80 (http) または 443 (https)
- 認証: APIキーが必要です
クリッパー(ムーンレイカー経由)
Klipper は、Moonraker API サーバーで動作する 3D プリンターのファームウェアです。
- デフォルトポート: 7125
- 認証: Moonrakerの設定によって異なります
デュエット
Duet は、独自の Web インターフェイス (DuetWebControl) を備えた 3D プリンター用の制御ボードです。
- デフォルトのポート: 80 (http) または 443 (https)
- 認証: Duet の設定によって異なります
レペティエ
Repetier-Server は 3D プリンター用のホスト ソフトウェアです。
- デフォルトポート: 3344
- 認証: APIキーが必要です
バンブーラボ
Bambu Lab プリンターは、ステータスと制御に MQTT を使用し、ファイル操作に FTP を使用します。
- 認証: シリアル番号とアクセストークンが必要です (
BAMBU_SERIAL
とBAMBU_TOKEN
を設定してください) - 要件: プリンターは同じネットワーク上にあるか、クラウド接続が有効になっている必要があります
- 互換性: X1C、P1S、P1P、A1、その他のBambu Labプリンター
Bambuプリンターのシリアル番号とアクセストークンを見つける
Bambu Lab プリンターに接続するには、次の 2 つが必要です。
- プリンタのシリアル番号:
- プリンターの背面または底面にシリアル番号が記載されたステッカーが貼ってあるか確認してください(通常は「01P」または「01A」で始まり、その後に数字や文字が続きます)。
- または、Bambu Studioを開いてプリンターに接続し、デバイス > デバイス管理に移動してプリンターの情報を表示します。
- アクセストークン:
- アクセストークンは、プリンターに直接接続するために必要なセキュリティコードです。
- P1シリーズプリンタの場合: タッチスクリーンで設定 > ネットワーク > LANモードを選択すると、アクセスコードが表示されます。
- X1シリーズプリンタの場合:タッチスクリーンで設定 > ネットワーク > LANモードを選択し、LANモードを有効にするとアクセスコードが表示されます。
- A1 Miniの場合: Bambu Handyアプリを使用してプリンターに接続し、[設定] > [ネットワーク] > [LANモード]に移動します。
注: プリンターが同じローカル ネットワーク上にない場合、またはアクセス トークンが見つからない場合は、LAN モードを有効にするためにプリンターのファームウェアを最新バージョンに更新する必要がある場合があります。
Bambu 通信ノート (MQTT および FTP)
- **MQTT:**このサーバーは、コミュニティの調査結果 (例: OpenBambuAPI ) に基づいてローカル MQTT プロトコル (ポート 8883、TLS) を使用して、印刷の開始やジョブのキャンセルなどのコマンドを送信します。
- **FTP:**ファイルのリスト表示とアップロードは現在、プリンター上で動作しているFTPサーバー(
bambu-js
ライブラリヘルパー経由)に依存しています。**注:**このFTP接続は、現在のライブラリの制限により、**セキュリティ保護されていない(プレーンFTP)**可能性があります。ネットワークセキュリティに十分ご留意の上、ご利用ください。
プルサコネクト
Prusa Connect は、Prusa 独自のプリンター管理用クラウドベース ソリューションです。
- デフォルトのポート: 80 (http) または 443 (https)
- 認証: APIキーが必要です
- 互換性: Prusa MK4、Prusa Mini、Prusa XL、およびPrusa Connectを搭載したその他のPrusaプリンター
Prusa Connectの設定
- Prusaプリンターが最新のファームウェアに更新されていることを確認してください
- プリンターをWi-Fiネットワークに接続する
- Prusa Connectアカウントを作成し、プリンターを登録します
- Prusa Connectウェブインターフェースの「設定」>「APIアクセス」からAPIキーを生成します。
クリエイティクラウド
Creality Cloud は、Creality のプリンター管理システムです。
- デフォルトのポート: 80 (http) または 443 (https)
- 認証: ベアラートークンが必要
- 互換性: Ender シリーズ、CR シリーズ、およびネットワーク機能を備えたその他の Creality プリンター
Creality Cloudの設定
- モバイルデバイスにCreality Cloudアプリをインストールします
- アカウントを作成してプリンターを追加する
- プリンタのローカルネットワークアクセスを有効にする
- Creality Cloudアプリの「設定」>「開発者向けオプション」からトークンを生成します。
利用可能なツール
STL操作ツール
メモリ使用量に関する警告:以下のSTL操作ツールは、3Dモデル全体をメモリに読み込みます。10MBを超える大規模または複雑なSTLファイルの場合、これらの操作は大量のメモリを消費する可能性があります。MCP環境でこれらのツールを使用する場合は、メモリ制限にご注意ください。
get_stl_info
寸法、頂点数、境界ボックスなど、STL ファイルに関する詳細情報を取得します。
拡張stlベース
STL ファイルのベースを指定された量だけ拡張します。
スケール_stl
STL モデルを均一に、または特定の軸に沿って拡大縮小します。
または、非均一なスケーリングの場合:
回転_stl
STL モデルを特定の軸 (度単位) を中心に回転します。
翻訳stl
STL モデルを特定の軸 (ミリメートル単位) に沿って移動します。
頂点のマージ
指定した許容値よりも近い頂点を結合します。小さな隙間を埋め、メッシュを若干簡素化するのに役立ちます。
センターモデル
モデルを移動して、境界ボックスの中心がワールド原点 (0,0,0) になるようにします。
平らに置く
モデルの中で最も大きな平面(既に上または下を向いていない面)を特定し、その面がXY平面(Z=0)上で下向きになるようにモデルを回転させます。これは、印刷時にモデルの向きを決めるのに役立ちます。
stlセクションの変更
STLファイルの選択したセクションに特定の変換を適用します。これにより、モデルの特定の部分を詳細に変更することができます。
カスタムセクション境界の場合:
stl視覚化を生成する
複数の角度 (正面、側面、上面、等角図) から STL ファイルの SVG 視覚化を生成します。
スライスstl
STL ファイルをスライスして G コードを生成します。
確認温度
G コード ファイルで温度設定を確認します。
プロセスと印刷のstl
STL ファイル (ベースを拡張) を処理し、スライスし、温度を確認して、印刷を開始します。
**注意:**最適な印刷のための自��方向付け (サポートの最小化など) は、通常、スライサー GUI (OrcaSlicer や PrusaSlicer など) によって処理される複雑なタスクであり、このサーバーでは実装されていません。
プリンター制御ツール
get_printer_status
3D プリンターの現在のステータスを取得します。
Bambu プリンターの場合、これは現時点では MQTT 接続のみを確認します。
プリンタファイルのリスト
プリンタで使用可能なファイルを一覧表示します。
Bambu プリンタの場合、FTP 経由でgcodes
ディレクトリ内のファイルを一覧表示します。
アップロード_gコード
G コード ファイルをプリンターにアップロードします。
Bambuプリンタの場合、FTP経由でgcodes
ディレクトリにアップロードします。自動的に印刷を開始することはできません。
印刷開始
すでにプリンタにあるファイルの印刷を開始します。
Bambu プリンターには推奨されません。Bambu .3mf
ファイルにはprint_3mf
使用してください。
キャンセル印刷
現在の印刷ジョブをキャンセルします。
Bambu プリンターの場合、MQTT 経由でstop_print
コマンドを送信します。
プリンターの温度を設定する
プリンタ コンポーネントの温度を設定します。
直接 MQTT コマンド経由のBambu プリンターではサポートされません。
Bambu特有のツール
印刷_3mf
FTP経由で.3mf
ファイルをBambuプリンターにアップロードし、MQTTコマンドで印刷ジョブを開始します。AMSマッピングなどの一部の印刷パラメータをオーバーライドできます。
**注:**このツールによるレイヤーの高さや温度などのスライサー設定の上書きは、プリンターのMQTTコマンドではサポートされていません。.3mfファイル.3mf
生成する前に、これらの変更を適用してください。
利用可能なリソース
プリンターリソース
printer://{host}/status
- 3Dプリンターの現在のステータス(現在はBambuに限定)printer://{host}/files
- 3D プリンターで利用可能なファイルのリスト (Bambu の FTP)printer://{host}/file/{filename}
- 特定のGコードファイルの内容(Bambuの場合のみ存在をチェック)
Bambuプリセットリソース
BAMBU_STUDIO_CONFIG_PATH
環境変数が Bambu Studio ユーザー設定ディレクトリに設定されている場合、保存したプリセットを読み取ることができます。
preset://bambu/machine/{preset_name}
- マシンプリセットファイルを読み取ります(例:Bambu Lab P1S 0.4 nozzle.json
)preset://bambu/filament/{preset_name}
- フィラメントプリセットファイル(例:Generic PLA.json
)を読み取ります。preset://bambu/process/{preset_name}
- プロセスプリセットファイルを読み取ります(例:0.20mm Standard @BBL P1S.json
)
使用例: 「'0.16mm Optimal @BBL P1S' という名前の Bambu プロセスプリセットの内容を読み取ります」(Claude はpreset://bambu/process/0.16mm Optimal @BBL P1S
で ReadResource を呼び出します)
クロードのコマンド例
MCP サーバーに接続した後、Claude に発行できるコマンドの例を次に示します。
プリンター制御
- 「私の 3D プリンターの現在の状態はどうですか?」
- 「プリンタ上のファイルのリストを表示してください。」
- 「このGコードをプリンターにアップロード: [Gコードの内容]」
- 「「benchy.gcode」という名前のファイルの印刷を開始します。」
- 「現在の印刷ジョブをキャンセルします。」
- 「押し出し機の温度を200℃に設定してください。」
- 「ベッド温度を60℃に設定してください。」
STL操作と印刷
- 「この STL ファイルを取得してベースを 2 インチ拡張し、スライサーに送信してプリンターのキューに入れます。」
- 「model.stl のベースを 1.5 インチ拡張します。」
- 「この STL ファイルを均一に 150% 拡大します。」
- 「model.stl を幅 2 倍に拡大しますが、高さは同じままにします。」
- 「このモデルを Z 軸を中心に 90 度回転させます。」
- 「この STL モデルを 5 mm 上に移動し、下に隙間を作ります。」
- 「このモデルの上部だけを変更して、20%大きくすることはできますか?」
- 「この STL ファイルを分析して、寸法と詳細を教えてください。」
- 「この STL ファイルの視覚化を生成して、どのように見えるか確認します。」
- 「さまざまな角度からモデルの SVG 視覚化を作成します。」
- 「このモデルの高さを変えずにベースを広くします。」
- 「PrusaSlicer を使用して、変更した STL ファイルをスライスします。」
- 「G コード内の温度が、押出機の場合は 200°C、ベッドの場合は 60°C であることを確認します。」
- 「この STL ファイルを処理し、ベースを 2 インチ長くしてスライスし、印刷を開始しますが、最初に温度を確認してください。」
- 「Bambu プリンターで
~/Downloads/my_model.3mf
を印刷します。」 - 「AMS スロット 0 と 2 を使用して、
~/Desktop/calibration_cube.3mf
を Bambu プリンターにアップロードし、ベッド レベリングをオフにします。」 - 「Bambu P1S の印刷ジョブをキャンセルします。」
- 「Bambu フィラメントプリセット「Generic PETG」の設定は何ですか?」
- 「Bambu プロセスのプリセットを表示してください。」
Bambu Labプリンターの制限
Bambu Lab プリンター API の性質上、いくつかの制限があります。
- プリントの開始:プリントを開始するには、3MFプロジェクトファイルのパス、Gコードファイル名、プリント名、MD5ハッシュが必要です。このサーバーの簡易APIでは、まだこれらを完全にはサポートしていません。
- 温度制御:Bambu APIは温度を直接設定するメソッドを提供していません。そのため、カスタムGコードコマンドが必要になります。
- ファイル管理: ファイルはプリンタの「gcodes」ディレクトリにアップロードする必要があります。
- **FTP セキュリティ:**ファイル操作では現在、プリンタの FTP サーバーが使用されていますが、このサーバーはセキュリティ保護されていない可能性があります (プレーン FTP)。
- パラメータのオーバーライド: MQTT
project_file
コマンドでサポートされているパラメータ(例:AMSの使用状況、キャリブレーションフラグ)のみがprint_3mf
ツールでオーバーライドできます。レイヤーの高さや温度などのスライサー設定は、このコマンドでは印刷時に変更できません。 - ステータス更新: MQTT による完全なリアルタイム ステータス監視には、さらなる実装が必要です。
制限事項と考慮事項
メモリ使用量
- 大きなSTLファイル:大規模または複雑なSTLファイルの処理は、大量のメモリを消費する可能性があります。処理中は、STLジオメトリ全体がメモリに読み込まれます。
- 複数の操作: 複数の STL 操作を連続して実行すると (特に大きなファイルの場合)、ガベージ コレクションが追いつかず、メモリが蓄積される可能性があります。
- MCP環境:これはMCPサーバーとして実行されるため、ClaudeのMCP環境にはメモリ制約があることに注意してください。非常に大きなSTLファイルに対する複雑な操作は、メモリ不足の問題を引き起こす可能性があります。
STL操作の制限
- 断面変更:断面固有の変更機能は、より単純なジオメトリで最も効果的に機能します。複雑なメッシュや非多様体メッシュでは、予期しない結果が生じる可能性があります。
- ベース拡張:ベース拡張アルゴリズムは、モデルの下部に新しいジオメトリを追加することで機能します。複雑な下面を持つモデルの場合、結果が完璧ではない場合があります。
- エラー処理: 堅牢なエラー処理を追加しましたが、複雑な STL ファイルの一部のエッジ ケースでは依然として問題が発生する可能性があります。
視覚化の制限
- SVG 表現: SVG 視覚化は、簡略化された概略表現であり、真の 3D レンダリングではありません。
- 複雑なモデル: 非常に複雑なモデルの場合、視覚化ですべての詳細が正確に表現されないことがあります。
パフォーマンスに関する考慮事項
- スライス操作: 外部スライサー プロセスは CPU を大量に消費するため、複雑なモデルの場合はかなりの時間がかかることがあります。
- 進行状況レポート: 大きなファイルの場合、進行状況の更新が特定の処理段階で停止しているように見えることがあります。
テストの推奨事項
- 機能性をテストするには、小さい STL ファイル (< 10 MB) から始めます。
- 大きなファイルを処理する際のメモリ使用量を監視する
- 複雑な形状に挑戦する前に、単純な形状で変更をテストする
- 大規模な操作の場合は、少なくとも 4GB の RAM を搭載したシステムで実行することを検討してください。
バッジ
バッジ | 説明 |
---|---|
npm上のパッケージの現在のバージョン | |
このプロジェクトはGPL-2.0ライセンスです | |
このプロジェクトはTypeScript 4.9以上で書かれています | |
このプロジェクトは活発に維持されています | |
プルリクエストによる貢献を歓迎します | |
Node.js 18.0.0以上が必要です | |
npmからの月間ダウンロード数 | |
このプロジェクトが獲得したGitHubスターの数 |
ライセンス
GPL-2.0
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Tools
MCP サーバーを介して 3D プリンター管理システムとのやり取りを可能にし、STL ファイルの操作、スライス、OctoPrint、Klipper、Duet などのプリンターの制御をサポートします。
Related MCP Servers
- -securityAlicense-qualityMCP Server simplifies the implementation of the Model Context Protocol by providing a user-friendly API to create custom tools and manage server workflows efficiently.Last updated -43TypeScriptMIT License
- -securityAlicense-qualityMCP Server provides a simpler API to interact with the Model Context Protocol by allowing users to define custom tools and services to streamline workflows and processes.Last updated -132TypeScriptMIT License
- -securityFlicense-qualityThis is an MCP server that facilitates building tools for interacting with various APIs and workflows, supporting Python-based development with potential for customizable prompts and user configurations.Last updated -Python
- AsecurityFlicenseAqualityA powerful MCP (Model Control Protocol) server that provides tools for manipulating and analyzing Parquet files. This server is designed to work with Claude Desktop and offers four main functionalities:Last updated -22Python