servers / easyeda-copilot

easyeda-copilot MCP server

communitystdiolocaldestructive capablehealthy

AI-powered assistant for EasyEDA — generate schematics from natural language, browse LCSC components, design PCBs with custom DRC configurations, and get interactive circuit design help.


01Tools · 34

How to read this: tool names here are observed from a live tools/list handshake. The Risk label is a heuristic inferred from the tool name (write/destructive verbs), not from executing the tool — a conservative guess, not a verified capability. We never escalate risk from a description. Found one that's wrong? Tell us — we fix on report.

ToolRiskSide effectsApproval
set_pcb_copper_layer_count
Set the number of copper layers in the currently opened PCB document. This changes the PCB stack; use get_pcb_stack_layers afterwards to verify available routing layers.
writetrueunknown
wait_pcb_layout
Wait for a previously started make_pcb_layout operation. Use operationId returned by make_pcb_layout when it says the layout is still running.
unknownunknownunknown
import_pcb_changes
Import schematic changes into the currently opened PCB document. If schematic_uuid is omitted, EasyEDA uses the schematic linked to the same board. Open the target PCB document first. For PCB docs, read the local docs folder: /home/node/.npm/_npx/febb4af10212601b/node_modules/easyeda-copilot-mcp/docs/SKILL.md
readfalseunknown
get_pcb_stack_layers
Return the current PCB copper layer count and active signal routing layers. Open the target PCB document first. Use before choosing route_layers for run_auto_route_on_current_pcbdoc.
readfalseunknown
get_pcb_component_sizes
Return resolved PCB footprint sizes in millimeters for selected current schematic components. Use before choosing compact board dimensions. For PCB layout docs, read the local docs folder: /home/node/.npm/_npx/febb4af10212601b/node_modules/easyeda-copilot-mcp/docs/SKILL.md
readfalseunknown
assemble_pcb_layout_on_current_pcbdoc
Send a previously generated make_pcb_layout board assembly payload to the currently opened EasyEDA PCB document. Before using this tool, call get_current_project_info, verify the schematic belongs to a BOARD item with a PCB document, and call open_document for that PCB uuid. For PCB assembly docs, read the local docs folder: /home/node/.npm/_npx/febb4af10212601b/node_modules/easyeda-copilot-mcp/docs/SKILL.md
readfalseunknown
make_pcb_layout
Create PCB component placement from the current EasyEDA schematic using JavaScript PCB layout DSL code. Starts a long-running server operation, waits up to 60 seconds, then returns either the finished layoutId/preview or an operationId for wait_pcb_layout. Server-side routing is disabled: route the assembled PCB later in EasyEDA/client tools. This tool does not assemble the board. For PCB layout docs, read the local docs folder: /home/node/.npm/_npx/febb4af10212601b/node_modules/easyeda-copilot-mcp/docs/SKILL.md
readfalseunknown
preview_pcb
Render a PNG preview of the currently opened PCB document. Supports layer selection, net/component highlighting, and zoom to a net, component, or bounding box. Open the target PCB document first.
unknownunknownunknown
cancel_pcb_layout
Cancel a previously started make_pcb_layout operation by operationId.
destructivetruetrue
inspect_net
Analyze a specific net on the currently opened PCB document: length, width, vias, layers, connected/unconnected pads, polygons, and DRC violations. Open the target PCB document first.
readfalseunknown
inspect_component
Return a PCB component by designator with a list of nearest neighboring components within the given radius. Open the target PCB document first.
readfalseunknown
run_auto_route_on_current_pcbdoc
Export the current EasyEDA PCB autoroute JSON, run the bundled custom router on the MCP side, import the routed result back into EasyEDA, then rebuild GND pours and add GND suture vias. Starts a long-running local operation, waits up to 60 seconds, then returns either the finished result or an operationId for wait_auto_route_on_current_pcbdoc. This tool does not clear existing tracks/vias before routing and does not route nets that are already routed in EasyEDA autoroute export; call clear_routing first when old routing should be replaced. Open the target PCB document first.
writetrueunknown
wait_auto_route_on_current_pcbdoc
Wait for a previously started run_auto_route_on_current_pcbdoc operation. Use operationId returned by run_auto_route_on_current_pcbdoc when it says the auto route is still running.
unknownunknownunknown
get_current_pcb
Get the current EasyEDA PCB through the connected MCP interface. Open a PCB document first. Format: {"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"layers":{"type":"array","items":{"type":"object","properties":{"layer":{"type":"string"},"type":{"type":"string"}},"required":["layer","type"],"additionalProperties":false}},"board":{"type":"object","properties":{"polygon":{"minItems":3,"type":"array","items":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"additionalProperties":false}}},"required":["polygon"],"additionalProperties":false},"components":{"type":"array","items":{"type":"object","properties":{"designator":{"type":"string"},"value":{"type":"string"},"footprint":{"type":"string"},"x":{"type":"number"},"y":{"type":"number"},"rotate":{"type":"number"},"layer":{"type":"string"},"pads":{"type":"array","items":{"type":"object","properties":{"pad":{"type":"string"},"net":{"type":"string"}},"required":["pad"],"additionalProperties":false}},"nearest_components":{"type":"array","items":{"type":"object","properties":{"designator":{"type":"string"},"distance":{"type":"number"},"x":{"type":"number"},"y":{"type":"number"},"layer":{"type":"string"}},"required":["designator","distance","x","y","layer"],"additionalProperties":false}}},"required":["designator","x","y","layer","pads"],"additionalProperties":false}},"wires":{"type":"array","items":{"type":"object","properties":{"net":{"type":"string"},"layer":{"type":"array","items":{"type":"string"}},"connected_pads":{"type":"array","items":{"type":"string"}},"length":{"type":"number"},"direct_distance":{"type":"number"},"detour_ratio":{"type":"number"},"vias":{"type":"number"},"width":{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"}},"required":["min","max"],"additionalProperties":false},"segments":{"type":"number"},"bbox":{"type":"object","properties":{"left":{"type":"number"},"right":{"type":"number"},"top":{"type":"number"},"bottom":{"type":"number"}},"required":["left","right","top","bottom"],"additionalProperties":false},"drc_violations":{"type":"array","items":{"type":"object","properties":{"errorType":{"type":"string"},"obj1":{"type":"string"},"obj2":{"type":"string"},"message":{"type":"string"}},"required":["errorType","message"],"additionalProperties":false}}},"required":["net","layer","connected_pads","length","vias","width","segments","bbox"],"additionalProperties":false}},"vias":{"type":"array","items":{"type":"object","properties":{"net":{"type":"string"},"x":{"type":"number"},"y":{"type":"number"},"diameter":{"type":"number"},"drill":{"type":"number"}},"required":["x","y","diameter","drill"],"additionalProperties":false}},"polygons":{"type":"array","items":{"type":"object","properties":{"net":{"type":"string"},"layer":{"type":"string"},"cutouts":{"type":"array","items":{"minItems":3,"type":"array","items":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"additionalProperties":false}}},"area":{"type":"number"},"bbox":{"type":"object","properties":{"left":{"type":"number"},"right":{"type":"number"},"top":{"type":"number"},"bottom":{"type":"number"}},"required":["left","right","top","bottom"],"additionalProperties":false},"connects":{"type":"array","items":{"type":"string"}},"minWidth":{"type":"number"},"narrowNecks":{"type":"array","items":{"type":"object","properties":{"at":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"additionalProperties":false},"width":{"type":"number"}},"required":["at","width"],"additionalProperties":false}}},"required":["net","layer","area","bbox","connects"],"additionalProperties":false}}},"required":["components"],"additionalProperties":false}
readfalseunknown
clear_routing
Delete existing PCB routing primitives from the currently opened EasyEDA PCB document: tracks, arcs, polylines, pours, fills, regions, and vias. Board outline is preserved. Use before run_auto_route_on_current_pcbdoc when old routing should be replaced.
unknownunknownunknown
cancel_auto_route_on_current_pcbdoc
Cancel a previously started run_auto_route_on_current_pcbdoc operation by operationId. Cancellation stops before import if possible; if import already started, the board may still be updated.
destructivetruetrue
save_checkpoint_for_current_page
Save a checkpoint for the current EasyEDA document.
unknownunknownunknown
list_checkpoints
List checkpoints saved by the EasyEDA Copilot extension.
readfalseunknown
restore_checkpoint_for_current_page
Restore one checkpoint by id in EasyEDA.
unknownunknownunknown
search_reused_block
Search pre-assembled EasyEDA Copilot reused blocks that can be recalculated and inserted into a circuit. For circuit workflow docs, read the local docs folder: /home/node/.npm/_npx/febb4af10212601b/node_modules/easyeda-copilot-mcp/docs/SKILL.md
readfalseunknown
component_search
Search a component on the main EasyEDA Copilot server by exact part_uuid or MPN only.
readfalseunknown
extract_circuit_on_current_page
Post-process circuit changes on the main EasyEDA Copilot server and sends the assembled result to EasyEDA. Every added component must include part_uuid. For circuit modification docs, read the local docs folder: /home/node/.npm/_npx/febb4af10212601b/node_modules/easyeda-copilot-mcp/docs/SKILL.md
readfalseunknown
open_document
Open a schematic, schematic page, PCB, or panel document from the current EasyEDA project by document UUID.
unknownunknownunknown
get_current_page_schematic
Get the current EasyEDA schematic through the connected MCP interface. Format: {"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"components":{"type":"array","items":{"type":"object","properties":{"designator":{"type":"string","description":"Component identifier (e.g., \"U1\", \"R5\", \"J1\", \"X1\")."},"value":{"type":"string","description":"Minimum description: for simple components — only the nominal value; for microcircuits — only the name. Only ASCII symbols (e.g., \"LM358\", \"10nF\", \"100k\")."},"pins":{"type":"array","items":{"type":"object","properties":{"pin_number":{"anyOf":[{"type":"number"},{"type":"string"}],"description":"Pin number."},"name":{"type":"string","description":"Pin name (e.g., \"VCC\")."},"signal_name":{"type":"string","description":"The name of the signal the pin is connected to. (Name only). The signal name assigned to the pin must be identical to the signal name of the target output."}},"required":["pin_number","name","signal_name"],"additionalProperties":false},"description":"Pin details."},"part_uuid":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{32}$"},{"type":"null"}],"description":"Unique component identifier."},"pos":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"},"rotate":{"type":"number"},"mirror":{"type":"boolean"}},"required":["x","y"],"additionalProperties":false},"footprint_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"footprint_uuid":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["designator","value","pins","part_uuid"],"additionalProperties":false},"description":"Components"}},"required":["components"],"additionalProperties":false}
readfalseunknown
sync_current_document
Force EasyEDA to synchronize the current schematic or PCB document by saving it, closing the current editor tab, waiting briefly, and reopening the same document.
unknownunknownunknown
create_doc
Create a doc in the current EasyEDA project
writetrueunknown
get_current_project_info
Read the current EasyEDA project tree and document metadata through the connected extension. BOARD items show the linked schematic and PCB document; use this before PCB assembly.
readfalseunknown
apply_pcb_drc_rules
Apply a PCB DRC bundle JSON file exported by export_pcb_drc_rules. Synthetic netRules entries with type "differentialPair" are reconciled through EasyEDA differential-pair APIs before regular netRules are overwritten. Open the target PCB document first. First read doc /home/node/.npm/_npx/febb4af10212601b/node_modules/easyeda-copilot-mcp/docs/SKILL.md
readfalseunknown
list_easyeda_instances
List currently connected EasyEDA Copilot extension instances. Use this when more than one EasyEDA window/project may be open.
readfalseunknown
modify_name
Modify the name of an EasyEDA Schematic, Schematic page, PCB
writetrueunknown
delete_doc
Delete a doc from the current EasyEDA project. This is destructive!
destructivetruetrue
export_pcb_drc_rules
Export the full current PCB DRC bundle to a JSON file. The bundle contains ruleConfiguration and netRules; differential pairs are injected into netRules as synthetic entries with type "differentialPair". Open the target PCB document first.
unknownunknownunknown
check_pcb_drc
Run EasyEDA PCB DRC check on the currently opened PCB document. Returns simplified DRC violations grouped by category. The limit is split evenly across rule groups within each category to avoid huge responses. Open the target PCB document first.
readfalseunknown
select_easyeda_instance
Select which connected EasyEDA project this MCP process should use when multiple EasyEDA instances are connected.
unknownunknownunknown

02Install & source
npx -y easyeda-copilot-mcp
npx

03Access granted
Manage docs & notes · write

The access this server can exercise, inferred from its verified tools — not a declared OAuth scope.


05Provenance & freshness
sourcesGitHub repo search [p4]
last_checked2026-08-05 09:02Z
next_check2026-08-06 13:48Z
cadenceevery 29h
verifiedtools_list:passed handshake:passed metadata:passed
index_statusindex9 unique facts >= 5

06Badge

Add the “as seen on MCPExplorer” badge to your README. easyeda-copilot MCP — as seen on mcpexplorer.com

[![easyeda-copilot MCP — as seen on mcpexplorer.com](https://mcpexplorer.com/badge/easyeda-copilot.svg)](https://mcpexplorer.com/servers/easyeda-copilot)

Next step

This is one server. A loadout combines the right servers, governance, and proven plays for a whole job — assembled deliberately, not tool-dumped.

Explore loadouts →