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 |
|---|---|---|---|
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| cancel_pcb_layout Cancel a previously started make_pcb_layout operation by operationId. | destructive | true | true |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| save_checkpoint_for_current_page Save a checkpoint for the current EasyEDA document. | unknown | unknown | unknown |
| list_checkpoints List checkpoints saved by the EasyEDA Copilot extension. | read | false | unknown |
| restore_checkpoint_for_current_page Restore one checkpoint by id in EasyEDA. | 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 |
| component_search Search a component on the main EasyEDA Copilot server by exact part_uuid or MPN only. | read | false | 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 |
| open_document Open a schematic, schematic page, PCB, or panel document from the current EasyEDA project by document UUID. | unknown | unknown | 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 |
| 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 |
| create_doc Create a doc in the current EasyEDA project | write | true | 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 |
| 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 |
| 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 |
| modify_name Modify the name of an EasyEDA Schematic, Schematic page, PCB | 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 |
| 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 |
| select_easyeda_instance Select which connected EasyEDA project this MCP process should use when multiple EasyEDA instances are connected. | unknown | unknown | unknown |
- repohttps://github.com/biosshot/easyeda-copilot
- licenseMIT
- adoption99 stars · 13 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 →