tinkercad-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TINKERCAD_HEADED | No | Set to 0 to hide Chrome after you have already logged in. First login should stay headed. | |
| TINKERCAD_PROFILE_DIR | No | Chrome profile folder (default: .browser-profile/ in this repo) | |
| TINKERCAD_SCREENSHOT_DIR | No | Where screenshots are saved |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| tinkercad_login_statusA | Check whether the persistent Chrome profile is signed in to Tinkercad. Use this first on a new machine. If it reports not logged in, complete Autodesk sign-in in the opened Chrome window, then call this tool again. Args:
Returns: loggedIn, current URL, and the next action to take. |
| tinkercad_open_circuitA | Open an existing Circuits design or start from the Circuits dashboard. Args:
Returns: Circuit snapshot after the editor is ready. Examples:
Error Handling:
|
| tinkercad_get_circuitA | Read the currently open Circuits editor: components, pins, wires, code, serial, and simulation flag. Call this after every build step so later tools use real component ids. Args:
Returns: Structured circuit state. Component ids from this tool are required by move/delete/wire tools. |
| tinkercad_screenshotA | Capture the visible Circuits editor as a PNG. Use when SVG scrape is incomplete and you need to see placement, wiring, or LED state. Returns: An image plus the temp file path. |
| tinkercad_list_componentsA | List the local catalog of Tinkercad Circuits parts this server knows how to search for. This does not scrape Autodesk. It is the allowed vocabulary for tinkercad_add_component and tinkercad_build_circuit. Args:
|
| tinkercad_add_componentA | Search the Circuits parts panel and drop a component onto the canvas. Args:
Returns: Updated circuit snapshot. Prefer ids from the returned components list for later wiring. Error Handling:
|
| tinkercad_move_componentB | Drag an existing component to a new canvas position. Args:
|
| tinkercad_delete_componentA | Select a component and delete it from the open circuit. Args:
This removes the part and its attached wires. |
| tinkercad_connect_pinsA | Click-to-wire two pins on the open circuit. Args:
Call tinkercad_get_circuit first so pin names match what the editor actually exposed. |
| tinkercad_delete_wireB | Select a wire by id and delete it. Args:
|
| tinkercad_set_component_attributeB | Change an inspector field on a selected component (resistance, color, value). Args:
|
| tinkercad_get_codeA | Open the Code panel, switch to Text mode, and return the sketch. Args:
|
| tinkercad_set_codeA | Replace the entire Text-mode Arduino sketch. Args:
Switching from Blocks to Text is done automatically when the dropdown is present. |
| tinkercad_start_simulationA | Press Start Simulation in the open editor. After starting, wait and call tinkercad_read_serial or tinkercad_screenshot to observe results. |
| tinkercad_stop_simulationB | Press Stop Simulation in the open editor. |
| tinkercad_read_serialA | Read text currently shown in the Circuits serial monitor. Args:
The Code panel is opened if needed. Empty output usually means the sketch never called Serial.begin / Serial.println, or simulation is stopped. |
| tinkercad_build_circuitA | Place components, set attributes, wire pins, and optionally write Arduino code in one call. This is a convenience workflow over the primitive tools. Prefer primitives when you need to recover from a single failed step. Args:
Example: components: [ { "ref": "uno", "type": "arduino_uno_r3", "x": 220, "y": 220 }, { "ref": "led1", "type": "led", "x": 520, "y": 220, "attributes": { "color": "red" } }, { "ref": "r1", "type": "resistor", "x": 520, "y": 340, "attributes": { "resistance": "220" } } ] wires: [ { "from": "uno.D13", "to": "led1.anode" }, { "from": "led1.cathode", "to": "r1.pin1" }, { "from": "r1.pin2", "to": "uno.GND" } ] |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sethski/tinkercad-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server