eda-agent
Provides an Altium Designer backend via a DelphiScript bridge, exposing around 450 tools for automating PCB design workflows in Altium Designer.
Provides tools for designing printed circuit boards in EasyEDA Pro, including searching the LCSC library, placing schematic parts, emitting connections, running ERC, importing schematics to PCB, placing footprints, routing tracks/vias/pads, drawing board outlines and silkscreen, adding copper pours/fills/keepouts, dimensions, running DRC, and exporting Gerber, BOM, pick-and-place, netlist, and DXF files.
Provides a KiCad backend for driving PCB design workflows through KiCad.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@eda-agentsearch LCSC for an ESP32 module and place it on the schematic"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Easy-EDA-Claude-Agent
Let Claude design printed circuit boards in EasyEDA Pro: pick parts from the live LCSC library, draw a readable schematic, push it to the PCB, place, route, outline, run DRC and export the fabrication files, all through MCP while you watch the editor.
This is a fork of eda-agent by George
Saliba (Apache-2.0), focused on the EasyEDA Pro backend and hardened against
EasyEDA Pro 3.2 (international, pro.easyeda.com), which upstream did not
run against. The Altium Designer and KiCad backends are still here, unchanged;
their documentation lives in docs/UPSTREAM_README.md.
Experimental. It drives a real editor and can modify, save or delete design data. Work on a copy until you trust a workflow.
What it can do
Verified live on EasyEDA Pro 3.2.206, Windows 11, driven from Claude Code:
Stage | Tools | Status |
Find parts in the LCSC library |
| works |
Place parts from a plan |
| works |
Read where pins landed |
| works |
Wire nets, rail glyphs |
| works, avoids other nets' pins |
ERC, save schematic |
| works |
Schematic to PCB |
| works |
Place footprints |
| works |
Tracks, vias, pads |
| works |
Board outline, silkscreen |
| works |
Copper pour, fill, keepout |
| works |
Dimensions |
| works |
DRC, board statistics |
| works |
BOM, pick and place, netlist, DXF |
| works |
Gerber |
| needs EasyEDA's user session loaded, see limitations |
Autorouting |
| not available in EasyEDA 3.2 |
Anything without a named tool is reachable through easyeda_invoke, which calls
any method of EasyEDA's extension API directly and builds polygons from
{"$polygon": [x, y, "L", x, y, ...]}.
Related MCP server: jlceda-mcp-server
How it works
Claude Code ──MCP/stdio──> eda-agent (Python) <──WebSocket── EasyEDA Pro extension
127.0.0.1:49620 dials out (extensions/easyeda)The extension runs inside EasyEDA Pro and connects out to the local server, so EasyEDA has to be open with the extension enabled before any tool can reach it. Coordinates are in mils throughout.
Setup
Requirements: Windows, Python 3.11+, Node.js (only to rebuild the extension), and EasyEDA Pro 3.2.x, international edition.
Use a client whose region matches your account. A 4.x China-line client pointed at
pro.easyeda.comcalls/api/v5, which that server does not have: library search returns nothing, placement hangs and cloud saves silently fail. The fix is the matching client, not code.
Install the server:
git clone https://github.com/Nivakaran-S/Easy-EDA-Claude-Agent.git cd Easy-EDA-Claude-Agent python -m venv .venv .venv\Scripts\python -m pip install -e ".[dev]"Build the extension (or use a prebuilt
.eextfrom a release):.venv\Scripts\python extensions/easyeda/build.pyIn EasyEDA Pro: Settings > Extensions > Import, choose
extensions/easyeda/eda-agent-bridge.eext, enable it, and allow external interaction when asked. Without that permission the editor never opens a socket.Register the server with Claude Code:
claude mcp add -s user eda-agent -- <repo>\.venv\Scripts\python.exe -m eda_agent --backend easyeda --no-dashboardOpen a project in EasyEDA, then eda-agent > Connect to eda-agent from the top menu. In Claude Code,
easyeda_pingshould answer withbuild_matches: true.
Designing a board
The schematic comes from a plan, not from placing parts one by one:
Describe the circuit. Claude writes a
DesignPlan(parts with LCSC numbers, nets) and checks it withdesign_validate_plan.easyeda_search_devicesresolves each part to a library uuid.easyeda_emit_plan+easyeda_run_planplace the symbols.easyeda_get_schematic_pin_positionsreads the real pin positions, andeasyeda_emit_connectionsturns them into wires and rail glyphs.easyeda_run_erc,easyeda_save_schematic, theneasyeda_import_schematic_changesto bring it to the board.Place footprints, draw the outline with
easyeda_add_polylineonBOARD_OUTLINE, route witheasyeda_add_line, pour ground witheasyeda_add_zone, theneasyeda_run_drcand the exports.
Always read pin numbers back after placing a part. LED and diode symbols in the LCSC library do not agree on whether pin 1 is the anode.
Known limitations
No autorouter.
pcb_Document.autoRoutingis declared in EasyEDA's types and absent at runtime. Tracks are drawn segment by segment.Gerber and cloud save need the user session. Both read the logged-in user from EasyEDA's
/api/user. When that request keeps getting reset, they fail withCannot read properties of null (reading 'user_uuid')or "the editor declined to save". Reload the client or change network, then retry.Slow cloud calls. Library search, placement and opening documents can take over 15 s on a weak link; they get a 60 s budget plus 15 s per placed part. A timeout is not proof of failure: read the design back before retrying.
Updating the extension needs a full restart. EasyEDA keeps the old build running in each open document's host after a re-import. Bump the version, import, quit EasyEDA completely and reopen it.
3.2 API quirks handled here: none of the API enums are injected as globals (a table generated from EasyEDA's own
api-types.d.tsstands in); lines and arcs are refused off copper (drawn as polylines instead); fill, region and pour need a closed ring; arcs need an explicit interaction mode, without which the editor hangs.
Other backends
The upstream Altium Designer and KiCad backends ship unchanged and are chosen
with --backend altium (the default) or --backend kicad. The Altium backend
registers around 450 tools (480+ with both backends registered) over a
DelphiScript bridge. Setup, the tool catalogue and their limitations are in
docs/UPSTREAM_README.md and
docs/BACKENDS.md.
Altium DelphiScript engine can crash
Some Altium tool paths raise a DelphiScript error and halt the polling loop.
In Altium's Script IDE press the red Stop button (or Ctrl+F3), then
restart the loop with File > Run Script... > StartMCPServer > Run. Details
are in docs/UPSTREAM_README.md.
Changes from upstream
See the commit history. In short: EasyEDA 3.2 support (enum fallbacks, closed
rings, off-copper fallbacks, export file names, arc arguments), longer budgets
for cloud-bound commands, polyline outlines in the outline and statistics
readers, copper-only layer_count, the pin-position tool, obstacle-aware wiring
and rail-glyph placement in the connection emitter, and polygon support in
easyeda_invoke. Regression tests are in tests/test_easyeda_3_2_fixes.py.
Development
.venv\Scripts\python -m pytest -n auto testsAfter editing extensions/easyeda/main.js, bump the version in
extensions/easyeda/extension.json and rebuild; EasyEDA ignores a re-import of a
version it already has. python scripts/gen_tool_reference.py regenerates
docs/TOOL_REFERENCE.md, the list of every tool.
More: docs/BACKENDS.md,
extensions/easyeda/README.md,
CONTRIBUTING.md, SECURITY.md.
License and credit
Apache License 2.0, see LICENSE and NOTICE. Original work copyright George Saliba (salitronic/eda-agent); modifications by Nivakaran-S.
Not affiliated with, endorsed by or sponsored by EasyEDA, JLCPCB, LCSC, Altium Limited, the KiCad project or Anthropic. Their names are trademarks of their respective owners.
This server cannot be deployed
Maintenance
Related MCP Connectors
Search and review real KiCad and Altium PCB designs: schematics, BOMs, netlists, DRC/ERC.
AI electronics blueprint generator — BOM, wiring, firmware, renders for Arduino/ESP32/RPi.
Verified KiCad footprints, symbols & 3D models for AI agents. No signup, CC-BY-4.0, quality-gated.
Electronic component sourcing, BOM management, and PCB design workflows.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables AI-powered autonomous hardware design within EasyEDA Pro, allowing users to create schematics, PCB layouts, and manufacturing files using natural language. It integrates direct EDA tool control with an engineering knowledge base and real-time component searching via JLCPCB and LCSC.-
- AlicenseCqualityCmaintenanceEnables AI coding assistants to control JLCPCB EDA for PCB automation, exposing 39 tools for component manipulation, routing, copper pour, DRC, and more. Includes a built-in PCB agent for orchestrating multi-step tasks.59243MIT
- FlicenseNot gradedqualityFmaintenanceEnables AI assistants to interact with JLCEDA EDA for schematic/PCB design operations like component placement, wiring, and circuit analysis through natural language.-
- AlicenseBqualityBmaintenanceEnables AI assistants to interact with KiCAD for PCB design automation, including schematic editing, component placement, routing, DRC/ERC, and export.10024 npm1MIT