Tinkercad Circuits Mcp

io.github.netchuu由 GitHub 账号 netchuu 发布v0.1.0更新于 Nov 6, 2026

Builds and simulates Arduino breadboard circuits in Tinkercad Circuits.

已验证STDIO仅桌面浏览器自动化开发者工具

概览

AI 生成的概览

在 Tinkercad Circuits 中搭建 Arduino 面包板电路、写入代码,并运行模拟器读回 LED、舵机与串口结果。

可以做什么
  • 检查登录状态,列出可用元件及其引脚名称和可设属性
  • 按链接或 id 打开已有设计,或新建一个设计
  • 按规格一次性搭建或替换整个电路:Uno、面包板、指定孔位上的元件、连线与代码
  • 读回已保存的电路,并替换 Arduino 代码
  • 在两次运行之间修改元件设置,例如旋钮位置或传感器距离
  • 运行模拟器,可按键并输入串口内容,采样 LED 亮度、舵机角度和串口输出,并截图
适用场景
适合让助手在 Tinkercad 中组装并验证 Arduino 面包板设计,例如课程实验或快速原型,并通过模拟而非手工接线来检查行为。
运行要求
通过 npx 在本机运行的本地进程,需要 Node.js 20 或更高版本以及 Google Chrome。需用登录命令一次性在打开的 Chrome 窗口中登录,会话保存在本地配置目录;未声明 API 密钥或环境变量。同一时间只能有一个进程使用该 Chrome 配置。
安装前请注意
它依赖 Tinkercad 编辑器内部机制,官方可能随时改动导致搭建失败;与 Autodesk 无关联。搭建会替换当前打开的电路内容并保存到你的 Tinkercad 账户,冒烟测试也会在该账户中创建设计。登录在普通 Chrome 窗口中进行,会话保存在本地配置目录。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Tinkercad Circuits Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

tinkercad-circuits-mcp

An MCP server that builds Arduino circuits in Tinkercad Circuits and runs them in the simulator. You describe the circuit (which part goes in which breadboard hole, the wires, the sketch) and it appears in your Tinkercad account, wired on a breadboard, with the code saved. It can then start the simulation, press buttons, type into the Serial Monitor and tell you what the LEDs, servos and serial output did.

It works with Claude Code, Claude Desktop, Cursor, Codex and any other client that speaks the Model Context Protocol.

[The server builds a traffic light on an empty breadboard, then runs it in the Tinkercad simulator: green, yellow, red]

examples/traffic-light.json, built and simulated by the server. The LEDs are read back from the simulator to check the order.

I wrote it to get through a course with 70-odd Arduino lab tasks that all had to be handed in as Tinkercad designs. Building them by hand took forever.

If you found sethski/tinkercad-mcp-server first: that one works by clicking and dragging in the editor. When I tried it in November 2026 it could not create a circuit or find the breadboard in the parts panel, and it had no way of knowing which hole a leg ended up in. This server changes the editor's circuit model directly, so parts land in the holes you name, and it reads the result back and checks it in the simulator.

Not affiliated with Autodesk. Tinkercad has no public API for Circuits; this uses the editor's internals, which can change without notice. See How it works.

What it can do

  • Create or open a design and build a whole circuit in one call: Arduino Uno, small breadboard, parts in the holes you name, colour-coded jumper wires routed around the board.
  • Write the Arduino sketch into the design.
  • Read a design back: every part, the hole under each pin, its settings, every wire, the code.
  • Run the simulator and sample LED brightness, servo angles and the Serial Monitor at the times you choose, while pressing buttons or sending serial input.
  • Change a setting between runs, like a potentiometer position or the distance an ultrasonic sensor sees, to test different inputs.

About 20 parts are supported: LEDs, resistors, buttons, potentiometers, servos, a piezo, the HC-SR04, TMP36, DC motors (with and without encoder), the L293D, an IR receiver, an RGB LED and a few more. The full list is in docs/parts.md.

Setup

You need Node.js 20 or newer and Google Chrome.

Claude Code

Install it as a plugin. That adds the MCP server and the skill in one go:

/plugin install tinkercad-circuits --marketplace netchuu/tinkercad-circuits-mcp

From a shell: claude plugin marketplace add netchuu/tinkercad-circuits-mcp and then claude plugin install tinkercad-circuits@tinkercad-circuits-mcp.

If you only want the server: claude mcp add tinkercad-circuits -- npx -y tinkercad-circuits-mcp.

Codex

In ~/.codex/config.toml:

toml
[mcp_servers.tinkercad-circuits]command = "npx"args = ["-y", "tinkercad-circuits-mcp"]

and the skill:

bash
mkdir -p ~/.codex/skills/tinkercad-circuitscurl -fsSL https://raw.githubusercontent.com/netchuu/tinkercad-circuits-mcp/main/skills/tinkercad-circuits/SKILL.md -o ~/.codex/skills/tinkercad-circuits/SKILL.md

Claude Desktop, Cursor and other clients

Add this to the client's MCP config: claude_desktop_config.json for Claude Desktop, ~/.cursor/mcp.json for Cursor.

json
{  "mcpServers": {    "tinkercad-circuits": {      "command": "npx",      "args": ["-y", "tinkercad-circuits-mcp"]    }  }}

Sign in to Tinkercad

Once, whichever client you use:

bash
npx -y tinkercad-circuits-mcp login

This opens Chrome on the Tinkercad page. Sign in the way you normally do; it is an ordinary Chrome window. It closes once you reach your dashboard. The session lives in ~/.tinkercad-circuits-mcp/profile; your password never passes through this project.

Restart your client afterwards so it picks up the server.

Let your agent set it up

You can hand the setup to Claude Code or Codex:

Set up the Tinkercad Circuits MCP server from https://github.com/netchuu/tinkercad-circuits-mcp, following its README.

The agent can do everything except signing in. It should run npx -y tinkercad-circuits-mcp login and ask you to sign in in the Chrome window that opens; then, after a restart, tinkercad_status should report signedIn: true.

From source

bash
git clone https://github.com/netchuu/tinkercad-circuits-mcp.gitcd tinkercad-circuits-mcpnpm installnpm run buildnpm run login

and use node /full/path/to/tinkercad-circuits-mcp/dist/index.js as the command in the configs above.

Using it

Ask for a circuit in plain words:

Build a traffic light in Tinkercad: red, yellow and green LEDs on pins 10, 9 and 8, green for 5 s, yellow 2 s, red 5 s. Then run it and check the order.

Claude turns that into a spec for tinkercad_build_circuit. A smaller one, a single blinking LED, looks like this:

json
{  "title": "Blink an LED on a breadboard",  "parts": [    { "ref": "r1", "type": "resistor", "at": "5g", "pin": "1", "angle": 90, "props": { "ohms": 220 } },    { "ref": "led1", "type": "led", "at": "9i", "pin": "anode", "angle": 180 }  ],  "wires": [["uno.GND1", "T-1"], ["uno.D13", "5i"], ["10h", "T-10"]],  "code": "void setup() { pinMode(13, OUTPUT); }\nvoid loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); }"}

The resistor spans columns 5 to 9 in row g, the LED's anode shares column 9 and its cathode goes to the ground rail. The format is explained in docs/circuit-spec.md, and there are more complete circuits in examples/.

To check the circuit, Claude calls tinkercad_simulate:

json
{ "samples_ms": [500, 1500, 2500], "leds": ["led1"] }

and gets back, for each sample, whether led1 was on and the simulator clock at that moment.

Tools

ToolWhat it does
tinkercad_statusChecks that the Chrome profile is signed in to Tinkercad.
tinkercad_list_partsParts, pin names and settings.
tinkercad_open_circuitOpens a design by link or id, or creates a new one.
tinkercad_build_circuitReplaces the open circuit with the one in the spec and saves the code.
tinkercad_get_circuitReads the saved circuit back.
tinkercad_set_codeReplaces the sketch.
tinkercad_set_partChanges a part setting (knob position, sensor distance).
tinkercad_simulateRuns the simulator with button presses and serial input; returns LED, servo and serial readings.
tinkercad_screenshotReturns a picture of the editor.

Limits

  • One small breadboard per circuit, Arduino Uno only.
  • Tinkercad has no KY-023 joystick, LM35, HC-05 Bluetooth module, L298N or IR line sensor. The skill lists the usual stand-ins (two potentiometers, TMP36, the Serial Monitor, L293D, pushbuttons).
  • The simulator runs slower than real time, and LED readings come from a screenshot, so leave some margin in your timings. Hold buttons for at least 0.6 s.
  • Only one process can use the Chrome profile at a time.
  • If Tinkercad changes its editor internals, building will fail until the code is updated. npm run smoke tells you quickly whether it still works.

Documentation

Development

bash
npm test          # unit tests for the spec and catalog, no browser needednpm run smoke     # builds and simulates two circuits in your Tinkercad accountnpm run parts-doc # regenerates docs/parts.md

The smoke test creates a design called "tinkercad-circuits-mcp smoke test". Pass its link to reuse it: npm run smoke -- https://www.tinkercad.com/things/<id>.

Issues and pull requests are welcome, especially new parts. Adding one is mostly finding its device id (the data-did attribute on the tile in Tinkercad's parts panel) and its pin names; How it works has the details.

License

MIT

来源:README.md,提交 c1ab3b5

工具

9

tinkercad_status

Check Tinkercad sign-in

Opens the Tinkercad dashboard in the server's Chrome profile and reports whether you are signed in. If not, the user has to run `npm run login` once.

无需输入参数。

tinkercad_list_parts

List parts

Lists the parts that can go in a circuit spec, with their pin names, pin offsets (in breadboard holes, at angle 0) and settable properties. Filter with a word like 'led', 'motor' or 'sensor'.

输入参数query

tinkercad_open_circuit

Open or create a circuit

Opens an existing Tinkercad Circuits design (link or id) in the editor, or creates a new one with target "new". Optionally renames it.

输入参数titletarget必填

tinkercad_build_circuit

Build a circuit

Replaces everything in the open circuit with the one described here: an Arduino Uno, one small breadboard, the listed parts placed in breadboard holes, the wires and (optionally) the Arduino code. If no circuit is open, a new one is created. Holes are named like '12e' (columns 1-30, rows a-j; a-e and f-j are the two halves). Rails are T+, T-, B+, B- with an optional column (T-12). Wire ends are holes, rails, uno.PIN (uno.D13, uno.A0, uno.5V, uno.GND1) or ref.pin (led1.anode). `pin` says which leg of the part goes into `at`; the part is rotated until all legs land in holes. See docs/circuit-spec.md for examples.

输入参数codepartstitlewiresarduino

tinkercad_get_circuit

Read the open circuit

Returns the open circuit as Tinkercad has it saved: each part with the hole under every pin, its properties, every wire and the Arduino code.

无需输入参数。

tinkercad_set_code

Set the Arduino code

Replaces the Arduino sketch of the open circuit (text code, not blocks).

输入参数code必填

tinkercad_set_part

Change a part setting

Changes a setting on a part that is already in the circuit, e.g. a potentiometer position (0-1) or the distance an ultrasonic sensor sees. Use it between simulation runs to test different inputs.

输入参数ref必填props必填

tinkercad_simulate

Run the simulation

Starts the simulator, optionally presses buttons and types into the Serial Monitor, and samples LED brightness, servo angles and simulator time at the given moments (milliseconds after start). Returns the samples and the end of the Serial Monitor text. The simulator usually runs a bit slower than real time, so leave some margin and check sim_time.

输入参数ledsserialservospressessamples_ms必填keep_runningserial_inputwait_for_serial

tinkercad_screenshot

Screenshot

Returns a PNG of the Tinkercad window as it is right now.

无需输入参数。

版本历史

1
  1. v0.1.0最新Nov 6, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分