A browser 3D CAD for your AI: it scripts real-size models, uCAD builds them and returns pictures.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer ucad_… — your key from uCAD (sign in, assistant menu, Use uCAD from your AI)
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.
The drawings kept in the user's uCAD account, newest first: id, name, when changed, link.
This tool takes no arguments.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http ucad https://ucad.app/api/mcp \ --header 'Authorization: Bearer YOUR_TOKEN'
Headers
Authorization (required): Bearer ucad_… — your key from uCAD (sign in, assistant menu, Use uCAD from your AI)The drawings kept in the user's uCAD account, newest first: id, name, when changed, link.
No arguments.
{
"type": "object",
"properties": {}
}The script of one of the reference examples listed by specs (by its id): a finished model built carefully in uCAD's language, to learn from before building something like it.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"enum": [
"house",
"staircase",
"kitchen",
"diningset",
"garden",
"desklamp",
"toilet",
"teapot",
"gears",
"flange",
"enclosure"
],
"type": "string"
}
}
}Run a whole uCAD script on a drawing in the user's account (a new drawing when `drawing` is left out) and keep the result there. Returns the report (every solid with its size and place, warnings, print() output, or the error with its line), the drawing's id and link, and pictures of it. Each run replaces what the drawing's previous run made. The language is at spec version e69d2ae9e0: if what you know of it is another version (or none), call specs first.
| Argument | Type | Description |
|---|---|---|
| code* | string | The whole script (uCAD's Python, see specs) |
| name | string | A name for a new drawing (as the user sees it in Open) |
| views | array | The sides to show it from (one picture each): iso, iso_back, front, back, left, right, top, bottom. Default: iso. |
| width | integer | Picture width in pixels (default 800) |
| height | integer | Picture height in pixels (default 600) |
| drawing | string | The id of the drawing to run it on. Left out: a new drawing. |
| spec_version | string | The spec version (from specs) the script is written for. Now: e69d2ae9e0 |
{
"type": "object",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"description": "The whole script (uCAD's Python, see specs)"
},
"name": {
"type": "string",
"description": "A name for a new drawing (as the user sees it in Open)"
},
"views": {
"type": "array",
"items": {
"enum": [
"iso",
"iso_back",
"front",
"back",
"left",
"right",
"top",
"bottom"
],
"type": "string"
},
"description": "The sides to show it from (one picture each): iso, iso_back, front, back, left, right, top, bottom. Default: iso."
},
"width": {
"type": "integer",
"maximum": 1600,
"minimum": 200,
"description": "Picture width in pixels (default 800)"
},
"height": {
"type": "integer",
"maximum": 1200,
"minimum": 150,
"description": "Picture height in pixels (default 600)"
},
"drawing": {
"type": "string",
"description": "The id of the drawing to run it on. Left out: a new drawing."
},
"spec_version": {
"type": "string",
"description": "The spec version (from specs) the script is written for. Now: e69d2ae9e0"
}
}
}What is in a drawing now: its solids and objects with sizes and places, flat shapes drawn by hand, and its script with line numbers.
| Argument | Type | Description |
|---|---|---|
| drawing | string | The drawing's id (from an earlier run_script, or from drawings). Left out: the drawing worked on last. |
{
"type": "object",
"properties": {
"drawing": {
"type": "string",
"description": "The drawing's id (from an earlier run_script, or from drawings). Left out: the drawing worked on last."
}
}
}Call this FIRST in every session, before writing any uCAD script, even if you have notes or a skill about uCAD from before: the language (a small Python: every function, its arguments and the objects it returns, with the rules), how this service works, the reference examples, what is new. The language is at spec version e69d2ae9e0 now; a copy with another version is out of date.
No arguments.
{
"type": "object",
"properties": {}
}Pictures of a drawing as it is now (with anything the user changed by hand), from the sides asked for.
| Argument | Type | Description |
|---|---|---|
| views | array | The sides to show it from (one picture each): iso, iso_back, front, back, left, right, top, bottom. Default: iso. |
| width | integer | Picture width in pixels (default 800) |
| height | integer | Picture height in pixels (default 600) |
| drawing | string | The drawing's id (from an earlier run_script, or from drawings). Left out: the drawing worked on last. |
{
"type": "object",
"properties": {
"views": {
"type": "array",
"items": {
"enum": [
"iso",
"iso_back",
"front",
"back",
"left",
"right",
"top",
"bottom"
],
"type": "string"
},
"description": "The sides to show it from (one picture each): iso, iso_back, front, back, left, right, top, bottom. Default: iso."
},
"width": {
"type": "integer",
"maximum": 1600,
"minimum": 200,
"description": "Picture width in pixels (default 800)"
},
"height": {
"type": "integer",
"maximum": 1200,
"minimum": 150,
"description": "Picture height in pixels (default 600)"
},
"drawing": {
"type": "string",
"description": "The drawing's id (from an earlier run_script, or from drawings). Left out: the drawing worked on last."
}
}
}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 6, 2026.