Back to Browse

Fabtally MCP Server

Developer ToolsModerate5.2MCP RegistryLocalRemote
Free

Server data from the Official MCP Registry

MCP for real 3D-print slicing, quoting & DFM (OrcaSlicer). Free discovery; paid via x402/USDC.

About

MCP for real 3D-print slicing, quoting & DFM (OrcaSlicer). Free discovery; paid via x402/USDC.

Remote endpoints: streamable-http: https://fabtally.com/mcp

Security Report

5.2
Moderate5.2Moderate Risk

FabTally MCP server is a well-architected 3D-printing service frontend with strong security fundamentals. It properly handles authentication through x402 payment tokens, never stores private keys or user models, and correctly validates model inputs. Minor code quality improvements around error handling and logging could be made, but the codebase demonstrates good separation of concerns and appropriate permission scoping for its purpose. Supply chain analysis found 3 known vulnerabilities in dependencies (0 critical, 3 high severity).

6 files analyzed · 8 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

env_vars

Check that this permission is expected for this type of plugin.

How to Install & Connect

Available as Local & Remote

This plugin can run on your machine or connect to a hosted endpoint. during install.

Documentation

View on GitHub

From the project's GitHub README.

FabTally MCP Server

The first MCP server for real FDM 3D-printing slicing, quoting, and DFM / printability analysis. Every other 3D-printing MCP just drives a printer (OctoPrint, Bambu). None of them slice, quote, or run design-for-manufacturability checks — FabTally does.

It fronts the FabTally agent API (https://fabtally.com), which runs OrcaSlicer against 12 calibrated FDM printer profiles and 12 filament materials, and exposes it as MCP tools so any MCP-capable agent (Claude Desktop, Cursor, custom agents) can discover and call it.

  • Free tools (discovery + a printability preview) work with no payment.
  • Paid tools settle over x402 (USDC on Base). With no payment supplied they return the x402 challenge (price, network, asset, payTo) so the calling agent knows the cost and can pay and retry.
  • This server holds no private key and persists no models. It only relays calls to https://fabtally.com/agent/...; uploaded models are streamed to the slicer, never stored.

Tools

ToolPriceWhat it does
list_printersfreeLive 12-printer fleet (id, bed, nozzle), 12 materials, and x402 pricing tiers. Call this first.
check_printabilityfree / $0.01DFM/printability report. Free geometry preview: printable verdict, watertight, wall-thickness estimate, overhang/support heuristic, fits-on-bed. full=true → paid full report with exact slice-derived support & material deltas.
optimize_orientation$0.02Slices up to 4 orientations and recommends the one using the least support material (exact), with savings vs as-is.
analyze_model$0.002Geometry only, no slice: bounding box (mm), volume (cm³), triangle count, watertight, fits-on-bed.
get_print_quote$0.005Slicer-accurate FDM price quote: print time, filament grams, priced quote with volume discounts.
slice_model$0.005–$0.02Full slice on any printer: time, filament, layers, geometry. Optional preview PNG (+$0.005) and/or G-code (+$0.01).

The 12 printers

idprinterbed X×Y×Z (mm)nozzle
elegoo-neptune4-maxElegoo Neptune 4 Max420×420×4800.4
bambu-a1Bambu Lab A1256×256×2560.4
bambu-a1-miniBambu Lab A1 mini180×180×1800.4
bambu-p1sBambu Lab P1S256×256×2500.4
bambu-x1cBambu Lab X1 Carbon256×256×2500.4
prusa-mk4Prusa MK4250×210×2200.4
prusa-miniPrusa MINI180×180×1800.4
ender3-v3Creality Ender-3 V3220×220×2500.4
creality-k1Creality K1220×220×2500.4
creality-k1-maxCreality K1 Max300×300×3000.4
voron-24-350Voron 2.4 350350×350×3250.4
anycubic-kobra2Anycubic Kobra 2220×220×2500.4

Materials: pla, pla-cf, petg, petg-cf, abs, abs-cf, asa, asa-cf, nylon, pc, pet, tpu (PLA/PETG/ABS/ASA + carbon-fiber variants, Nylon, PC, PET, TPU). list_printers always returns the authoritative live list.

Supplying a model file

MCP tools can't take raw file uploads, so every model-consuming tool accepts the model two ways — pick one:

  • model_url — a public https URL to an STL / 3MF / OBJ / PLY / STEP file. The server fetches it. (Try https://fabtally.com/sample-cube-20mm.stl.)
  • model_base64 + filename — the raw file bytes, base64-encoded, plus a filename (e.g. "cube.stl") so the file type is known.

Example tool calls

// 1) Discover printers/materials/pricing (free)
{ "name": "list_printers", "arguments": {} }

// 2) Free printability check on a hosted model
{ "name": "check_printability",
  "arguments": { "model_url": "https://fabtally.com/sample-cube-20mm.stl" } }

// 3) Full paid DFM report (returns x402 challenge unless x_payment is supplied)
{ "name": "check_printability",
  "arguments": { "model_url": "https://example.com/bracket.stl",
                 "full": true, "printer": "bambu-p1s", "material": "petg" } }

// 4) Price quote, base64 model, 10 parts
{ "name": "get_print_quote",
  "arguments": { "model_base64": "<...>", "filename": "part.stl",
                 "material": "pla", "quantity": 10 } }

// 5) Least-support orientation (paid $0.02)
{ "name": "optimize_orientation",
  "arguments": { "model_url": "https://example.com/handle.stl", "printer": "prusa-mk4" } }

// 6) Slice with a preview PNG (paid tier $0.01)
{ "name": "slice_model",
  "arguments": { "model_url": "https://example.com/gear.stl",
                 "printer": "voron-24-350", "material": "abs",
                 "quality": "standard", "include_preview": true } }

Install

cd fabtally-mcp-server
npm install

Run (stdio — primary)

node index.js
# or, after `npm install -g .`:  fabtally-mcp

The server speaks MCP over stdio. Point your MCP client at it.

Claude Desktop / MCP client config

{
  "mcpServers": {
    "fabtally": {
      "command": "node",
      "args": ["/absolute/path/to/fabtally-mcp-server/index.js"]
    }
  }
}

Run (Streamable HTTP — optional)

MCP_HTTP_PORT=8103 node http.js
# POST MCP JSON-RPC messages to http://127.0.0.1:8103/mcp   (stateless)

Configuration

Env varDefaultPurpose
FABTALLY_BASEhttps://fabtally.comBase origin of the FabTally API.
MCP_HTTP_PORT8103Port for the optional HTTP transport (http.js).
MCP_HTTP_HOST127.0.0.1Bind address for the HTTP transport.

How paid calls work (x402)

  1. Call a paid tool (or check_printability with full: true) without x_payment. You get { "payment_required": true, "http_status": 402, "challenge": { ... } } containing the x402 accepts entry (scheme exact, network eip155:8453 = Base, asset USDC, atomic amount, payTo).
  2. Build an x402 payment authorization (EIP-3009 transferWithAuthorization to payTo) for that entry using your x402 client / wallet.
  3. Call the tool again with the resulting token in the x_payment argument. The server forwards it as the X-PAYMENT header and returns the actual result.

Free discovery is always at GET https://fabtally.com/agent/overview; the OpenAPI contract at https://fabtally.com/openapi.json; x402 discovery at https://fabtally.com/.well-known/x402.

Test

node smoke-test.mjs   # lists tools, calls list_printers + check_printability, checks paid 402s

License

MIT · Sunstone Soft · https://fabtally.com

Reviews

No reviews yet

Be the first to review this server!