MeshMend について
MeshMendは、3Dプリント用のSTLと3MFメッシュを検査・修復するローカルMCPサーバーです。スライサーに渡すモデルを準備する人向けで、問題と修復の限界を報告し、元ファイルを置き換えずに修正版を作成します。ファイルはコンピューター内に保持されます。
主な機能
- 01メッシュの欠陥と寸法の検査
- 02指定したメッシュ問題の修復
- 033MFファイルからSTLへの変換
- 04元ファイルの保持
- 05ネットワーク通信なしでローカル実行
活用シーン
- 01STLが水密かどうかの確認
- 02スライス前の穴の診断
- 03モデルの反転面の修復
- 043MFビルドのSTL変換
MCP 対応
ローカルのstdio MCPサーバーとして、メッシュ検査、対応する欠陥の修復、3MFからSTLへの変換ツールを公開します。指定されたローカルファイルを読み書きし、デフォルトでは元ファイルを上書きしません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
![]()
MeshMend — MCP サーバー
英語 · 中文
お使いのコンピューター上でツールを実行できるAIアシスタント(Claude Desktop、Claude Code、Cursor、VS Code、Windsurf、Codex CLI、Gemini CLI、またはローカルサーバーを起動するその他のMCPクライアント)から、3Dプリント用メッシュ(STLおよび3MF)をチェックして修復できます。
「~/prints/bracket.stl は水密ですか?」、「スライサーでこのモデルに穴があると表示されるのはなぜですか?」、または 「把这个 3MF 转成 STL」 と尋ねてください。アシスタントはお使いのマシン上のファイルを読み込み、何が問題なのか(穴、面の反転、裏返ったシェル、非多様体エッジ、重複した三角形)を正確に伝え、自動修復で直るかどうかを正直に示し、元のファイルと同じ場所に修復済みのコピーを書き出します。
ファイルがコンピューターの外に出ることはありません。 サーバーはローカルで実行され、指定したファイルのみを読み書きし、ネットワークリクエストを送信せず、テレメトリもありません。元のファイルが上書きされることはありません。これは、mesh-mend.pages.devで利用できる無料のブラウザ内ツールと同じメッシュコードです。
npx -y github:Keith-CY/meshmend-mcp
ステータス: バージョン0.1.0です。npmへの公開は保留中です。公開までは、
npx -y github:Keith-CY/meshmend-mcp(Node.js 18+とgitが必要)で同じビルドを実行できます。また、Claude DesktopユーザーはReleasesからワンクリックバンドルをインストールできます。
ツール
| ツール | 入力 | 機能 |
|---|---|---|
check_mesh | path、unit?(mm/cm/in、STLのみ)、item?(3MFのビルドアイテム) | サイズ(mm)、三角形の数、シェルの数、および各問題の件数を報告し、さらにメモリ上で試験修復した結果として、ok、repairable、partly_repairable、needs_manual_reviewのいずれかを判定します。読み取り専用です。 |
repair_mesh | path、fill_holes?(デフォルトはfalse)、max_hole_span_mm?(デフォルトは20)、output_path?、unit?、item?、overwrite? | 重複面と面積ゼロの面を削除し、面の向きを統一して、裏返ったシェルを外側に向けます。また、指定した場合は平坦な穴をふさぎます。ミリメートル単位のバイナリSTLを書き出し、修復前後の結果を報告します。 |
convert_3mf_to_stl | path、item?、output_path?、overwrite? | ビルド変換と単位を適用し、形状を変更せずに、3MFをミリメートル単位のバイナリSTLに変換します。 |
すべての結果は読みやすいテキストと、構造化JSON(structuredContent、outputSchemaを含む)で提供されます。check_meshは読み取り専用としてマークされています。他の2つは新しいファイルを作成するだけです(destructiveHint: false)。
結果の保存場所: 入力ファイルと同じ場所に、<name>.repaired.stl(変換の場合は<name>.stl)として保存されます。既存のファイルを置き換えるのではなく、-2、-3、…のように番号が付加されます。output_pathを指定した場合、既存のファイルはoverwrite: trueの場合にのみ置き換えられ、入力ファイルが出力先になることはありません。
接続方法
Claude Desktop
ワンクリック: Releasesからmeshmend-mcp-0.1.0.mcpbをダウンロードして開きます(またはSettings → Extensions → Advanced settings → Install extension…)。Claude Desktopは組み込みのNode.jsを使って実行します。
または手動で設定:****Settings → Developer → Edit configを開き、claude_desktop_config.jsonに次の内容を追加します。
{
"mcpServers": {
"meshmend": {
"command": "npx",
"args": ["-y", "github:Keith-CY/meshmend-mcp"]
}
}
}
Claude Code
claude mcp add meshmend -- npx -y github:Keith-CY/meshmend-mcp
Cursor
~/.cursor/mcp.json(またはプロジェクト内の.cursor/mcp.json):
{
"mcpServers": {
"meshmend": { "command": "npx", "args": ["-y", "github:Keith-CY/meshmend-mcp"] }
}
}
VS Code(GitHub Copilot)
.vscode/mcp.json:
{
"servers": {
"meshmend": { "type": "stdio", "command": "npx", "args": ["-y", "github:Keith-CY/meshmend-mcp"] }
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json:Cursorと同じmcpServersブロックを使用します。
Codex CLI
~/.codex/config.toml:
[mcp_servers.meshmend]
command = "npx"
args = ["-y", "github:Keith-CY/meshmend-mcp"]
Gemini CLI
~/.gemini/settings.json:
{ "mcpServers": { "meshmend": { "command": "npx", "args": ["-y", "github:Keith-CY/meshmend-mcp"] } } }
その他のクライアント
ローカル(stdio)サーバーを起動するMCPクライアントであれば、npx -y github:Keith-CY/meshmend-mcp、またはチェックアウトしたリポジトリからnode /path/to/meshmend-mcp/dist/meshmend-mcp.jsを実行できます(このファイルに依存関係はありません)。すぐに使える設定ファイルはexamples/clients/にあります。
アシスタントには絶対パスを指定してください(~は展開されます)。相対パスはサーバーの作業ディレクトリを基準に解決されます。デスクトップアプリの場合、作業ディレクトリはプロジェクトフォルダーではないことがよくあります。
実際のファイルの修復前と修復後
このリポジトリのテストとローカル実行(npm test ではバニーと球体を除くすべてを再テストします)から:
| ファイル | check_mesh の検出結果 | 判定 | repair_mesh 実行後 |
|---|---|---|---|
MeshMend のサンプルブロック、30 × 24 × 24 mm、19 個の三角形(missing-patch.stl) | 1 つの穴(4 本の開いたエッジ)、3 つの巻き方向の不整合、1 つの重複面 | 修復可能(fill_holes を使用) | 閉じた状態:重複を削除し、向きを修正、10 × 8 mm の穴を 2 個の三角形でふさぎました。20 個の三角形 |
trimesh の multibody.stl、32 個の三角形 | 2 つの裏返ったシェル、12 個の巻き方向の不整合 | 修復可能 | 閉じた状態で、外向きになりました |
ユタ・ティーポット(tests/fixtures/trimesh/)、894 個の三角形 | 6 つの開いた境界(64 本の開いたエッジ)、1 つの非多様体頂点 | 手動確認が必要 | 変更なし。穴が曲面上にあり、非多様体頂点には判断が必要な理由が示されています |
CAD のエクスポート(featuretype.STL)、3,476 個の三角形 | 16 個の開いた継ぎ目(576 本の開いたエッジ) | 手動確認が必要 | 変更なし。頂点が正確に一致しない面があり、MeshMend は近接する頂点を結合しません |
スタンフォード・バニー(STL としての bun_zipper.ply、156 mm にスケーリング。未収録) | ベース部分に5つの開いた境界(223 本の開いたエッジ)、69,451 個の三角形 | 手動確認が必要 | スパンを 200 mm にしても変更なし。スキャンの穴が平面ではありません |
| 生成した直径 100 mm の球体、247,499 個の三角形、3 つの穴、249 個の反転した面 | 3 つの開いた境界(13 本の開いたエッジ)、744 個の巻き方向の不整合 | 一部修復可能 | 向きを修正し、平面の穴を1つふさぎました。曲面の穴2つは確認用に残しました。約10秒 |
修復できるものと、できないもの
修復できるもの:
- 重複面と面積がゼロの(縮退した)面。
- 通常の共有エッジにおける面の巻き方向の不整合(法線の反転)。
- 他のシェルと重なっていない、裏返った閉じたシェル。
fill_holes: trueの場合:境界頂点が3〜128個で、バウンディングボックスの対角線がmax_hole_span_mm以内の、単純な平面の穴。
修復できないもの:
- 近接する頂点の結合(結合されるのは座標が完全に一致する頂点のみ)。そのため、面間の継ぎ目は閉じられません。
- 非多様体エッジや頂点の分割、リメッシュ、ソリッドの再構築。
- 自己交差の修復、重なり合うパーツの結合、壁厚・オーバーハング・サポートの確認。
- 曲面の穴、入れ子状の開口部、スパンを超える幅の穴のふさぎ。
- モデルが印刷できることの保証。結果をスライサーで開いてください。
意図的な開口部もあるため、指示がない限り穴埋めは無効です。check_mesh は修復をメモリ上で先に実行するため、ファイルを書き込む前に、repair_mesh が実際に役立つかどうかを判定結果で確認できます。
制限事項: ファイルは30 MiBまで、三角形は250,000個まで(ウェブサイトと同じ)。3MF では、プライマリビルド、コンポーネント、変換、製造拡張機能のパーツ参照、単位に対応しています。ZIP64、必須の非対応拡張機能、パーツ間で単位が混在するファイル、Gコードのみのパッケージは、説明とともに拒否されます。色、マテリアル、印刷設定は STL に引き継がれません。
プライバシー
MeshMend の MCP サーバーは、お使いのコンピューター上でのみ動作します。あなたまたはアシスタントが指定したファイルを読み込み、新しい STL ファイルを書き出します。外部へのデータ送信、分析、テレメトリーはなく、ログも保存しません。AI アシスタントには、他のツール出力と同じように、ツールの結果(件数、サイズ、ファイルパス、メッセージ)が表示されます。取り扱いには、そのアシスタント独自のプライバシー規約が適用されます。
開発
npm install
npm test # builds dist/ and runs the core, file and end-to-end tests (needs Bun)
npm run pack:mcpb # builds the Claude Desktop bundle into build/
node scripts/call.mjs check_mesh '{"path":"tests/fixtures/missing-patch.stl"}'
src/core/ は MeshMend のメッシュ処理コードで、ウェブサイトと同じ結果を返すよう、ウェブサイトから変更せずにコピーされています。dist/meshmend-mcp.js は単一のバンドルファイルです(コミット済みのため、npx github: の実行にビルド手順は不要です)。バンドルされたパッケージとライセンスは NOTICE に記載されています。
ライセンス
MIT。3つの trimesh テストファイルは、それぞれの作者が MIT ライセンスで提供しています(詳細)。
3D プレビューと修復前後の比較ができるブラウザー版:mesh-mend.pages.dev。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。