Ottogeo — CAD MCP Server

io.github.ottonic由 GitHub 帳號 ottonic 發布v0.10.1更新於 Nov 7, 2026

Measure STEP CAD files with your AI assistant: walls, clearances, draft, and revision diffs.

已驗證STDIO僅桌面開發者工具媒體與設計

概覽

AI 產生的概覽

本機 MCP 伺服器,以 Open CASCADE 開啟 STEP CAD 檔案,讓助理檢查、量測並比對真實 B-rep 幾何。

可以做什麼
  • 檢查 STEP 檔案的尺寸、體積、面積、組合件結構與 B-rep 健康狀態,並回傳綁定版本的參照
  • 依曲面類型、半徑、軸或面積尋找面、邊、頂點與實體
  • 量測距離、壁厚、拔模、射線與射線網格、點幾何、平面剖切與邊連續性
  • 讀取檔案宣告的 PMI:尺寸、幾何公差與基準,以及各自對應的實體 ID
  • 比對兩個 STEP 版本之間的幾何、拓撲與 PMI 差異
適用情境
當助理需要 STEP 模型的精確數值而非截圖估算時適用:整體尺寸、孔與凸柱直徑、壁厚、間隙、拔模、剖面,或兩個版本之間的變化。適合在沒有 CAD 軟體的機器上進行設計審查與面向製造的問題排查。
執行需求
透過 stdio 在本機執行,通常使用 npx cad-mcp-server。需要 Node.js 26+,系統為 Windows x64、macOS ARM64 或 Linux x64,並需要由任意 CAD 系統匯出的 STEP 檔案。不需 CAD 軟體、授權、帳號或 API 金鑰。
安裝前請注意
唯讀且在本機執行:依路徑讀取檔案,不上傳也不寫入 CAD 資料。結果僅為量測所得的幾何事實,不含可製造性或設計意圖結論,仍需工程判斷。CAD 檔案應視為敏感輸入。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Ottogeo — CAD MCP Server,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Ottogeo — CAD MCP Server

[npm version] [npm downloads] [license] [CI]

Give any AI assistant the ability to measure real CAD geometry. The server opens STEP files with the Open CASCADE kernel and answers the questions an engineer actually asks — overall size and volume, hole and boss diameters, wall thickness, clearance, draft, cross-sections, and what changed between two revisions — with numbers computed from the model's own B-rep, not estimated from a screenshot.

[The assistant measures a pocket floor to cross-bore distance of 0.8 mm, sections the model to confirm it, and verifies 3.0 mm in the revised STEP file.]

Quick start

Add the server to your MCP client, then point your assistant at a STEP file:

json
{  "mcpServers": {    "cad": {      "command": "npx",      "args": ["-y", "cad-mcp-server"]    }  }}

Works with any MCP client — Claude Desktop, Cursor, VS Code, and the rest.

Ask it anything about a part

  • "What are the overall dimensions and volume of this part?"
  • "Find the cylindrical faces and list their diameters and axes."
  • "Measure wall thickness on these faces."
  • "What is the minimum distance between this hole and the nearest wall?"
  • "Measure draft relative to the +Z direction and list faces with negative draft."
  • "Cut a section through this body at X = 40."
  • "What changed between revision A and revision B?"

More examples, including DFM-style review prompts, are in docs/EXAMPLE_PROMPTS.md.

Tools

ToolReturns
inspectBounding-box dimensions, volume, surface area, body and assembly structure, B-rep health, and a revision-bound reference.
find_entitiesFaces, edges, vertices, and bodies, with filters for surface type, radius, axis, and area.
measureDistance between faces, wall thickness, draft, ray casts, ray grids, point analysis, planar sections, and edge continuity.
describe_pmiDeclared dimensions (nominal with deviations or bounds), geometric tolerances (value, zone, material modifier, datums), and datums, each with the entity IDs it applies to.
diffDimension, volume, area, and topology deltas between two STEP revisions, declared PMI counts, and parsed STEP metadata.

Measurement kinds are distance, thickness, draft, ray, ray_grid, point_analysis, section, and continuity. Lengths come back in the file's declared unit, labelled on every result, so an inch model stays in inches and nothing has to be converted by hand. Angles are in degrees.

Why the numbers hold up

  • Computed by Open CASCADE, not guessed. The same file and the same query return the same numbers, every time.
  • Revision-bound and self-verifying. Every result carries the entity IDs and the SHA-256 revision it came from, and stale IDs are rejected when a file changes underneath a session — so an answer can never be attached to the wrong geometry.
  • Reads the model's own callouts. describe_pmi reports the dimensions, geometric tolerances, and datums a file declares, each bound to the entities it applies to, so declared requirements can be checked against the geometry.
  • Local and private. It runs over stdio and reads files by path. It is read-only and never uploads or writes your CAD data.

Requirements

  • Node.js 26+
  • Windows x64, macOS ARM64 (Apple Silicon), or Linux x64
  • STEP files, as exported by SolidWorks, Fusion 360, Onshape, FreeCAD, CATIA, or any other CAD system

FAQ

Does it need CAD software installed? No. It reads STEP files directly, so it works on a machine without a CAD application or license.

Do my files leave my machine? No. The server runs locally over stdio and reads files by path. It is read-only and never writes to your CAD data.

How is this different from asking an assistant to look at a screenshot? Measurements are computed from the model's B-rep geometry by Open CASCADE, so the same file and query return the same numbers. Each result also carries the entity IDs and revision it came from.

Development

Source setup, checks, packaging, and releases are in docs/DEVELOPMENT.md. The server targets Windows x64, macOS ARM64, and Linux x64, and builds its native sidecar from the pinned OCCT revision.

Packaging

npm pack builds first and includes the compiled server, the native sidecar, this README, and the third-party notices. Tests and source maps are excluded. Install the tarball to check the cad-mcp-server executable with a compatible MCP client.

Documentation

License

MIT. Third-party licenses: THIRD_PARTY_NOTICES.md.

來源:README.md,提交 f9ac1b1

工具

5

inspect

Inspect Model Overview

Inspect a local STEP artifact by filesystem path or file: URI. Returns its content revision with dimensions, counts, and B-rep validity. Call this first; use the returned artifact reference for entity searches and measurements. Lengths are in the declared unit, which is labelled on every result. Bounding boxes are conservative envelopes, and volume is null when the file has no solid material. Use include to request only size, counts, and/or health sections.

輸入參數uri必填include

find_entities

Find Model Entities

Find faces, edges, vertices, or solid bodies in the revision-bound artifact returned by inspect, optionally scoped to an assembly component_name. Use this before measure, because every measurement names entity IDs rather than coordinates, and follow pagination until has_more is false whenever a count or a minimum matters. Faces support surface_type, area, and radius filters (e.g. { surface_type: "cylinder", min_radius: 2 }); edges support curve_type, length, and radius; vertices return coordinates and bodies return volume. IDs are producer- and revision-scoped: they are valid only for this server and only for the artifact revision that returned them, so never reuse them after the file changes or in another tool. Occurrence IDs distinguish repeated component instances. distance takes sources/targets; every other measure kind takes entity_ids, and cad://help lists the required fields for each kind.

輸入參數limitoffsetartifact必填max_areamin_areacurve_typeentity_idsmax_lengthmax_radiusmin_lengthmin_radiusentity_type必填另有 2 個

measure

Measure Geometry

Measure distance, wall thickness, draft, rays/ray grids, point geometry, planar sections, or edge continuity. Use the artifact reference and entity IDs from the same find_entities result. Lengths are in the declared unit, which is labelled on every result. Ray grids report their grid size and can be refined with max_rays up to 20000. Fetch the cad://help resource for the required fields of each kind. Returns geometric measurements only, not engineering acceptance or design recommendations.

輸入參數kind必填checksdetailoriginpointssourcesspacingsummarytargetsartifact必填max_raysdirection另有 10 個

describe_pmi

Describe Model PMI and GD&T

Report the dimensions, geometric tolerances, and datums that a STEP artifact declares, as data: nominal, deviations, and tolerance form for each dimension; value, zone shape, material requirement, and datum references for each geometric tolerance; and the entity IDs each annotation applies to. `characteristics` checks each dimensional callout against the faces it controls, and reports satisfied or violated where that is arithmetic — a diameter read from the cylindrical faces the callout names — and unresolved with a reason everywhere else, so a callout that was not checked cannot be mistaken for one that was. Check value_resolved before comparing anything yourself. It is false when the magnitude could not be read and is reported as 0.0, which is what a genuine zero callout also reports; a location dimension defining a tolerance frame has no value of its own. A basic dimension comes back not-applicable: it defines a tolerance frame and states no limit of its own. An angle or a location callout comes back unresolved with needs-frame, because the angle between two faces and a location dimension direction both depend on the frame the callout is stated in. A datum reference carries the entity IDs of the shapes its datum is attached to. Without them a tolerance naming that datum cannot be evaluated, so report the datum as unlocated rather than treating the tolerance as met. `unlocated_datums` names those references for you; a tolerance that carries it is not checkable, and saying which datum is missing is the useful answer.Counts report both datum references and distinct datums, because a frame names its references one by one and the same datum appears once per frame. Values are in the declared unit, the same unit this server uses for measurements. Read pmi_kind before describing what a file does or does not declare: `semantic` means the callouts are readable data; `graphical-only` means the file does show requirements, drawn rather than encoded, so say they must come fro

輸入參數uri必填include

diff

Compare Step Versions

Compare baseline and candidate STEP artifacts, as filesystem paths or file: URIs. Returns both content revisions, geometry deltas in the baseline declared unit, declared PMI counts (dimensions, geometric tolerances, datums, and how many tolerance values could not be read), and parsed document facts: schema, product names/count, assembly flag, authoring system, and organization. The PMI counts show whether a revision added or dropped callouts; they compare how many callouts exist, not whether any is met. These are file-level facts; they do not explain design intent.

輸入參數baseline必填candidate必填

版本歷史

1
  1. v0.10.1最新Oct 31, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分