Skip to content
3D PrintBarcelona

MCP server · For AI assistants

Get 3D printing quotes and orders from ChatGPT, Claude or any AI assistant

Connect your assistant to our MCP server and ask it for what you would do on this website: the exact price of your STL or OBJ, an estimate from dimensions, which material suits you and, once you confirm, the order. No API key, free, and the same prices as the configurator, because they come from the same engine.

Server URL

https://www.3dprintbarcelona.com/mcp
Cost
Free, no key
Prices
Identical to the website
Orders
Only with your confirmation
Files
STL and OBJ

What you can ask

Write naturally. The assistant picks the tool, fills in the parameters and gives you real prices, not made-up ones.

  • “Here is my STL: [link]. How much for 3 in black PETG, shipped to Madrid?”
  • “What would a 20 cm tall figurine cost in resin?”
  • “I need a bracket for a car dashboard. Which material survives the heat?”
  • “Quote a cosplay helmet of roughly 24 × 22 × 25 cm in PLA.”
  • “Compare PLA, PETG and ABS for this enclosure and tell me which is best value.”
  • “OK, place the order. I will collect in Barcelona. My name is…”
  • “What is the status of my order BCN-…?”

How it works

  1. 1

    Connect the server

    Paste the URL into your assistant’s connectors. Once, in a minute, with no account and no key.

  2. 2

    Ask as you would a person

    Give it a link to your STL or the part’s dimensions. The server measures the file exactly as the configurator does and analyses overhangs and supports.

  3. 3

    Check the summary

    To order, the assistant shows you the parts, options, VAT-inclusive total and lead time. Nothing is bought until you say yes.

  4. 4

    Pay from the invoice

    You receive the invoice by email and a private link to your order. We print in our Barcelona workshop and you collect it or we ship it.

Real prices, computed right now

These figures are being computed this moment by the same tool your assistant uses, with the current prices. Without a file it is a range; with the STL, the exact price.

80 × 40 × 30 mm bracket in PETG

€3.68 – €8.94 per unit excluding VAT

Typical order: €18.15 inc. VAT · 7 working days

75 mm tall figurine in resin

€27.67 – €43.87 per unit excluding VAT

Typical order: €72.60 inc. VAT · 7 working days

How to connect it to your assistant

The server is remote and public: there is nothing to install. Menu names change between app versions; the URL is what matters.

Claude (web, desktop and mobile)

  1. Open Settings → Connectors → Add custom connector.
  2. Name: 3D Print Barcelona. URL: https://www.3dprintbarcelona.com/mcp. Leave the OAuth fields empty.
  3. In a chat, enable the connector from the tools menu and ask for your quote.
  4. On Team or Enterprise plans an admin may need to add it first.

ChatGPT

  1. Settings → Apps & Connectors → Advanced settings → turn on Developer mode.
  2. Create a new connector with the URL https://www.3dprintbarcelona.com/mcp and authentication set to “No authentication”.
  3. In a chat, choose it from the + menu and ask. Available on plans that offer developer mode.

Claude Code

  1. Run in your terminal:
Terminal
claude mcp add --transport http 3dprintbarcelona https://www.3dprintbarcelona.com/mcp

Cursor

  1. Add the server to ~/.cursor/mcp.json (or the project’s .cursor/mcp.json):
mcp.json
{
  "mcpServers": {
    "3dprintbarcelona": {
      "url": "https://www.3dprintbarcelona.com/mcp"
    }
  }
}

VS Code (GitHub Copilot)

  1. Add the server to .vscode/mcp.json and use it in Copilot’s agent mode:
.vscode/mcp.json
{
  "servers": {
    "3dprintbarcelona": {
      "type": "http",
      "url": "https://www.3dprintbarcelona.com/mcp"
    }
  }
}

Windsurf

  1. Add it to ~/.codeium/windsurf/mcp_config.json:
mcp_config.json
{
  "mcpServers": {
    "3dprintbarcelona": {
      "serverUrl": "https://www.3dprintbarcelona.com/mcp"
    }
  }
}

Gemini CLI

  1. Add it to ~/.gemini/settings.json:
settings.json
{
  "mcpServers": {
    "3dprintbarcelona": {
      "httpUrl": "https://www.3dprintbarcelona.com/mcp"
    }
  }
}

Clients that only speak stdio

  1. Use the mcp-remote bridge, which translates stdio to HTTP:
Configuration
{
  "mcpServers": {
    "3dprintbarcelona": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://www.3dprintbarcelona.com/mcp"
      ]
    }
  }
}

The tools

Eight tools, all deterministic: they take parameters and return calculations from the website’s pricing engine, with no AI model on the server.

get_catalog

Read-only

Get the live catalogue

Returns the live catalogue: technologies, materials, colours and stock, qualities, infills, finishes, lead times, shipping, volume discounts and the order minimum.

ParameterTypeDescription
languageen | esLanguage for option names and engine warnings, and for the customer invoice when ordering. Use "es" for Spanish or Catalan speakers. Default: en.

recommend_material

Read-only

Recommend a material

Recommends materials from requirements (temperature, outdoor use, flexibility, strength, detail, budget, colour, delivery speed) with reasons, cautions and the real price of the part in each.

ParameterTypeDescription
applicationstringWhat the part is for. Sets sensible defaults that any other field overrides. One of: visual_prototype, functional_part, mechanical_load, outdoor_part, heat_exposed, electronics_enclosure, flexible_part, figurine_or_miniature, cosplay_prop, decorative.
max_temperature_cnumberHighest temperature the part must survive, °C.
outdoorbooleanExposed to sun, rain and weather.
flexiblebooleanMust bend, compress or cushion like rubber.
strengthlow | medium | highHow much mechanical load or impact it takes.
detaillow | medium | highHow fine the detail and how smooth the surface must be.
budgetlowest | balanced | performancePrice sensitivity.
fast_deliverybooleanPrefer materials in stock (no extra days).
colorstringColour the user wants, e.g. "red".
transparentbooleanNeeds a clear / translucent material.
food_contactbooleanWill touch food or drink (triggers an honest warning).
dimensions_mmobjectBounding box of the part in millimetres (X, Y, Z). Z is the height as it stands. Fields: x*, y*, z*.
shapestringKind of object, used to price the reference part. See estimate_price. One of: mechanical_part, solid_block, flat_plate, bracket, cylinder, hollow_enclosure, vase_or_tube, figurine, wearable_shell.
languageen | esLanguage for option names and engine warnings, and for the customer invoice when ordering. Use "es" for Spanish or Catalan speakers. Default: en.

estimate_price

Read-only

Estimate a price from dimensions

Gives a price range (low, typical, high) from X×Y×Z dimensions and the kind of object, with no file. With the volume in cm³ it gives the exact price.

ParameterTypeDescription
dimensions_mmrequiredobjectBounding box of the part in millimetres (X, Y, Z). Z is the height as it stands. Fields: x*, y*, z*.
shapestringKind of object: mechanical_part (default), solid_block, flat_plate, bracket, cylinder, hollow_enclosure (box/case), vase_or_tube, figurine (figure, miniature, statue), wearable_shell (cosplay helmet, mask, armour). One of: mechanical_part, solid_block, flat_plate, bracket, cylinder, hollow_enclosure, vase_or_tube, figurine, wearable_shell. Default: mechanical_part.
volume_cm3numberActual part volume if known — removes the guesswork.
surface_area_cm2numberActual surface area if known.
technologystringPrinting technology: "fdm" (filament, cheaper, larger) or "sla" (resin, finest detail). Implied by the material when omitted.
materialstringMaterial id or name, e.g. "pla", "petg", "abs", "tpu", "pla-cf", "resin-standard", "resin-tough". Default: PLA. See get_catalog.
colorstringColour id or name in English or Spanish, e.g. "black", "white", "red", "clear". Default: the first colour listed for the material.
qualitystringLayer height: id ("draft", "standard", "fine", "ultrafine", "resin-standard", "resin-fine") or millimetres ("0.12"). Default: standard.
infillstringInfill: percentage ("20%", "40") or id; for resin "hollow" or "solid". Default: 20% (FDM) / hollow (resin).
finishstringPost-processing id or name: "none", "cleanup", "sanded", "painted". Default: none.
supportstrue | false | auto"auto" (default) adds supports only where the geometry needs them; true/false forces the choice. The support surcharge is always reported separately. Default: auto.
quantityintegerUnits of this part. Volume discounts apply automatically from 3 units. Default: 1.
lead_timestringProduction speed id or name: "standard" (default), "priority", "express".
shippingstringDelivery id or name: "pickup" (free, Barcelona workshop — default), "bcn-courier" (Barcelona city), "es-peninsula" (mainland Spain), "es-islands" (Balearic/Canary Islands), "eu" (European Union).
languageen | esLanguage for option names and engine warnings, and for the customer invoice when ordering. Use "es" for Spanish or Catalan speakers. Default: en.

quote_model_file

Stores the file

Quote an STL or OBJ file

Exact quote for an STL or OBJ file (by URL or base64): measured on the server exactly like the configurator, with overhang and support analysis, returning a reusable model_id.

ParameterTypeDescription
file_urlstringDirect https link to the .stl or .obj file.
file_base64stringThe file itself, base64-encoded (up to about 20 MB decoded).
file_namestringFile name including extension, e.g. "bracket.stl". Required with file_base64.
unitmm | cm | inUnits the file was drawn in. STL has no units; almost all are mm. Default: mm.
scalenumberUniform scale factor, 1 = original size. Default: 1.
technologystringPrinting technology: "fdm" (filament, cheaper, larger) or "sla" (resin, finest detail). Implied by the material when omitted.
materialstringMaterial id or name, e.g. "pla", "petg", "abs", "tpu", "pla-cf", "resin-standard", "resin-tough". Default: PLA. See get_catalog.
colorstringColour id or name in English or Spanish, e.g. "black", "white", "red", "clear". Default: the first colour listed for the material.
qualitystringLayer height: id ("draft", "standard", "fine", "ultrafine", "resin-standard", "resin-fine") or millimetres ("0.12"). Default: standard.
infillstringInfill: percentage ("20%", "40") or id; for resin "hollow" or "solid". Default: 20% (FDM) / hollow (resin).
finishstringPost-processing id or name: "none", "cleanup", "sanded", "painted". Default: none.
supportstrue | false | auto"auto" (default) adds supports only where the geometry needs them; true/false forces the choice. The support surcharge is always reported separately. Default: auto.
quantityintegerUnits of this part. Volume discounts apply automatically from 3 units. Default: 1.
lead_timestringProduction speed id or name: "standard" (default), "priority", "express".
shippingstringDelivery id or name: "pickup" (free, Barcelona workshop — default), "bcn-courier" (Barcelona city), "es-peninsula" (mainland Spain), "es-islands" (Balearic/Canary Islands), "eu" (European Union).
languageen | esLanguage for option names and engine warnings, and for the customer invoice when ordering. Use "es" for Spanish or Catalan speakers. Default: en.

quote_basket

Read-only

Re-quote models with other options

Re-prices one or more models already sent, with other options and quantities, as a single order with shipping, discount, minimum order and VAT.

ParameterTypeDescription
itemsrequiredarray<object>The parts in the order. Fields: model_id*, unit, scale, technology, material, color, quality, infill, finish, supports, quantity.
lead_timestringProduction speed id or name: "standard" (default), "priority", "express".
shippingstringDelivery id or name: "pickup" (free, Barcelona workshop — default), "bcn-courier" (Barcelona city), "es-peninsula" (mainland Spain), "es-islands" (Balearic/Canary Islands), "eu" (European Union).
discount_codestringDiscount code, if the user has one.
languageen | esLanguage for option names and engine warnings, and for the customer invoice when ordering. Use "es" for Spanish or Catalan speakers. Default: en.

prepare_order

Read-only

Prepare an order for confirmation

Prepares the final order summary with the VAT-inclusive total and returns a 30-minute confirmation code. Nothing is bought: the assistant must show it to you and wait for your yes.

ParameterTypeDescription
itemsrequiredarray<object>Fields: model_id*, unit, scale, technology, material, color, quality, infill, finish, supports, quantity.
customerrequiredobjectThe person placing the order. Ask the user for these; never invent them. Fields: name*, email*, phone*, company, tax_id, address, city, postal_code, notes.
lead_timestringProduction speed id or name: "standard" (default), "priority", "express".
shippingstringDelivery id or name: "pickup" (free, Barcelona workshop — default), "bcn-courier" (Barcelona city), "es-peninsula" (mainland Spain), "es-islands" (Balearic/Canary Islands), "eu" (European Union).
discount_codestring
accepted_termsrequiredbooleantrue once the user has agreed to the terms of service and privacy policy linked in the response. Must be true.
languageen | esLanguage for option names and engine warnings, and for the customer invoice when ordering. Use "es" for Spanish or Catalan speakers. Default: en.

place_order

Creates an order

Place the confirmed order

Places the prepared order, only after your explicit confirmation. You get the invoice by email and pay from it or from the order page: payment details are never asked for in chat.

ParameterTypeDescription
confirmation_coderequiredstringThe confirmation_code returned by prepare_order.
user_confirmedrequiredbooleantrue only if the user explicitly confirmed this exact order and total.

check_order_status

Read-only

Check an order's status

Looks up an order’s status (awaiting payment, printing, shipped…) with its reference and the token from the tracking link.

ParameterTypeDescription
referencerequiredstringOrder reference, e.g. "BCN-4F2A19".
tokenrequiredstringAccess token from the tracking link.

You stay in control

  • Nothing is bought without your yes

    Ordering takes two steps: the assistant prepares a summary with the total and a 30-minute confirmation code, shows it to you, and sends it only after your explicit confirmation. Repeating the call never creates a second order.

  • No payment details in the chat

    You receive the invoice by email and pay from it or from your order’s private page. The server neither asks for nor accepts cards, IBANs or passwords.

  • Real prices, not AI prices

    Every euro comes from the same function that prices the configurator, with the live configuration. Same file and same options, same price to the cent.

  • Your files stay private

    Models are stored like any website upload, only to quote and print your order. A person checks every file before it is printed.

  • Safe downloads

    Only public https links are fetched (GitHub, Dropbox and Google Drive share links are converted automatically). Private and internal network addresses are blocked.

  • Fair use

    There are per-connection and global limits so the service stays available to everyone. If you hit one, the reply says how long to wait.

Fair-use limits

ActionLimit
Catalogue, estimates, recommendations and re-quotes300 per 10 min
Files analysed (STL/OBJ)40 per hour
Order summaries prepared40 per hour
Orders6 per hour · 3 per email per day
Discount codes checked20 per 10 min
Order status checks120 per 10 min

For developers

Stateless JSON-RPC 2.0 over HTTP. Any MCP client works; you can also call it directly.

Endpoint
https://www.3dprintbarcelona.com/mcp
Transport
Streamable HTTP · JSON responses · no sessions or SSE
Protocol versions
2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05
Authentication
None
Server card
https://www.3dprintbarcelona.com/.well-known/mcp/server-card.json
Formats
STL (binary and ASCII) and OBJ. 3MF on the web configurator.
Maximum size
40 MB by link · 20 MB as base64
Example with curl
curl https://www.3dprintbarcelona.com/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"estimate_price","arguments":{"dimensions_mm":{"x":80,"y":40,"z":30},"shape":"bracket","material":"petg"}}}'

Frequently asked questions

What is an MCP server?

MCP (Model Context Protocol) is the open standard AI assistants such as Claude and ChatGPT use to call external tools. Our MCP server gives your assistant direct access to 3D Print Barcelona’s quoting system, so it can give you real prices and place orders inside the conversation.

Which AI assistants can use it?

Any that supports remote MCP servers: Claude (web, desktop, mobile and Claude Code), ChatGPT in developer mode, Cursor, VS Code with GitHub Copilot, Windsurf, Gemini CLI and many more. Clients that only speak stdio can connect through the mcp-remote bridge.

Is it free? Do I need an account or an API key?

It is free and needs no account and no key. You only pay for the parts you order, at the same price as on the website.

Are the prices the same as on the website?

Yes, to the cent. The server uses the same pricing function and the same price configuration as the configurator. For a file, it measures it on the server exactly as your browser measures it on the website, overhang and support analysis included.

Can my assistant place an order without me knowing?

No. Ordering takes two steps: first a summary with the total and a confirmation code is prepared, which the assistant must show you; only with your explicit confirmation is it sent. And nothing is charged in the chat: you pay from the invoice you receive by email.

How do I pay for an order placed from my assistant?

Just as on the website: you receive the invoice with payment instructions and the private link to your order by email. Production starts once it is paid.

My assistant cannot upload the file. What now?

Put it somewhere with a direct download link (GitHub, or Dropbox or Google Drive shared publicly) and give it the link. Otherwise, ask for an estimate from dimensions, or upload the file to our web configurator: the price is the same.

Does an AI decide the price?

No. There is no language model on the server: each tool takes parameters and computes them with the website’s pricing engine. Your assistant only chooses which tool to use and explains the result.

Rather do it yourself?

The web configurator does the same with your file in the browser: rotate it, scale it, choose a material and see the price instantly.