easyeda-copilot MCP server
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.
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.
| Tool | Risk | Side effects | Approval |
|---|---|---|---|
| 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 | read | false | unknown |
| 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 | read | false | unknown |
| beautify_schematic_on_current_page Reassemble every component on the current EasyEDA schematic page into named functional blocks. The blocks must cover the whole page. A checkpoint is saved before the server request, and assembly failures restore it automatically. For circuit workflow docs, read the local docs folder: /home/node/.npm/_npx/febb4af10212601b/node_modules/easyeda-copilot-mcp/docs/SKILL.md | read | false | unknown |
| 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. | destructive | true | true |
| cancel_pcb_layout Cancel a previously started make_pcb_layout operation by operationId. | destructive | true | true |
| 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. | read | false | unknown |
| 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. | unknown | unknown | unknown |
| component_search Search a component on the main EasyEDA Copilot server by exact part_uuid or MPN only. | read | false | unknown |
| create_doc Create a doc in the current EasyEDA project | write | true | unknown |
| delete_doc Delete a doc from the current EasyEDA project. This is destructive! | destructive | true | true |
| 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. | unknown | unknown | unknown |
| 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 | read | false | unknown |
| 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} | read | false | unknown |
| 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} | read | false | unknown |
| 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. | read | false | unknown |
| 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 | read | false | unknown |
| 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. | read | false | unknown |
| 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 | read | false | unknown |
| 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. | read | false | unknown |
| 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. | read | false | unknown |
| list_checkpoints List checkpoints saved by the EasyEDA Copilot extension. | read | false | unknown |
| list_easyeda_instances List currently connected EasyEDA Copilot extension instances. Use this when more than one EasyEDA window/project may be open. | read | false | unknown |
| 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 | read | false | unknown |
| modify_name Modify the name of an EasyEDA Schematic, Schematic page, PCB | write | true | unknown |
| open_document Open a schematic, schematic page, PCB, or panel document from the current EasyEDA project by document UUID. | unknown | unknown | unknown |
| 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. | unknown | unknown | unknown |
| restore_checkpoint_for_current_page Restore one checkpoint by id in EasyEDA. | unknown | unknown | unknown |
| 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. | write | true | unknown |
| save_checkpoint_for_current_page Save a checkpoint for the current EasyEDA document. | unknown | unknown | unknown |
| 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 | read | false | unknown |
| select_easyeda_instance Select which connected EasyEDA project this MCP process should use when multiple EasyEDA instances are connected. | unknown | unknown | unknown |
| 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. | write | true | unknown |
| 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. | unknown | unknown | unknown |
| 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. | unknown | unknown | unknown |
| 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. | unknown | unknown | unknown |
- repohttps://github.com/biosshot/easyeda-copilot
- licenseMIT
- adoption147 stars · 21 forks
The access this server can exercise, inferred from its verified tools — not a declared OAuth scope.
Add the “as seen on MCPExplorer” badge to your README.
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 →