Free 3D conversion (FBX, GLB, OBJ, STL, PLY, DAE, USDZ, 3MF) as a remote MCP server. No account.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Before uploading anything: for a pair of formats (for example from "fbx" to "glb"), what survives the trip (skeleton, shape keys, materials, vertex colours), what is lost, the known limits of the two formats, and the page for that pair. Says so when the pair is not offered and names the nearest ones.
Target format, same vocabulary
Source format: glb, fbx, obj, blend, stl, ply, dae, usdz or 3mf
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http shapeweld https://shapeweld.com/mcp
Before uploading anything: for a pair of formats (for example from "fbx" to "glb"), what survives the trip (skeleton, shape keys, materials, vertex colours), what is lost, the known limits of the two formats, and the page for that pair. Says so when the pair is not offered and names the nearest ones.
| Argument | Type | Description |
|---|---|---|
| to* | string | Target format, same vocabulary |
| from* | string | Source format: glb, fbx, obj, blend, stl, ply, dae, usdz or 3mf |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"description": "Target format, same vocabulary"
},
"from": {
"type": "string",
"description": "Source format: glb, fbx, obj, blend, stl, ply, dae, usdz or 3mf"
}
}
}Starts a conversion. Give the target (`to`: a format name such as glb, fbx, obj, stl, ply, dae, usdz, 3mf, or a mesh tool kind from list_tools such as mesh-decimate) and the file as an https link (`file_url`) or as the file attached to the chat (`file`). The source format is read from the file name; pass `from` for a .zip. `options` are the mesh tool's parameters (for example { targetFaces: 10000, format: "glb" }). Answers with a job id to poll with job_status.
| Argument | Type | Description |
|---|---|---|
| to* | string | Target format name, or a mesh tool kind from list_tools |
| file | object | The file attached to the chat |
| from | string | Source format name; required when the file is a .zip |
| options | object | Mesh tool parameters |
| file_url | string | An https link to the file |
| file_name | string | The file's name with its extension, when the link does not end in one |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"to"
],
"properties": {
"to": {
"type": "string",
"description": "Target format name, or a mesh tool kind from list_tools"
},
"file": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string"
},
"file_name": {
"type": "string"
},
"mime_type": {
"type": "string"
},
"download_url": {
"type": "string",
"format": "uri"
}
},
"description": "The file attached to the chat"
},
"from": {
"type": "string",
"description": "Source format name; required when the file is a .zip"
},
"options": {
"type": "object",
"description": "Mesh tool parameters",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"file_url": {
"type": "string",
"format": "uri",
"description": "An https link to the file"
},
"file_name": {
"type": "string",
"description": "The file's name with its extension, when the link does not end in one"
}
}
}The state of a conversion started by convert_file: queued, processing, ready, failed (with the reason), expired, or refused when the file needs a choice only the page can offer.
| Argument | Type | Description |
|---|---|---|
| jobId* | string | The id convert_file answered with |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"jobId"
],
"properties": {
"jobId": {
"type": "string",
"description": "The id convert_file answered with"
}
}
}The conversions this server offers: for each, the job kind, the accepted source extensions, the target (a format name, or the kind itself for a mesh tool), the upload cap in MB, whether a zip is accepted, and the page where the same conversion runs in a browser.
No arguments.
{
"type": "object",
"properties": {}
}For a ready conversion: the download link (valid 3 days, no sign-in), the file name, the expiry date, and a link that opens the result in a viewer on the site.
| Argument | Type | Description |
|---|---|---|
| jobId* | string | The id convert_file answered with |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"jobId"
],
"properties": {
"jobId": {
"type": "string",
"description": "The id convert_file answered with"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 8, 2026.