Koskamo

BHX Fab Quote MCP

An MCP server that allows AI agents to measure and price manufacturing jobs from DXF, G-code, and STL files. It provides tools to analyze DXF for cutting parameters, estimate G-code run times, estimate CNC costs from STL models, and retrieve example machine rates, enabling automated quoting for laser, plasma, and CNC operations.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

BHX Fab Quote MCP logo, by Bastion HelixVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Bastion Helix
MCP endpoint (Streamable HTTP)
https://quote.bastionhelix.com/mcp
Vendor documentation

What you can do with it

  • Analyze DXF files for cutting length, pierce count, and drawing errors
  • Estimate CNC run time and tool usage from G-code programs
  • Generate budget estimates for machining parts from STL files
  • Retrieve example machine presets and material rates

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
bhx-fab-quote 1.0.0
MCP protocol
2025-06-18
Tools
4 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Tools that measure and price laser, plasma, waterjet and CNC jobs from DXF, G-code and STL files. The default machine and material figures are examples, not a shop's real rates.

Tools

4 advertised

analyse_dxf_for_cutting — Analyse a DXF for laser, plasma or waterjet cutting
Advertised by the server during the last successful anonymous check.
Advertised read-only

Reads a flat 2D DXF (text DXF, as exported by AutoCAD, Fusion, Inventor and most CAD) and returns the parts, cut length, number of pierces and drawing problems (duplicate lines, open contours, near-miss gaps, holes smaller than the thickness). With a cutting speed it also returns the cutting time per part, including acceleration and pierces; with pricing it returns a price. Sheet nesting is not included.

analyse_dxf_for_cutting input schema
{
  "type": "object",
  "required": [
    "dxf"
  ],
  "properties": {
    "dxf": {
      "type": "string",
      "description": "The DXF file content as text"
    },
    "units": {
      "enum": [
        "mm",
        "inch",
        "cm",
        "m"
      ],
      "type": "string",
      "description": "Override the drawing units if the file does not state them"
    },
    "machine": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "object"
        }
      ],
      "description": "A preset name (laser, plasma, waterjet) or {accel_mm_per_s2:[x,y,z], corner_tolerance_mm}"
    },
    "pricing": {
      "type": "object",
      "properties": {
        "extras": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "per": {
                "enum": [
                  "order",
                  "part"
                ],
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "amount": {
                "type": "number",
                "minimum": 0
              }
            }
          }
        },
        "currency": {
          "type": "string",
          "description": "ISO code, e.g. INR, USD"
        },
        "tax_name": {
          "type": "string"
        },
        "tax_percent": {
          "type": "number",
          "minimum": 0
        },
        "minimum_order": {
          "type": "number",
          "minimum": 0
        },
        "margin_percent": {
          "type": "number",
          "minimum": 0
        }
      },
      "description": "Optional: turn the result into a price",
      "additionalProperties": false
    },
    "material": {
      "type": "object",
      "properties": {
        "price_per_kg": {
          "type": "number"
        },
        "density_g_cm3": {
          "type": "number"
        },
        "utilisation_percent": {
          "type": "number"
        }
      },
      "description": "For a material cost from the part area: {density_g_cm3, price_per_kg, utilisation_percent (expected sheet use, default 70)}"
    },
    "quantity": {
      "type": "integer",
      "minimum": 1,
      "description": "How many of each part"
    },
    "thickness_mm": {
      "type": "number",
      "minimum": 0,
      "description": "Material thickness, used to flag small holes"
    },
    "pierce_time_s": {
      "type": "number",
      "minimum": 0
    },
    "cut_speed_mm_per_min": {
      "type": "number",
      "description": "Cutting speed for this material and thickness",
      "exclusiveMinimum": 0
    },
    "machine_rate_per_hour": {
      "type": "number",
      "minimum": 0,
      "description": "Machine cost per hour, for pricing"
    }
  },
  "additionalProperties": false
}
analyse_dxf_for_cutting annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
estimate_gcode_run_time — Estimate the run time of a G-code program
Advertised by the server during the last successful anonymous check.
Advertised read-only

Simulates a CNC, laser or plasma G-code program (G0-G3 with arcs and helixes, drilling cycles G73/G81-G89, dwell, tool changes, inch/mm, absolute/incremental) with the machine's rapid speeds, acceleration and tool-change time. Returns the run time, time per tool, the program's size, and warnings such as rapid moves below Z0 or a program bigger than the machine. Accepts programs of up to 3,000 lines.

estimate_gcode_run_time input schema
{
  "type": "object",
  "required": [
    "gcode"
  ],
  "properties": {
    "gcode": {
      "type": "string"
    },
    "dialect": {
      "enum": [
        "fanuc",
        "grbl"
      ],
      "type": "string",
      "description": "fanuc: G4 P in milliseconds (Fanuc, Haas). grbl: seconds (Grbl, LinuxCNC, Mach)"
    },
    "machine": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "object"
        }
      ],
      "description": "Preset (vmc, router, hobby, laser, plasma, waterjet) or {rapid_mm_per_min:[x,y,z], accel_mm_per_s2:[x,y,z], tool_change_s, travel_mm:[x,y,z], corner_tolerance_mm}"
    },
    "pricing": {
      "type": "object",
      "properties": {
        "extras": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "per": {
                "enum": [
                  "order",
                  "part"
                ],
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "amount": {
                "type": "number",
                "minimum": 0
              }
            }
          }
        },
        "currency": {
          "type": "string",
          "description": "ISO code, e.g. INR, USD"
        },
        "tax_name": {
          "type": "string"
        },
        "tax_percent": {
          "type": "number",
          "minimum": 0
        },
        "minimum_order": {
          "type": "number",
          "minimum": 0
        },
        "margin_percent": {
          "type": "number",
          "minimum": 0
        }
      },
      "description": "Optional: turn the result into a price",
      "additionalProperties": false
    },
    "process": {
      "enum": [
        "mill",
        "laser",
        "plasma",
        "waterjet"
      ],
      "type": "string",
      "description": "Default: from the machine preset"
    },
    "quantity": {
      "type": "integer",
      "minimum": 1
    },
    "pierce_time_s": {
      "type": "number",
      "minimum": 0,
      "description": "Laser/plasma: time added per pierce"
    },
    "calibration_factor": {
      "type": "number",
      "description": "Real time ÷ estimated time from one real job; default 1",
      "exclusiveMinimum": 0
    },
    "machine_rate_per_hour": {
      "type": "number",
      "minimum": 0
    }
  },
  "additionalProperties": false
}
estimate_gcode_run_time annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
estimate_cnc_from_stl — Estimate CNC machining of a 3D part (before CAM)
Advertised by the server during the last successful anonymous check.
Advertised read-only

Budget estimate for machining a part from an STL: stock block, material removed, surface area, roughing and finishing time at the material removal rates given, and part mass. Based on volume and surface area only; holes and corner radii are not detected from STL. Accepts up to 60,000 triangles.

estimate_cnc_from_stl input schema
{
  "type": "object",
  "required": [
    "stl_base64"
  ],
  "properties": {
    "up": {
      "enum": [
        "auto",
        "+Z",
        "-Z",
        "+Y",
        "-Y",
        "+X",
        "-X"
      ],
      "type": "string"
    },
    "setups": {
      "type": "integer",
      "minimum": 1
    },
    "pricing": {
      "type": "object",
      "properties": {
        "extras": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "per": {
                "enum": [
                  "order",
                  "part"
                ],
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "amount": {
                "type": "number",
                "minimum": 0
              }
            }
          }
        },
        "currency": {
          "type": "string",
          "description": "ISO code, e.g. INR, USD"
        },
        "tax_name": {
          "type": "string"
        },
        "tax_percent": {
          "type": "number",
          "minimum": 0
        },
        "minimum_order": {
          "type": "number",
          "minimum": 0
        },
        "margin_percent": {
          "type": "number",
          "minimum": 0
        }
      },
      "description": "Optional: turn the result into a price",
      "additionalProperties": false
    },
    "material": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "object"
        }
      ],
      "description": "Preset (al6061, ms, ss304, brass, pom) or {name, density_g_cm3, rough_cm3_per_min, finish_cm2_per_min, price_per_kg}"
    },
    "quantity": {
      "type": "integer",
      "minimum": 1
    },
    "stl_base64": {
      "type": "string",
      "description": "Binary or text STL, base64-encoded"
    },
    "allowance_mm": {
      "type": "number",
      "minimum": 0,
      "description": "Stock allowance per side, default 2"
    },
    "machine_rate_per_hour": {
      "type": "number",
      "minimum": 0
    }
  },
  "additionalProperties": false
}
estimate_cnc_from_stl annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_example_rates — Example machine and material figures
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns the example machine presets and material rates this service uses by default. They are starting points, not quotes: a shop should replace them with its own figures.

get_example_rates input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
get_example_rates annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
198 ms
95th percentile latency
198 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 198 ms · metadata changed · 4 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http bhx-fab-quote-mcp https://quote.bastionhelix.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add bhx-fab-quote-mcp --url https://quote.bastionhelix.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable bhx-fab-quote-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "bhx-fab-quote-mcp": {
      "url": "https://quote.bastionhelix.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "bhx-fab-quote-mcp": {
      "type": "streamableHttp",
      "url": "https://quote.bastionhelix.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start bhx-fab-quote-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "bhx-fab-quote-mcp": {
      "type": "http",
      "url": "https://quote.bastionhelix.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http bhx-fab-quote-mcp https://quote.bastionhelix.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "bhx-fab-quote-mcp": {
      "url": "https://quote.bastionhelix.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "bhx-fab-quote-mcp": {
      "serverUrl": "https://quote.bastionhelix.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like BHX Fab Quote MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run BHX Fab Quote MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing