Skip to main content
Glama
sethski

tinkercad-mcp-server

by sethski

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TINKERCAD_HEADEDNoSet to 0 to hide Chrome after you have already logged in. First login should stay headed.
TINKERCAD_PROFILE_DIRNoChrome profile folder (default: .browser-profile/ in this repo)
TINKERCAD_SCREENSHOT_DIRNoWhere 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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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:

  • response_format ('markdown' | 'json'): Output format

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:

  • target (string): Full tinkercad.com URL, a thing id, or 'new'

  • response_format ('markdown' | 'json')

Returns: Circuit snapshot after the editor is ready.

Examples:

Error Handling:

  • Login wall: sign in in Chrome, then retry

  • Non-Tinkercad URLs are rejected

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:

  • include_code (boolean, default true)

  • include_serial (boolean, default true)

  • include_pins (boolean, default true)

  • response_format ('markdown' | 'json')

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:

  • query (string, optional): Filter by id, label, or alias

  • response_format ('markdown' | 'json')

tinkercad_add_componentA

Search the Circuits parts panel and drop a component onto the canvas.

Args:

  • component (string): Catalog id or search text (led, resistor, Arduino Uno R3)

  • x (number): Canvas X in pixels (default 320)

  • y (number): Canvas Y in pixels (default 240)

  • response_format

Returns: Updated circuit snapshot. Prefer ids from the returned components list for later wiring.

Error Handling:

  • Unknown part: call tinkercad_list_components

  • Editor closed: call tinkercad_open_circuit first

tinkercad_move_componentB

Drag an existing component to a new canvas position.

Args:

  • component_id (string): Id from tinkercad_get_circuit

  • x, y (number)

  • response_format

tinkercad_delete_componentA

Select a component and delete it from the open circuit.

Args:

  • component_id (string)

  • response_format

This removes the part and its attached wires.

tinkercad_connect_pinsA

Click-to-wire two pins on the open circuit.

Args:

  • from (string): componentId.pinName (example: uno.D13)

  • to (string): componentId.pinName (example: led1.anode)

  • response_format

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:

  • wire_id (string): Id from tinkercad_get_circuit

  • response_format

tinkercad_set_component_attributeB

Change an inspector field on a selected component (resistance, color, value).

Args:

  • component_id (string)

  • name (string): Field label, e.g. resistance or color

  • value (string): e.g. 220 or red

  • response_format

tinkercad_get_codeA

Open the Code panel, switch to Text mode, and return the sketch.

Args:

  • response_format

tinkercad_set_codeA

Replace the entire Text-mode Arduino sketch.

Args:

  • code (string): Full sketch, including setup() and loop()

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:

  • wait_ms (number, default 1500): Delay before reading so the sketch can print

  • response_format

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:

  • start_new (boolean): Open a new circuit first

  • components: [{ ref, type, x?, y?, attributes? }]

  • wires: [{ from, to }] using ref.pin (example: uno.D13 -> led1.anode)

  • code (string, optional)

  • response_format

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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