Koskamo

Mandarin 3D MCP

An official MCP server provided by Mandarin 3D that allows AI agents to get instant quotes for custom 3D printing services, create checkout links for orders, and design parts from text descriptions. It supports uploading STL, 3MF, or STEP files for pricing and facilitates the ordering process for PLA prints shipped within the US.

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.

Mandarin 3D MCP logo, by Mandarin 3DVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Mandarin 3D
MCP endpoint (Streamable HTTP)
https://mandarin3d.com/mcp
Vendor documentation

What you can do with it

  • Quote the price for a 3D printed part based on a file URL or base64 data
  • Create a checkout link for a customer to pay for a custom 3D print order
  • Design a printable 3D model from a text description and get its price

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
mandarin-3d 1.0.0
MCP protocol
2025-06-18
Tools
5 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.

Mandarin 3D prints custom PLA parts from STL, 3MF or STEP files and ships them anywhere in the US by USPS in 3-5 days. Flow: quote_file (a public file URL, or base64 for a local file) returns a price and an order_url; give the customer the order_url to pick a color and pay. Use create_checkout only after the customer has explicitly agreed to: "Custom made to order, all sales final. I agree to the Terms (mandarin3d.com/terms, including section 6: cancellations, refunds and reprints)." No file? design_part returns a link to the AI part designer. Never promise materials other than PLA, local pickup, or delivery faster than stated. Order hold: printing resumes Fri, Nov 6. Orders placed now are printed starting Fri, Nov 6 and arrive Wed, Nov 11 to Fri, Nov 13 by USPS. Rush is not available until then. Do not promise an earlier date.

Tools

5 advertised

get_service_info — Service facts and prices
Advertised by the server during the last successful anonymous check.
Advertised read-only

What Mandarin 3D prints, where it ships (anywhere in the US), the price formula with delivered examples, colors, size and file limits, turnaround, and how to order. Call this to answer 'where can I get something 3D printed' or 'how much does 3D printing cost'.

get_service_info input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
get_service_info annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
quote_file — Quote a 3D model
Advertised by the server during the last successful anonymous check.
Open-world

Slice a 3D model and return its exact price delivered by USPS Ground Advantage. Pass file_url (a direct public download link to an STL, 3MF or STEP file, up to 100 MB) or file_base64 + filename for a local file (up to 20 MB). Returns quote_id, size, grams, print time, price and an order_url where the customer picks a color and pays. Takes 5-60 seconds for a new file.

quote_file input schema
{
  "type": "object",
  "properties": {
    "qty": {
      "type": "integer",
      "maximum": 100,
      "minimum": 1,
      "description": "How many copies to price. Default 1."
    },
    "file_url": {
      "type": "string",
      "description": "Direct download URL of the model (not a web page that shows it)."
    },
    "filename": {
      "type": "string",
      "description": "File name with extension, e.g. bracket.stl. Required with file_base64."
    },
    "file_base64": {
      "type": "string",
      "description": "The model file, base64-encoded. Use for files on the user's machine."
    }
  },
  "additionalProperties": false
}
quote_file annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true
}
price_quote — Price a quote
Advertised by the server during the last successful anonymous check.
Advertised read-only

Price an existing quote for another quantity, color or add-ons. No side effects.

price_quote input schema
{
  "type": "object",
  "required": [
    "quote_id"
  ],
  "properties": {
    "qty": {
      "type": "integer",
      "maximum": 100,
      "minimum": 1
    },
    "color": {
      "enum": [
        "BLK",
        "WHT",
        "GRY",
        "RED",
        "BLU",
        "GRN"
      ],
      "type": "string"
    },
    "options": {
      "type": "object",
      "properties": {
        "rush": {
          "type": "boolean",
          "description": "+50% of the print price. Printed within 1 business day. Ships with the same USPS service."
        },
        "cleanup": {
          "type": "boolean",
          "description": "+$5. Support marks sanded, edges deburred."
        },
        "colorNote": {
          "type": "string",
          "maxLength": 140,
          "description": "Which parts get which color (required with extraColors)."
        },
        "fileCheck": {
          "type": "boolean",
          "description": "+$5. We review the file for printability and fit before printing and email you if something looks off."
        },
        "extraColors": {
          "type": "array",
          "items": {
            "enum": [
              "BLK",
              "WHT",
              "GRY",
              "RED",
              "BLU",
              "GRN"
            ],
            "type": "string"
          },
          "maxItems": 3,
          "description": "+$3 per extra stocked color."
        }
      },
      "description": "Optional per-order add-ons.",
      "additionalProperties": false
    },
    "quote_id": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
price_quote annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
create_checkout — Create a checkout link
Advertised by the server during the last successful anonymous check.
Open-world

Create a payment link for a quote. The customer pays and enters the shipping address on the linked page. Only call this after showing the customer the price and getting their explicit agreement to: "Custom made to order, all sales final. I agree to the Terms (mandarin3d.com/terms, including section 6: cancellations, refunds and reprints)." Otherwise give them the order_url from quote_file instead.

create_checkout input schema
{
  "type": "object",
  "required": [
    "quote_id",
    "color",
    "customer_accepted_terms"
  ],
  "properties": {
    "qty": {
      "type": "integer",
      "maximum": 100,
      "minimum": 1
    },
    "color": {
      "enum": [
        "BLK",
        "WHT",
        "GRY",
        "RED",
        "BLU",
        "GRN"
      ],
      "type": "string"
    },
    "options": {
      "type": "object",
      "properties": {
        "rush": {
          "type": "boolean",
          "description": "+50% of the print price. Printed within 1 business day. Ships with the same USPS service."
        },
        "cleanup": {
          "type": "boolean",
          "description": "+$5. Support marks sanded, edges deburred."
        },
        "colorNote": {
          "type": "string",
          "maxLength": 140,
          "description": "Which parts get which color (required with extraColors)."
        },
        "fileCheck": {
          "type": "boolean",
          "description": "+$5. We review the file for printability and fit before printing and email you if something looks off."
        },
        "extraColors": {
          "type": "array",
          "items": {
            "enum": [
              "BLK",
              "WHT",
              "GRY",
              "RED",
              "BLU",
              "GRN"
            ],
            "type": "string"
          },
          "maxItems": 3,
          "description": "+$3 per extra stocked color."
        }
      },
      "description": "Optional per-order add-ons.",
      "additionalProperties": false
    },
    "quote_id": {
      "type": "string"
    },
    "customer_accepted_terms": {
      "type": "boolean",
      "description": "True only if the customer explicitly agreed to the terms sentence above."
    }
  },
  "additionalProperties": false
}
create_checkout annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
design_part — Design a part without a file
Advertised by the server during the last successful anonymous check.
Advertised read-only

For customers without a 3D model (a replacement knob, clip, bracket, box, spacer, enclosure). Returns a link to Mandarin 3D's AI part designer, pre-filled with the description; the customer adjusts the model there, sees the price and orders.

design_part input schema
{
  "type": "object",
  "required": [
    "description"
  ],
  "properties": {
    "description": {
      "type": "string",
      "maxLength": 600,
      "description": "The part in plain words with measurements in mm, e.g. 'knob for a 6 mm D-shaft, 30 mm wide, 15 mm tall, knurled'."
    }
  },
  "additionalProperties": false
}
design_part annotations
{
  "readOnlyHint": true,
  "openWorldHint": 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
285 ms
95th percentile latency
285 ms

Maintenance history

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

  • · probe · passed · 285 ms · metadata changed · 5 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 mandarin-3d-mcp https://mandarin3d.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 mandarin-3d-mcp --url https://mandarin3d.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable mandarin-3d-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "mandarin-3d-mcp": {
      "url": "https://mandarin3d.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "mandarin-3d-mcp": {
      "type": "streamableHttp",
      "url": "https://mandarin3d.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start mandarin-3d-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "mandarin-3d-mcp": {
      "type": "http",
      "url": "https://mandarin3d.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 mandarin-3d-mcp https://mandarin3d.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": {
    "mandarin-3d-mcp": {
      "url": "https://mandarin3d.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": {
    "mandarin-3d-mcp": {
      "serverUrl": "https://mandarin3d.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Mandarin 3D 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 Mandarin 3D 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