easyeda-mcp-fix
Provides tools to interact with EasyEDA Pro, including schematic and PCB design operations, component management, netlist generation, DRC checks, and document I/O via the internal eda.* API.
Click on "Install 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., "@easyeda-mcp-fixget netlist for my current design"
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.
easyeda-mcp-fix
Bug-fix fork of the EasyEDA Pro MCP bridge. Resolves silent BOM wipes, dead copper to SMD pads and five-minute netlist hangs, hardened on a real board taken to fab.
Base: javawizard/easyeda-agent-mcp-server
(itself a fork of QuincySx/easyeda-agent-mcp-server).
Why this fork exists
The upstream easyeda-agent-mcp-server extension bridges Claude Code (and
other MCP clients) to EasyEDA Pro, exposing the internal eda.* API as ~98
MCP tools. Excellent design in the small, but during Splitflap Controller
Board 3 bring-up (June 2026) six upstream bugs surfaced that turned
day-to-day workflows into data-loss risks:
A single
sch_modify_componentcall on any parameter (justx, say) silently wipedsupplierIdand blanked every field ofotherProperty. Twenty-four components lost their BOM lines in one batch before the pattern was noticed. The schematic looked correct in the canvas.The Board 3 PCB layout passed clearance DRC, and the canvas rendered cleanly, but every API-drawn track was electrically dead to its SMD pads. Only a No-Connection check surfaced it.
Every read that needed pin-to-net data hung about five minutes, then rejected with nothing. Neither cache nor higher timeouts helped.
Each turned out to have a specific root cause, not just a slow API, so the fixes below are deterministic rather than workarounds. All six were live-verified against Splitflap Board 3 taken to fab.
Related MCP server: easyeda-mcp-pro
What's fixed
# | Symptom on upstream | Root cause | Fix in this fork |
1 |
| Modify re-serialises the component from the symbol, losing metadata. | Snapshot the component via |
2 |
| The flag is forwarded to | Fan out per-page via |
3 |
| Calls | Route through |
4 | API-drawn tracks and arcs are electrically dead to their SMD pads. Clearance DRC passes; only a No-Connection check surfaces it. | EasyEDA stores the | Central |
5 |
| Handler passes a raw array where | Handler wraps input via |
6 | Schematic-editing library computes pin world coordinates wrongly for mirrored components ( |
| Mirror about local Y before rotate (matching the verified |
All six live-verified on Splitflap Controller Board 3: DRC returns zero,
connectivity queries return real nets in under a second, and the numeric
layer id is round-tripped through pcb_get_primitives_by_id.
Not fixed (yet)
Deliberate limits, kept honest:
Sheet-locked modify.
sch_modify_component'sdocumentparam does not reassign a primitive across schematic pages; empirically confirmed by trying it and catching the underlyingundefined.getState_ComponentType. Cross-page moves still require manual UI Cut, switch page, Paste.
Security audit
AUDIT.md documents the whole codebase across the three layers
(MCP server, bridge daemon, EDA Pro extension) with severity ratings.
Seven criticals were identified; all seven are resolved on this branch.
C4 (WebSocket authentication) works as a challenge-response: the daemon
writes a per-run random token (mode 0600, inside its 0700 state dir) and
challenges every extension connection to read it back, proving the peer
runs as the same user. A wrong answer always closes the socket. By default
a connection that cannot read the token (the browser web app, or a
desktop install without the extension's external interaction permission)
is still accepted on Origin trust, matching pre-C4 behaviour. Set
EDA_WS_AUTH=require in the daemon's environment to refuse
unauthenticated connections entirely (hardened mode; desktop client only,
and the extension's external interaction permission must be enabled).
Install
git clone https://github.com/sheares/easyeda-mcp-fix.git
cd easyeda-mcp-fix
npm install
npm test # 84 tests
npm run build # produces build/dist/easyeda-agent-mcp-server_vN.N.N.eextThen in EasyEDA Pro:
Settings → Extensions → Install the built
.eextfrombuild/dist/.Open the extension's page, tick Allow interactive with external and Show at header menu.
Click Claude → Connect Claude from the header menu.
Point your MCP client (Claude Code or otherwise) at the
easyeda-agent-mcp-server binary in dist/mcp-server/. The bridge
daemon is spawned automatically on first tool call and listens on
127.0.0.1:16168.
Same-version reinstalls are a no-op in EasyEDA Pro. Bump the version in
extension.json before rebuilding if you want your changes to take
effect.
Provenance
Base:
javawizard/easyeda-agent-mcp-serverat commit3b8f2e5(the extended fork with per-requestdocumentparam dispatch already threaded throughws-client.ts).Original:
QuincySx/easyeda-agent-mcp-server.MIT licence, inherited. See
LICENSE.
What's inside
src/
mcp-server/ the MCP server (TypeScript, stdio transport)
bridge-daemon/ the WebSocket bridge between MCP server and extension
extension/ the EasyEDA Pro extension (.eext), incl. bug-fix handlers
lib/ schematic editing library (start at src/lib/README.md)
docs/ .esch / .epcb / .epro file format reference
examples/ working examples using the editing library
tests/ 84 tests (node --test, ts-node)Two distinct pieces
1. The MCP server + extension
A pair of programs connected over WebSocket:
The MCP server runs as a stdio process spawned by an MCP client. It exposes EasyEDA operations as MCP tools.
The
.eextextension runs inside EasyEDA Pro (browser or desktop). It connects to the MCP server's WebSocket and dispatches API calls to EasyEDA Pro's internaleda.*namespace.
The server exposes ~98 tools covering schematic primitives, PCB
primitives, libraries, manufacture exports, DRC and document I/O.
Multiple EasyEDA Pro instances can share one daemon; every tool takes an
optional instance_id and document param for cross-tab routing.
Two tool families are worth calling out for high-throughput workflows:
document_get_source/document_set_sourceread and write the entire document as a string in EasyEDA's internal NDJSON format.document_save_to_file/document_load_from_filedo the same via local files (avoids MCP payload size limits).project_export_file/project_import_fileread and write entire.eproprojects as ZIP archives.sch_export_bomreturns the schematic-side BOM as parsed rows (the source of truth for supplier metadata), handy for verifying BOM integrity after batch edits.sch_swap_supplier_partdoes a filter-and-replace on supplier metadata across matched components in one call, reusing the bug-1 metadata guard so nothing else is wiped; supportsdryRunfor a preview before the real swap.
2. The schematic editing library
src/lib/ is an in-tree TypeScript library for editing EasyEDA Pro
schematics by manipulating the raw NDJSON format directly. It exists
because EasyEDA's per-operation API is too slow for bulk edits; the
library lets you pull the document source, modify it locally, and push it
back in a single round trip.
Its Zod schemas ARE wired into the MCP tools: document_set_source and
document_load_from_file uploads are validated against them (strict by
default), and document_validate exposes the check directly (see
src/bridge-daemon/tools/schema-tools.ts). The writer API itself is not
exposed as MCP tools (intentional); the intended workflow:
1. project_export_file → /tmp/myproject.epro
2. unzip /tmp/myproject.epro -d /tmp/myproject/
3. ts-node a script that uses loadSchematic + SchematicWriter
4. document_load_from_file → push the result back into EasyEDARead src/lib/README.md for the API tour and gotchas.
Run examples/add-fpga-config-resistors.ts to see it in action.
Building
npm install
npm run typecheck # type-check both server and extension
npm run compile # build to dist/
npm run build # build + package extension into .eext file
npm test # run the full test suite
npm start # run the MCP server (usually launched by an MCP client)File format reference
docs/schematic-format.md documents the
.esch schematic format: coordinate system (math coordinates: +X
right, +Y up, CCW rotation), element line formats (COMPONENT,
ATTR, WIRE, PIN, FONTSTYLE, HEAD), the netport recipe, and
the gotchas discovered the hard way (junction wires required at
component-to-component connections, every component needs a non-empty
Unique ID, some components resolve their symbol via project.json
rather than a Symbol ATTR).
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityBmaintenanceMCP server for AI-assisted PCB design with EasyEDA Pro, enabling inspection, review, and automation of schematics, PCBs, and manufacturing export.Last updated2Apache 2.0
- AlicenseAqualityAmaintenanceProduction-grade MCP server for EasyEDA Pro that enables AI-assisted hardware design review, PCB inspection, BOM sourcing, and manufacturing export through 41 profile-gated tools.Last updated701,30925MIT
- AlicenseBqualityAmaintenanceEnables MCP clients to control EasyEDA Pro for schematic and PCB design through natural language, bridging the EasyEDA API without external AI or API keys.Last updated49MIT
- Alicense-qualityBmaintenanceBridges JLCPCB/Lichuang EDA Pro with MCP clients to export and analyze schematic/PCB DRC, netlists, and BOMs, enabling automated diagnostics and data queries.Last updated4MIT
Related MCP Connectors
A paid remote MCP for Skybridge, built to return verdicts, receipts, usage logs, and audit-ready JSO
Electronic component sourcing, BOM management, and PCB design workflows.
Read-only MCP server for wafergraph.com's semiconductor & AI supply-chain data: 30 tools, no auth.
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/sheares/easyeda-mcp-fix'
If you have feedback or need assistance with the MCP directory API, please join our Discord server