ply 3D Printing

Custom 3D-printed parts: describe a part, upload a 3D file or pick a model, see a live price, order.

사용해야 할까요

품질 및 안전성

A
설명 품질
97%
스키마 완전성
87%
이름 품질
86%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~4,264토큰 (도구 정의)
~5.8 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 3.33%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "ply": {
      "url": "https://www.plyparts.com/mcp"
    }
  }
}

원격 엔드포인트

https://www.plyparts.com/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (7)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢make_part(template, width, depth, thickness, cornerRadius, ...)

Build, check and price a custom 3D-printed part from exact sizes (mm): plate with holes, L-bracket, spacer/standoff, washer, or box with lid. Shows the part in 3D with its price and an Order button. Sizes left out use sensible defaults. Use again with new sizes or options when the customer asks for changes.

입력 스키마

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "enum": [
        "plate",
        "bracket",
        "spacer",
        "washer",
        "box"
      ],
      "description": "plate = flat plate with holes; bracket = L-bracket; spacer = spacer/standoff; washer; box = box with optional lift-off lid"
    },
    "width": {
      "description": "plate/bracket: width (mm)",
      "type": "number"
    },
    "depth": {
      "description": "plate: depth (mm)",
      "type": "number"
    },
    "thickness": {
      "description": "plate/bracket: thickness (mm)",
      "type": "number"
    },
    "cornerRadius": {
      "description": "plate: outside corner radius, 0 = square; box: inside corner radius (mm)",
      "type": "number"
    },
    "holePattern": {
      "description": "plate: hole layout",
      "type": "string",
      "enum": [
        "none",
        "center",
        "corners",
        "grid"
      ]
    },
    "holeDiameter": {
      "description": "plate: diameter of the pattern holes; bracket: hole diameter (0 = no holes) (mm)",
      "type": "number"
    },
    "holeInset": {
      "description": "plate, corner holes: distance from each edge to the hole center (mm)",
      "type": "number"
    },
    "gridColumns": {
      "description": "plate, grid: hole columns",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "gridRows": {
      "description": "plate, grid: hole rows",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "extraHoles": {
      "description": "plate: holes at exact spots, x/y = hole center in mm from the plate's center",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "x": {
            "type": "number"
          },
          "y": {
            "type": "number"
          },
          "diameter": {
            "type": "number"
          }
        },
        "required": [
          "x",
          "y",
          "diameter"
        ]
      }
    },
    "legA": {
      "description": "bracket: base leg length (mm)",
      "type": "number"
    },
    "legB": {
      "description": "bracket: upright leg length (mm)",
      "type": "number"
    },
    "innerRadius": {
      "description": "bracket: inside corner radius (mm)",
      "type": "number"
    },
    "holesA": {
      "description": "bracket: holes in the base leg",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "holesB": {
      "description": "bracket: holes in the upright leg",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "outerDiameter": {
      "description": "spacer/washer: outside diameter (hex: across the flats) (mm)",
      "type": "number"
    },
    "innerDiameter": {
      "description": "spacer/washer: hole diameter, 0 = solid spacer (mm)",
      "type": "number"
    },
    "height": {
      "description": "spacer: height; washer: thickness (mm)",
      "type": "number"
    },
    "shape": {
      "description": "spacer/washer shape",
      "type": "string",
      "enum": [
        "round",
        "hex"
      ]
    },
    "innerWidth": {
      "description": "box: inside width (mm)",
      "type": "number"
    },
    "innerDepth": {
      "description": "box: inside depth (mm)",
      "type": "number"
    },
    "innerHeight": {
      "description": "box: inside height (mm)",
      "type": "number"
    },
    "wall": {
      "description": "box: wall thickness (mm)",
      "type": "number"
    },
    "lid": {
      "description": "box: lid",
      "type": "string",
      "enum": [
        "lift-off",
        "none"
      ]
    },
    "material": {
      "description": "Material name or id, e.g. PLA, PETG, ASA, TPU (default PLA).",
      "type": "string"
    },
    "color": {
      "description": "Color name, e.g. black, white, red (default black)",
      "type": "string"
    },
    "strength": {
      "description": "Plastic parts only. Default balanced; strong for parts under load",
      "type": "string",
      "enum": [
        "economy",
        "balanced",
        "strong",
        "heavy"
      ]
    },
    "quantity": {
      "description": "How many (default 1)",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "template"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢price_file(file, path, fileName, sourceUrl, sourceTitle, ...)

Price the customer's 3D file (STL, 3MF, STEP or OBJ) and show it in ply's card. Without a file, shows the card with an upload button (with sourceUrl: the model page to download it from). In ChatGPT, pass a file the customer attached. Pass `path` (from an earlier result) to change options for a file already priced.

입력 스키마

{
  "type": "object",
  "properties": {
    "file": {
      "description": "A 3D file the customer attached in this chat",
      "type": "object",
      "properties": {
        "download_url": {
          "type": "string"
        },
        "file_id": {
          "type": "string"
        },
        "mime_type": {
          "type": "string"
        },
        "file_name": {
          "type": "string"
        }
      },
      "required": [
        "download_url",
        "file_id"
      ]
    },
    "path": {
      "description": "The file's ply path from an earlier price_file result",
      "type": "string"
    },
    "fileName": {
      "description": "The file's name, with a path",
      "type": "string"
    },
    "sourceUrl": {
      "description": "The model page the customer picked (they download the file there and drop it in the card)",
      "type": "string"
    },
    "sourceTitle": {
      "description": "That model's name",
      "type": "string"
    },
    "material": {
      "description": "Material name or id, e.g. PLA, PETG, ASA, TPU (default PLA).",
      "type": "string"
    },
    "color": {
      "description": "Color name, e.g. black, white, red (default black)",
      "type": "string"
    },
    "strength": {
      "description": "Plastic parts only. Default balanced; strong for parts under load",
      "type": "string",
      "enum": [
        "economy",
        "balanced",
        "strong",
        "heavy"
      ]
    },
    "quantity": {
      "description": "How many (default 1)",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "process": {
      "description": "fdm = plastic (default); resin = fine detail (miniatures, figurines, smooth looks)",
      "type": "string",
      "enum": [
        "fdm",
        "resin"
      ]
    },
    "units": {
      "description": "Units of an STL/OBJ file, which doesn't say (default mm). Use in if the part comes out 25x too small.",
      "type": "string",
      "enum": [
        "mm",
        "in"
      ]
    },
    "sanding": {
      "description": "Resin only: sanded finish",
      "type": "boolean"
    },
    "coating": {
      "description": "Resin only: coating (needs sanding)",
      "type": "string",
      "enum": [
        "none",
        "matte",
        "gloss"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢price_model_link(url, title, file, sizeMm, material, ...)

Price a 3D model from its page link and show it in ply's card. Printables: ply fetches the file itself if the license allows printing it for sale (CC0, CC BY, CC BY-SA, GPL, Commercial Use…) and credits the designer; other licenses are declined with the reason. Poly Haven (CC0 decor and props made at real-world size): ply fetches it scaled to fit (150 mm on its longest side, or sizeMm). Other sites (Thingiverse, MakerWorld, MyMiniFactory, Thangs, Cults3D…): the card links to the page and the customer drops the downloaded file in. If a Printables model has several files, ply lists them: pass the one wanted as `file`.

입력 스키마

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "The model's page"
    },
    "title": {
      "description": "The model's name (for links to sites ply doesn't fetch from)",
      "type": "string"
    },
    "file": {
      "description": "Which file to print, by name, when the model has several",
      "type": "string"
    },
    "sizeMm": {
      "description": "Poly Haven only: the printed size of the longest side, mm (up to 250)",
      "type": "number"
    },
    "material": {
      "description": "Material name or id, e.g. PLA, PETG, ASA, TPU (default PLA).",
      "type": "string"
    },
    "color": {
      "description": "Color name, e.g. black, white, red (default black)",
      "type": "string"
    },
    "strength": {
      "description": "Plastic parts only. Default balanced; strong for parts under load",
      "type": "string",
      "enum": [
        "economy",
        "balanced",
        "strong",
        "heavy"
      ]
    },
    "quantity": {
      "description": "How many (default 1)",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "process": {
      "description": "fdm = plastic (default); resin = fine detail (miniatures, figurines, smooth looks)",
      "type": "string",
      "enum": [
        "fdm",
        "resin"
      ]
    },
    "units": {
      "description": "Units of an STL/OBJ file, which doesn't say (default mm). Use in if the part comes out 25x too small.",
      "type": "string",
      "enum": [
        "mm",
        "in"
      ]
    },
    "sanding": {
      "description": "Resin only: sanded finish",
      "type": "boolean"
    },
    "coating": {
      "description": "Resin only: coating (needs sanding)",
      "type": "string",
      "enum": [
        "none",
        "matte",
        "gloss"
      ]
    }
  },
  "required": [
    "url"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢find_models(query)

Search for ready-made 3D models ply may print and sell: Printables (open or commercial-use licenses only; non-commercial models are left out) and Poly Haven (CC0 decor, props and figures, scaled to fit). Returns titles, designers, licenses and page links.

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "What to look for, e.g. 'milwaukee m18 battery holder'"
    }
  },
  "required": [
    "query"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢recommend_material(use, answers, path, fileName, template, ...)

Run ply's material advisor ("Help me choose" on plyparts.com) for a part: it may ask up to 2 questions about how the part is used, then recommends a process, material, color and strength. Give either the part's ply `path` (a file) or its template and sizes (a built part).

입력 스키마

{
  "type": "object",
  "properties": {
    "use": {
      "type": "string",
      "description": "What the part is for, in the customer's words (where it's used, heat, water, loads, looks)"
    },
    "answers": {
      "description": "The advisor's earlier questions and the customer's answers",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "question": {
            "type": "string"
          },
          "answer": {
            "type": "string"
          }
        },
        "required": [
          "question",
          "answer"
        ]
      }
    },
    "path": {
      "description": "A file's ply path from price_file",
      "type": "string"
    },
    "fileName": {
      "description": "The file's name, as in price_file (it can tell the advisor what the part is)",
      "type": "string"
    },
    "template": {
      "type": "string",
      "enum": [
        "plate",
        "bracket",
        "spacer",
        "washer",
        "box"
      ],
      "description": "plate = flat plate with holes; bracket = L-bracket; spacer = spacer/standoff; washer; box = box with optional lift-off lid"
    },
    "width": {
      "description": "plate/bracket: width (mm)",
      "type": "number"
    },
    "depth": {
      "description": "plate: depth (mm)",
      "type": "number"
    },
    "thickness": {
      "description": "plate/bracket: thickness (mm)",
      "type": "number"
    },
    "cornerRadius": {
      "description": "plate: outside corner radius, 0 = square; box: inside corner radius (mm)",
      "type": "number"
    },
    "holePattern": {
      "description": "plate: hole layout",
      "type": "string",
      "enum": [
        "none",
        "center",
        "corners",
        "grid"
      ]
    },
    "holeDiameter": {
      "description": "plate: diameter of the pattern holes; bracket: hole diameter (0 = no holes) (mm)",
      "type": "number"
    },
    "holeInset": {
      "description": "plate, corner holes: distance from each edge to the hole center (mm)",
      "type": "number"
    },
    "gridColumns": {
      "description": "plate, grid: hole columns",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "gridRows": {
      "description": "plate, grid: hole rows",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "extraHoles": {
      "description": "plate: holes at exact spots, x/y = hole center in mm from the plate's center",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "x": {
            "type": "number"
          },
          "y": {
            "type": "number"
          },
          "diameter": {
            "type": "number"
          }
        },
        "required": [
          "x",
          "y",
          "diameter"
        ]
      }
    },
    "legA": {
      "description": "bracket: base leg length (mm)",
      "type": "number"
    },
    "legB": {
      "description": "bracket: upright leg length (mm)",
      "type": "number"
    },
    "innerRadius": {
      "description": "bracket: inside corner radius (mm)",
      "type": "number"
    },
    "holesA": {
      "description": "bracket: holes in the base leg",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "holesB": {
      "description": "bracket: holes in the upright leg",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "outerDiameter": {
      "description": "spacer/washer: outside diameter (hex: across the flats) (mm)",
      "type": "number"
    },
    "innerDiameter": {
      "description": "spacer/washer: hole diameter, 0 = solid spacer (mm)",
      "type": "number"
    },
    "height": {
      "description": "spacer: height; washer: thickness (mm)",
      "type": "number"
    },
    "shape": {
      "description": "spacer/washer shape",
      "type": "string",
      "enum": [
        "round",
        "hex"
      ]
    },
    "innerWidth": {
      "description": "box: inside width (mm)",
      "type": "number"
    },
    "innerDepth": {
      "description": "box: inside depth (mm)",
      "type": "number"
    },
    "innerHeight": {
      "description": "box: inside height (mm)",
      "type": "number"
    },
    "wall": {
      "description": "box: wall thickness (mm)",
      "type": "number"
    },
    "lid": {
      "description": "box: lid",
      "type": "string",
      "enum": [
        "lift-off",
        "none"
      ]
    }
  },
  "required": [
    "use"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡order_part(template, width, depth, thickness, cornerRadius, ...)

Put a part into a ply cart and get the link to finish the order on plyparts.com (shipping, payment, engineer review). Nothing is charged here. For a built part pass the same template, sizes and options; for a file pass its path and options.

입력 스키마

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string",
      "enum": [
        "plate",
        "bracket",
        "spacer",
        "washer",
        "box"
      ],
      "description": "plate = flat plate with holes; bracket = L-bracket; spacer = spacer/standoff; washer; box = box with optional lift-off lid"
    },
    "width": {
      "description": "plate/bracket: width (mm)",
      "type": "number"
    },
    "depth": {
      "description": "plate: depth (mm)",
      "type": "number"
    },
    "thickness": {
      "description": "plate/bracket: thickness (mm)",
      "type": "number"
    },
    "cornerRadius": {
      "description": "plate: outside corner radius, 0 = square; box: inside corner radius (mm)",
      "type": "number"
    },
    "holePattern": {
      "description": "plate: hole layout",
      "type": "string",
      "enum": [
        "none",
        "center",
        "corners",
        "grid"
      ]
    },
    "holeDiameter": {
      "description": "plate: diameter of the pattern holes; bracket: hole diameter (0 = no holes) (mm)",
      "type": "number"
    },
    "holeInset": {
      "description": "plate, corner holes: distance from each edge to the hole center (mm)",
      "type": "number"
    },
    "gridColumns": {
      "description": "plate, grid: hole columns",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "gridRows": {
      "description": "plate, grid: hole rows",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "extraHoles": {
      "description": "plate: holes at exact spots, x/y = hole center in mm from the plate's center",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "x": {
            "type": "number"
          },
          "y": {
            "type": "number"
          },
          "diameter": {
            "type": "number"
          }
        },
        "required": [
          "x",
          "y",
          "diameter"
        ]
      }
    },
    "legA": {
      "description": "bracket: base leg length (mm)",
      "type": "number"
    },
    "legB": {
      "description": "bracket: upright leg length (mm)",
      "type": "number"
    },
    "innerRadius": {
      "description": "bracket: inside corner radius (mm)",
      "type": "number"
    },
    "holesA": {
      "description": "bracket: holes in the base leg",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "holesB": {
      "description": "bracket: holes in the upright leg",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "outerDiameter": {
      "description": "spacer/washer: outside diameter (hex: across the flats) (mm)",
      "type": "number"
    },
    "innerDiameter": {
      "description": "spacer/washer: hole diameter, 0 = solid spacer (mm)",
      "type": "number"
    },
    "height": {
      "description": "spacer: height; washer: thickness (mm)",
      "type": "number"
    },
    "shape": {
      "description": "spacer/washer shape",
      "type": "string",
      "enum": [
        "round",
        "hex"
      ]
    },
    "innerWidth": {
      "description": "box: inside width (mm)",
      "type": "number"
    },
    "innerDepth": {
      "description": "box: inside depth (mm)",
      "type": "number"
    },
    "innerHeight": {
      "description": "box: inside height (mm)",
      "type": "number"
    },
    "wall": {
      "description": "box: wall thickness (mm)",
      "type": "number"
    },
    "lid": {
      "description": "box: lid",
      "type": "string",
      "enum": [
        "lift-off",
        "none"
      ]
    },
    "path": {
      "description": "A file's ply path (from price_file)",
      "type": "string"
    },
    "fileName": {
      "type": "string"
    },
    "material": {
      "description": "Material name or id, e.g. PLA, PETG, ASA, TPU (default PLA).",
      "type": "string"
    },
    "color": {
      "description": "Color name, e.g. black, white, red (default black)",
      "type": "string"
    },
    "strength": {
      "description": "Plastic parts only. Default balanced; strong for parts under load",
      "type": "string",
      "enum": [
        "economy",
        "balanced",
        "strong",
        "heavy"
      ]
    },
    "quantity": {
      "description": "How many (default 1)",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "process": {
      "description": "fdm = plastic (default); resin = fine detail (miniatures, figurines, smooth looks)",
      "type": "string",
      "enum": [
        "fdm",
        "resin"
      ]
    },
    "units": {
      "description": "Units of an STL/OBJ file, which doesn't say (default mm). Use in if the part comes out 25x too small.",
      "type": "string",
      "enum": [
        "mm",
        "in"
      ]
    },
    "sanding": {
      "description": "Resin only: sanded finish",
      "type": "boolean"
    },
    "coating": {
      "description": "Resin only: coating (needs sanding)",
      "type": "string",
      "enum": [
        "none",
        "matte",
        "gloss"
      ]
    },
    "thumb": {
      "description": "Leave empty (the ply card fills in a picture).",
      "type": "string",
      "maxLength": 300000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢list_materials

The materials, colors and strength levels ply prints custom parts in, with what each material is good for.

입력 스키마

{
  "type": "object",
  "properties": {}
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 7개