プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

Mesh2cad

作者:emirmrkaljevicバージョン 0.23.0i★ –iパソコンで動く
レジストリ名io.github.emirmrkaljevic/mesh2cad

インストール

概要

作者による説明(英語の原文)

Mesh (STL/OBJ/PLY) to editable STEP, CadQuery, OpenSCAD or FreeCAD, with a fidelity report

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: その他

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • レジストリには、入力が必要なキーは載っていません。

必要なもの

  • PyPIPythonのuvのインストール(uvxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

{
  "mcpServers": {
    "mesh2cad": {
      "command": "uvx",
      "args": [
        "mesh2cad",
        "mcp"
      ]
    }
  }
}

ターミナルでこれを実行します

claude mcp add mesh2cad -- uvx mesh2cad mcp

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "mesh2cad": {
      "command": "uvx",
      "args": [
        "mesh2cad",
        "mcp"
      ]
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "mesh2cad": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "mesh2cad",
        "mcp"
      ]
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月8日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント emirmrkaljevic で確認済みです

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

その他のほかのサーバーとの比較i

  • このカテゴリのほかの18444件のうち0%よりスターが多い
  • このカテゴリのほかの18444件のうち98%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの18444件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

Mesh2cadは安全ですか?

当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(0.23.0)がレジストリに届いたのは昨日です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。

代わりに使えるものは?

同じカテゴリには:Spec Driven Development, Remote Desktop Commander, Egovframe Scaffold MCP

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

Spec Driven Development

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

作者:formulahendry初期↓ 66/週★ 44014 か月前更新

パソコンで動く

Remote Desktop Commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

作者:desktop-commander成長中★ 2113 日前更新

クラウドで動く✓ desktopcommander.app

Egovframe Scaffold MCP

eGovFrame (전자정부 표준프레임워크) projects: templates, components, CRUD, build, 5.x migration, dependencies

作者:EricSeokgon初期↓ 1440/週今日更新

パソコンで動く

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

mesh2cad

If you find this useful, you can support me by getting a SkinToScan pack, my other project. It's a one-time purchase that directly funds my open-source work.

Turn 3D meshes (STL/OBJ/PLY) into real, editable CAD (STEP): fitted planes, cylinders, spheres, cones, and constant-radius fillets instead of triangle soup. CLI + MCP server for AI agents. MIT, pure Python on top of OpenCascade.

Try it in the browser: the example gallery shows four real printer parts in 3D before and after, with the STEP files and the generated CadQuery/OpenSCAD scripts to download.

*Left: 21k-triangle mesh with 0.1 mm noise. Right: the STEP mesh2cad writes: 10 planes + 2 cylinders, max deviation 0.05 mm from the true part.*

30-second quickstart

pip install mesh2cad

mesh2cad convert part.stl -o part.step --report report.md

Open `part.step` in FreeCAD, Fusion, Onshape or any CAD tool: you get real planes, cylinders and fillets you can select and dimension. `report.md` says how close the result is to the mesh, and mesh2cad falls back to faceted output instead of guessing when a fit is bad.

Using an AI agent (Claude Desktop, Cursor, any MCP client)? pip install "mesh2cad[mcp]" and add:

{ "mcpServers": { "mesh2cad": { "command": "mesh2cad", "args": ["mcp"] } } }

Proof on real parts: all 6 tested Original Prusa i3 MK3S parts convert to exact STEP, and all 6 also to an editable CadQuery, OpenSCAD, or FreeCAD script (see Real parts).

Install

pip install mesh2cad              # CLI + STEP

pip install "mesh2cad[mcp]" # + MCP server pip install "mesh2cad[cadquery]" # + run/verify generated CadQuery scripts

OpenSCAD scripts are plain text. Verifying one needs the `openscad` program ([openscad.org](https://openscad.org)); it is not a Python dependency. Without it the `.scad` file is still written.

FreeCAD macros are plain text too. Verifying one needs freecadcmd (the FreeCAD console, from freecad.org). It is not a Python dependency. Without it the .FCMacro file is still written. Ubuntu 24.04 does not ship a freecad apt package, so install the console build and put freecadcmd on PATH.

Use

mesh2cad convert part.stl -o part.step --tol 0.1 --report report.md

mesh2cad report part.stl --json

`--tol` ≈ the noise / accuracy of your mesh in model units (default 0.1 % of the bounding-box diagonal).

Output: STEP + fidelity report: method (exact / faceted-hybrid / faceted), face types, solid validity, two-sided Hausdorff / RMS deviation, volume error, % area per surface type.

Editable parametric CadQuery script

For simple prismatic parts mesh2cad can also write a CadQuery Python script where every dimension is a named parameter, so you change a number and re-run instead of editing B-rep faces:

mesh2cad convert bracket.stl --cadquery bracket.py   # add -o bracket.step to also write STEP

python bracket.py # -> bracket.step

```python

--- parameters ---

base_x = 40.0 # base length (X) base_y = 30.0 # base width (Y) base_t = 6.0 # base thickness (Z) ... hole_1_d = 6.0 # diameter hole_1_x = 0.0 hole_1_y = 0.0 hole_1_csk_d = 12.0 # countersink diameter hole_1_csk_angle = 90.0 # countersink angle

Make the hole 2 mm bigger: `mesh2cad edit bracket.py --set hole_1_d=8 --in-place -o bracket.step`, or set `hole_1_d = 8.0` and run the script yourself. A plate or block whose four vertical corners share one radius also gets `fillet_r` and `.edges("|Z").fillet(fillet_r)`, so the same edit grows the round. A quarter-torus fillet on a vertical boss or hole is a parameter of that feature: `boss_1_fillet` where a straight boss meets the top face, `hole_1_rim_r` on the top rim of a hole, `hole_1_bot_rim_r` on the bottom rim, and `hole_1_floor_r` where a blind hole's floor meets the wall. `mesh2cad edit part.py --set boss_1_fillet=3` rebuilds that round. A box with all twelve edges filleted at one radius gets `edge_fillet_r` and `.edges().fillet(edge_fillet_r)`. The box size stays `base_x`, `base_y`, and `base_t`. `mesh2cad edit part.py --set edge_fillet_r=4` rebuilds every round. An Ø8 through-hole whose wall clears those rounds is cut after the fillet (`hole_1_d` and its position). A straight boss on the top face whose wall clears those rounds is fused after the fillet (`boss_1_d`, `boss_1_h`, and its position).

A hole or boss on a side face uses the same kind of parameter. This is the block below (60×40×36, an Ø8 hole through X, an Ø6 hole 12 deep opening on +Y, an Ø10 boss 8 tall on +X):

boss_1_d     = 10.0  # diameter

boss_1_h = 8.0 # height from the +X face boss_1_y = 10.0 boss_1_z = 8.0 hole_1_d = 8.0 # diameter (axis X) hole_1_y = 0.0 hole_1_z = -6.0 hole_2_d = 6.0 # diameter (axis Y) hole_2_x = -12.0 hole_2_z = 8.0 hole_2_depth = 12.0 # blind depth from the +Y face

Set hole_1_d = 10.0 and run the script again. The volume drops by π(5²−4²)·60 mm³, the analytic change for that through hole.

A part that is one straight extrusion of a 2D outline is the same kind of script. An L, a notched plate, or a block with a slanted face, extruded along X, Y, or Z, becomes extrude_len plus an outline list. plug-aligner (the printed part in the table below, 7.3×17.7×5.5 mm) is a 5.5 mm extrusion along Z of an eight-point outline with a rectangular slot:

extrude_len = 5.5  # length along Z

extrude_0 = 0.0 # start along Z

outline in the XY plane, (x, y)

outline = [ (0.0, 0.0), (6.1, 0.0), (6.1, 6.95), (7.3, 6.95), (7.3, 10.75), (6.1, 10.75), (6.1, 17.7), (0.0, 17.7), ]

through opening in the outline

cutout_1 = [ (0.45, 1.85), (5.65, 1.85), (5.65, 15.85), (0.45, 15.85), ]

Set extrude_len = 7.5 and the part is 2 mm thicker. A corner moves when one pair in outline changes. A round through-hole on an extrusion is still hole_1_d, with hole_1_y and hole_1_z when the hole runs along X. cutout_1 is a polygonal slot that goes all the way through. An extrusion along Y stores the outline as (x, z); along X, as (y, z).

Supported: a Z-up box/plate base, rectangular pads on the top face, holes along X, Y, or Z (through, blind, countersunk when the axis is vertical, and counterbored on any of those axes), bosses along X, Y, or Z (straight, and drafted or chamfered when the axis is vertical), that one vertical corner radius, one radius on all twelve edges of a rectangular box (edge_fillet_r), a through-hole cut after that fillet when its wall clears the rounds, a straight boss fused after that fillet when its wall clears the rounds, a quarter-torus fillet on a vertical boss or hole (boss_N_fillet, hole_N_rim_r, hole_N_bot_rim_r, hole_N_floor_r), and one straight extrusion of a 2D outline along X, Y, or Z, including a polygonal through-slot and round through-holes. A counterbored hole is hole_N_d for the through diameter, hole_N_cbore_d for the large diameter, and hole_N_cbore_depth for how far that large diameter goes in from the face it opens on. A part that is a few of those extrusions is their intersection, or one of them minus straight cuts along the other axes. Two or three outlines use extrude_z_len / outline_z (and the same for X and Y); a single outline keeps extrude_len and outline. A cut is cut_1_len, cut_1_0, and cut_1. Up to four faces tilted to X, Y, and Z are planar clips (clip_1_x, clip_1_y, clip_1_z, clip_1_d). The box script is the one that is written when it already reproduces the mesh, so a plain plate stays base_x / base_y / base_t and does not become an outline list. A rectangular plate with a counterbored hole stays on those base parameters. Values are rounded to clean numbers (5.997 → 6.0) when that stays within --tol. Before writing, the script is executed and compared with the mesh (needs cadquery installed); if the part is outside this vocabulary or the script deviates, nothing is written and the command exits with code 2 and the reason. Use STEP output for everything else.

Editable parametric OpenSCAD script

The same parts can be written as OpenSCAD, which is what the 3D-printing Customizer on Thingiverse and Printables edits. Names and values match the CadQuery script. --openscad and --cadquery can be combined, and -o still writes STEP.

mesh2cad convert plate.stl --openscad plate.scad

openscad -o plate.stl plate.scad

A 40×30×6 plate with a Ø10 hole comes out as below, plus a short header. Before:
// --- parameters ---

/* [Base] */ // base length (X) base_x = 40.0; // base width (Y) base_y = 30.0; // base thickness (Z) base_t = 6.0; base_cx = 0.0; base_cy = 0.0; // bottom face height base_z0 = -3.0;

/* [Holes] */ // diameter hole_1_d = 10.0; // [0.2:0.1:30] hole_1_x = 0.0; hole_1_y = 0.0;

/* [Hidden] */ $fn = 96; // circle segments

// --- model --- module mesh2cad_part() { difference() { translate([base_cx, base_cy, base_z0 + base_t / 2]) cube([base_x, base_y, base_t], center=true); translate([hole_1_x, hole_1_y, base_z0 - 1]) cylinder(h=base_t + 2, d=hole_1_d); } }

mesh2cad_part();

After, the hole is 2 mm bigger: one number changes, then re-render:

hole_1_d = 12.0; // [0.2:0.1:30]

Re-render (F6) and export STL. A drafted boss is a cylinder with r1/r2, a chamfer or countersink is the same, and the four vertical corners of a rectangular base are offset(r=fillet_r) on a smaller square, then extruded. A box with every edge rounded is edge_fillet_r: three cubes for the flat faces, twelve cylinders for the edges, and eight spheres for the corners. A through-hole that clears those rounds is a cylinder subtracted after that union. A boss that clears those rounds is a cylinder added after that union. A boss-base fillet, a hole-rim round, and a blind-floor fillet are a rotate_extrude() of a square with a quarter circle taken out of it, using boss_1_fillet, hole_1_rim_r, or hole_1_floor_r. The profile overlaps the sharp solid by 0.02 mm so the union stays closed. A hole or boss whose axis is X or Y is the same cylinder, turned with rotate so it points along that axis; its parameters are the diameter and the two coordinates of the axis (hole_1_y / hole_1_z for an X hole). A straight extrusion is linear_extrude(extrude_len) of polygon(outline), with polygon(cutout_1) subtracted in 2D when the outline has a slot. An extrusion along Y or X is that solid turned so the outline sits in the XZ or YZ plane. A counterbored hole is a secon

冒頭だけを表示しています。続きはリポジトリで読めます

PopNxに聞く