MechanoFab
Manufacturing capability graph for AI agents: materials, processes, tolerances, and instant quotes.
使うべきか
品質と安全性
検出事項(6)
- LOWcheck_equipment_capability 内
- LOWcheck_material_environment_compatibility 内
- LOWget_industry_requirements 内
- LOWget_iso2768_tolerances 内
- LOWcheck_material_environment_compatibility 内
- LOWget_material_process_compatibility 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"mechanofab": {
"url": "https://mcp.mechanofab.com/mcp"
}
}
}リモートエンドポイント
https://mcp.mechanofab.com/mcpstreamable-httpできること
ツール一覧
ツール(20)
🟢calculate_part_mass(material_id, volume_cm3)
Use when the user provides a part volume and material to calculate mass or weight. Returns mass in grams and kilograms. Example: 'How heavy is a 100cm³ aluminum 6061 part?'
入力スキーマ
{
"type": "object",
"properties": {
"material_id": {
"type": "string",
"description": "Material_ID from the materials dictionary"
},
"volume_cm3": {
"type": "number",
"minimum": 0.001,
"description": "Part volume in cubic centimeters"
}
},
"required": [
"material_id",
"volume_cm3"
],
"additionalProperties": false
}🟢check_equipment_capability(model_id, required)
Use when the user asks 'can the Bambu X1C print a 400mm × 400mm × 400mm part?', 'does this machine support 25 micron layer thickness?', 'is this machine capable for this part?'. Returns capable/not-capable with specific gaps.
入力スキーマ
{
"type": "object",
"properties": {
"model_id": {
"type": "string"
},
"required": {
"type": "object",
"additionalProperties": false,
"properties": {
"build_size_mm": {
"type": "object",
"additionalProperties": false,
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"z": {
"type": "number"
}
}
},
"layer_thickness_micron": {
"type": "number"
},
"material_id": {
"type": "string"
}
}
}
},
"required": [
"model_id"
],
"additionalProperties": false
}🟢check_material_environment_compatibility(material_id, environment)
Use when the user describes an operating environment (temperature, humidity, UV, chemicals) and wants to know if a material is suitable. Returns a compatibility rating (excellent/good/fair/poor) and specific risk factors.
入力スキーマ
{
"type": "object",
"properties": {
"material_id": {
"type": "string"
},
"environment": {
"type": "object",
"additionalProperties": false,
"properties": {
"temperature_c": {
"type": "number"
},
"humidity": {
"type": "string",
"enum": [
"low",
"medium",
"high"
]
},
"chemical_exposure": {
"type": "array",
"items": {
"type": "string"
}
},
"uv_exposure": {
"type": "boolean"
}
}
}
},
"required": [
"material_id",
"environment"
],
"additionalProperties": false
}🟢check_service_temperature(material_id, service_temp_c)
Use when the user specifies an operating temperature and asks if a material is suitable (e.g. 'can ABS handle 80°C?', 'what is the max temp for 6061 aluminum?'). Returns within_range status, min/max service temps, and safety margin.
入力スキーマ
{
"type": "object",
"properties": {
"material_id": {
"type": "string"
},
"service_temp_c": {
"type": "number",
"description": "Desired operating temperature in °C"
}
},
"required": [
"material_id",
"service_temp_c"
],
"additionalProperties": false
}⚪compare_equipment(model_ids, compare_on)
Use when the user wants to compare specific machines (e.g. 'compare Formlabs Form 3 vs Stratasys J55', 'which machine has better build volume?'). Accepts 2–4 model IDs and optional metric list.
入力スキーマ
{
"type": "object",
"properties": {
"model_ids": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 2,
"maxItems": 4
},
"compare_on": {
"type": "array",
"items": {
"type": "string",
"enum": [
"build_volume",
"layer_thickness",
"speed",
"materials",
"tolerance",
"surface_finish"
]
}
}
},
"required": [
"model_ids"
],
"additionalProperties": false
}🟢compare_materials(material_ids, properties)
Use when the user asks to compare materials (e.g. 'AL6061 vs SS304', 'which plastic is stronger'). Returns a structured comparison table grouped by property. Accepts 2–5 material IDs and an optional list of properties to compare.
入力スキーマ
{
"type": "object",
"properties": {
"material_ids": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 2,
"maxItems": 5,
"description": "List of Material_IDs to compare"
},
"properties": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional: which properties to include. Defaults to density, tensile, yield, max_temp, cost_tier."
}
},
"required": [
"material_ids"
],
"additionalProperties": false
}⚪compare_processes(process_ids, compare_on)
Use when the user wants to compare manufacturing processes (e.g. 'SLS vs FDM vs SLA comparison', 'which process has better tolerance: CNC or injection molding?'). Accepts 2–5 process IDs and optional metric list.
入力スキーマ
{
"type": "object",
"properties": {
"process_ids": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 2,
"maxItems": 5
},
"compare_on": {
"type": "array",
"items": {
"type": "string",
"enum": [
"tolerance",
"speed",
"cost_tier",
"materials",
"min_feature_size",
"surface_finish"
]
},
"description": "Optional: metrics to include. Omit for all metrics."
}
},
"required": [
"process_ids"
],
"additionalProperties": false
}⚪filter_materials_by_constraint(constraints, process_id)
Use when the user specifies material requirements (e.g. 'density < 3 g/cm³', 'tensile > 400 MPa', 'max temp ≥ 200°C'). Returns all materials that pass every constraint. Supports gte, lte, eq, contains operators.
入力スキーマ
{
"type": "object",
"properties": {
"constraints": {
"type": "array",
"minItems": 1,
"maxItems": 8,
"items": {
"type": "object",
"required": [
"property",
"operator",
"value"
],
"properties": {
"property": {
"type": "string",
"description": "Property name (e.g. density_g_cm3, tensile_strength_mpa, max_service_temp_c, cost_tier)"
},
"operator": {
"type": "string",
"enum": [
"gte",
"lte",
"eq",
"contains"
]
},
"value": {
"description": "Numeric for gte/lte/eq on numeric fields; string for eq/contains on text fields"
}
}
}
},
"process_id": {
"type": "string",
"description": "Optional: only return materials compatible with this process"
}
},
"required": [
"constraints"
],
"additionalProperties": false
}🟢find_alternative_processes(process_id, material_id, constraints)
Use when the user asks 'what can replace FDM for this part?', 'alternative to CNC for low volumes?', or needs to switch process due to lead time / cost / material constraints.
入力スキーマ
{
"type": "object",
"properties": {
"process_id": {
"type": "string"
},
"material_id": {
"type": "string",
"description": "Optional: filter alternatives compatible with this material."
},
"constraints": {
"type": "object",
"additionalProperties": false,
"properties": {
"max_lead_days": {
"type": "number"
},
"cost_tier": {
"type": "string",
"enum": [
"low",
"medium",
"high"
]
},
"min_build_volume_cm3": {
"type": "number"
}
}
}
},
"required": [
"process_id"
],
"additionalProperties": false
}🟢find_equipment_by_process(process_id, build_size_min_mm, layer_thickness_max_micron, material_id)
Use when the user asks 'what machines can do SLS?', 'do you have equipment that can print 300mm × 300mm?', 'which printers support PEEK material?'. Returns matching equipment with build volumes, layer thickness, and availability status.
入力スキーマ
{
"type": "object",
"properties": {
"process_id": {
"type": "string"
},
"build_size_min_mm": {
"type": "object",
"additionalProperties": false,
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"z": {
"type": "number"
}
}
},
"layer_thickness_max_micron": {
"type": "number"
},
"material_id": {
"type": "string",
"description": "Optional: filter by material compatibility."
}
},
"required": [
"process_id"
],
"additionalProperties": false
}🟢find_equivalent_materials(material_id, match_criteria, max_results)
Use when the user wants alternatives to a specific material (e.g. 'what can replace SS304?', 'cheaper alternative to titanium'). Returns materials ranked by similarity score. Match criteria include strength, density, cost_tier, process_compat, thermal, corrosion.
入力スキーマ
{
"type": "object",
"properties": {
"material_id": {
"type": "string"
},
"match_criteria": {
"type": "array",
"items": {
"type": "string",
"enum": [
"strength",
"density",
"cost_tier",
"process_compat",
"thermal",
"corrosion"
]
},
"minItems": 1
},
"max_results": {
"type": "number",
"minimum": 1,
"maximum": 10,
"default": 5
}
},
"required": [
"material_id",
"match_criteria"
],
"additionalProperties": false
}🟢get_equipment_qc_specs(model_id)
Use when the user asks about machine certifications, dimensional accuracy, or QC procedures (e.g. 'is this machine ISO certified?', 'what is the dimensional accuracy of the EOS M 290?', 'what inspection methods do you use for this machine?').
入力スキーマ
{
"type": "object",
"properties": {
"model_id": {
"type": "string"
}
},
"required": [
"model_id"
],
"additionalProperties": false
}🟢get_industry_requirements(industry_id)
Use when the user asks industry-specific requirements (e.g. 'what materials are used in aerospace?', 'what certifications does the medical device industry require?', 'typical tolerances for automotive parts?').
入力スキーマ
{
"type": "object",
"properties": {
"industry_id": {
"type": "string"
}
},
"required": [
"industry_id"
],
"additionalProperties": false
}🟢get_iso2768_tolerances(grade, nominal_dimension_mm, tolerance_type)
Use when the user asks about ISO 2768 tolerances (e.g. 'what is ISO 2768-m tolerance for 50mm?', 'ISO 2768 fine grade flatness?', 'general tolerance for machined parts'). Returns the ±tolerance value, range string, and applicable dimension range.
入力スキーマ
{
"type": "object",
"properties": {
"grade": {
"type": "string",
"enum": [
"f",
"m",
"c",
"v"
],
"description": "f=Fine, m=Medium, c=Coarse, v=Very Coarse"
},
"nominal_dimension_mm": {
"type": "number",
"minimum": 0.5,
"maximum": 4000
},
"tolerance_type": {
"type": "string",
"enum": [
"linear",
"angular",
"flatness",
"straightness",
"roundness"
]
}
},
"required": [
"grade",
"nominal_dimension_mm",
"tolerance_type"
],
"additionalProperties": false
}🟢get_material_compliance(material_id, standards)
Use when the user needs to know if a material meets regulatory requirements (e.g. 'is this plastic RoHS compliant?', 'does this aluminum meet FDA requirements?'). Returns compliance status for RoHS, REACH, FDA, ISO, ASTM, CE.
入力スキーマ
{
"type": "object",
"properties": {
"material_id": {
"type": "string"
},
"standards": {
"type": "array",
"items": {
"type": "string",
"enum": [
"RoHS",
"REACH",
"FDA",
"ISO",
"ASTM",
"CE"
]
},
"description": "Optional: check specific standards only. Omit to return all known compliance data."
}
},
"required": [
"material_id"
],
"additionalProperties": false
}🟢get_material_process_compatibility(material_id, process_ids)
Use when the user asks which processes can be used with a material (e.g. 'can titanium be FDM printed?', 'what processes work with PEEK?'). Returns compatible and incompatible process lists.
入力スキーマ
{
"type": "object",
"properties": {
"material_id": {
"type": "string"
},
"process_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional: check specific processes only. Omit to return all."
}
},
"required": [
"material_id"
],
"additionalProperties": false
}🟢get_process_specs(process_id)
Use when the user asks about process specs, capabilities, or constraints (e.g. 'what is the tolerance of SLS?', 'what is the build volume of FDM?', 'what lead time for CNC machining?'). Returns category, build size, tolerance, compatible materials, lead time, and surface finish.
入力スキーマ
{
"type": "object",
"properties": {
"process_id": {
"type": "string"
}
},
"required": [
"process_id"
],
"additionalProperties": false
}⚪match_industry_materials(industry_id, process_id, requirements)
Use when the user asks 'what materials are approved for medical devices?', 'best lightweight materials for aerospace?', 'food-safe materials for injection molding?'. Cross-references industries and materials dictionaries.
入力スキーマ
{
"type": "object",
"properties": {
"industry_id": {
"type": "string"
},
"process_id": {
"type": "string",
"description": "Optional: filter by process compatibility."
},
"requirements": {
"type": "array",
"items": {
"type": "string",
"enum": [
"biocompatible",
"corrosion_resistant",
"high_temp",
"lightweight",
"food_safe",
"flame_retardant",
"uv_stable"
]
}
}
},
"required": [
"industry_id"
],
"additionalProperties": false
}🟡quote_calc(parts, notes)
Use this tool to CALCULATE a 3D printing price. Provide material_name, color, lead_time (must match the 3dp-pricing dictionary), quantity, and either weight_g or volume_cm3 — or an uploaded file_key (obtained from /v1/uploads/presign + /v1/uploads/complete) which is parsed to get volume. This tool does NOT create an order; it returns part_price / total / order_url. Output is desensitized (no unit prices).
入力スキーマ
{
"type": "object",
"properties": {
"parts": {
"type": "array",
"minItems": 1,
"description": "One or more part lines. Each line is priced independently.",
"items": {
"type": "object",
"required": [
"material_name",
"color",
"lead_time",
"quantity"
],
"additionalProperties": false,
"properties": {
"material_name": {
"type": "string",
"description": "Material name — must match a 3dp-pricing entry (case-insensitive). E.g. 'PA12', 'Resin Standard', 'PEEK'."
},
"color": {
"type": "string",
"description": "Color — must match a 3dp-pricing entry. E.g. 'White', 'Black', 'Natural'."
},
"lead_time": {
"type": "string",
"description": "Lead time tier — must match a 3dp-pricing entry. E.g. 'Standard', 'Express', 'Economy'."
},
"quantity": {
"type": "integer",
"minimum": 1,
"description": "Number of pieces for this part line."
},
"weight_g": {
"type": "number",
"minimum": 0.01,
"description": "Single-part weight in grams (preferred). If provided, volume_cm3/file_key are ignored."
},
"volume_cm3": {
"type": "number",
"minimum": 0.01,
"description": "Single-part volume in cm³. Weight = volume × density. Required if weight_g/file_key not provided."
},
"file_key": {
"type": "string",
"description": "R2 object key of a CAD file uploaded by this principal (uploads/{principal_id}/...). Parsed via parse_cad to obtain volume."
},
"notes": {
"type": "string",
"description": "Optional notes for this part line (e.g. surface finish)."
}
}
}
},
"notes": {
"type": "string",
"description": "Order-level notes (applies to all parts)."
}
},
"required": [
"parts"
],
"additionalProperties": false
}🟢search_materials(query, category_hint, process_filter, limit)
Use to resolve a user's material description (industry grade name like 'PA12', a colloquial term like 'nylon', a Chinese term, or a vague description) into concrete materials.csv entries. Unlike compare_materials/find_equivalent_materials (which need an exact known ID), this tool accepts messy input and returns a ranked list of candidates — use it as the first step when you don't already know the exact material_id. If multiple candidates come back, ask the user to pick one rather than guessing. Optionally narrow by category_hint (Plastic/Metal/Rubber/Resin/Powder Metals/Powder Polymers) or process_filter (e.g. 'Selective Laser Sintering', 'SLS', 'Injection Molding') when the context already implies a manufacturing process.
入力スキーマ
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"description": "User's material description, ideally already normalized to English (e.g. 'PA12', 'nylon', '316 stainless steel')."
},
"category_hint": {
"type": "string",
"enum": [
"Plastic",
"Metal",
"Rubber",
"Resin",
"Powder Metals",
"Powder Polymers"
],
"description": "Optional coarse category filter matched against Material_Category(L1)/Material_Sub-Category(L2)."
},
"process_filter": {
"type": "string",
"description": "Optional manufacturing process substring filter matched against Compatible_Processes, e.g. 'SLS', 'Selective Laser Sintering', 'Injection Molding'."
},
"limit": {
"type": "number",
"minimum": 1,
"maximum": 20,
"description": "Max candidates to return. Defaults to 10."
}
},
"required": [
"query"
],
"additionalProperties": false
}コミュニティ
エビデンス