{"name":"io.github.biosshot/easyeda-copilot","slug":"biosshot-easyeda-copilot","title":"EasyEDA Copilot","description":"Connect MCP clients to EasyEDA Desktop for schematic and PCB design, routing, inspection, and DRC.","url":"https://mcp.market/server/biosshot-easyeda-copilot","rating":null,"grade":"A","score":85,"certified":false,"status":"active","category":"media","tags":["media"],"presence":{"score":48,"stars":147,"forks":21,"downloads_week":242,"last_push_at":"2026-09-19T20:25:24.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/biosshot/easyeda-copilot","website":null,"version":"1.2.0","remotes":[],"packages":[{"registryType":"npm","identifier":"easyeda-copilot-mcp","version":"1.2.0","transport":{"type":"stdio"}}],"tools":[{"name":"annotate_designators","description":"Annotate component designators across every page of the current EasyEDA schematic. Prefixes are preserved exactly; only trailing numbers are assigned. Multi-part component sections are renamed together.","write_action":false,"price_micros":0,"input_schema":null},{"name":"apply_operation","description":"Retry applying a prepared in-memory operation result without running the operation again.","write_action":false,"price_micros":0,"input_schema":null},{"name":"assemble_pcb_layout_on_current_pcbdoc","description":"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: …","write_action":true,"price_micros":0,"input_schema":null},{"name":"beautify_schematic_on_current_page","description":"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 replacement, and failures restore it automatically. For circuit workflow docs, read: …","write_action":false,"price_micros":0,"input_schema":null},{"name":"cancel_operation","description":"Cancel any running PCB layout or PCB router DSL operation.","write_action":true,"price_micros":0,"input_schema":null},{"name":"check_pcb_drc","description":"Run native EasyEDA PCB DRC on the open PCB. Returns compact grouped violations with full counts, truncated: true only when details are omitted, object labels, messages, primitive_ids, rule_name and layer when supplied by EasyEDA. Resolve primitive_ids through the PCB API before editing. Does not rebuild pours. The detail budget is shared across groups per category, with at least one item per nonem","write_action":true,"price_micros":0,"input_schema":null},{"name":"component_search","description":"Search components. Prefer an exact part_uuid or manufacturer MPN; use a short part description only to discover candidates when the exact MPN is unknown.","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_doc","description":"Create a project, or create a document in the current EasyEDA project. Project creation uses an experimental EasyEDA beta API and does not open the new project.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_doc","description":"Delete a doc from the current EasyEDA project. This is destructive!","write_action":true,"price_micros":0,"input_schema":null},{"name":"execute_js","description":"Execute JavaScript in the selected EasyEDA window using code OR an absolute file_path. Code limit: 64 MiB. Optional input_files supplies named UTF-8 strings as inputs[name], up to 512 MiB combined. Automatically checkpoints the current document before execution. Waits up to 60 seconds; timeout does NOT cancel code. Returns {checkpoint,result,artifacts}; binary and oversized results are saved as lo","write_action":true,"price_micros":0,"input_schema":null},{"name":"extract_circuit_on_current_page","description":"Apply circuit changes to the current EasyEDA page. Every added component must include part_uuid. The result reports remaining current-sheet space and warns below 10%. For circuit modification docs, read: …","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_all_projects","description":"Read all directly accessible EasyEDA teams, folders, and projects as a nested project tree.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_current_page_schematic_groups","description":"Read the current schematic page and return heuristic component groups plus direct non-ground wire islands. Set get_full_schematic_groups to concatenate page-local results from every schematic page. maybe_blocks and wires[].pins contain space-separated references; groups may omit singleton or ambiguous components. errors contains non-fatal diagnostics when the result is partial. Use get_schematic f","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_current_pcb","description":"Read a PCB overview from native primitives through the connected MCP interface; not an atomic revision snapshot. Open a PCB document first. Coordinates are mm in the native PCB frame, not the normalized routing frame. For edits, resolve exact primitive IDs and reread their native poses. wires contains copper statistics grouped by net; pads lists net membership; polygons are source outlines, not re","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_current_project_info","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_pcb_component_sizes","description":"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: …","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_pcb_drc_rules","description":"Return a compact routing-relevant view of the current EasyEDA PCB DRC rules: global limits, net classes, differential pairs, equal-length groups, and explicit net overrides. Open the target PCB document first.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_pcb_stack_layers","description":"Return the current PCB copper layer count and active signal routing layers. Open the target PCB document first and inspect this before writing router DSL layer constraints.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_schematic","description":"Get the current EasyEDA schematic page, or all pages with get_full_schematic. Responses over 8 KiB are saved to a file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"import_pcb_changes","description":"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: …","write_action":false,"price_micros":0,"input_schema":null},{"name":"inspect_component","description":"Return a PCB component by designator with a list of nearest neighboring components within the given radius. Open the target PCB document first.","write_action":false,"price_micros":0,"input_schema":null},{"name":"inspect_net","description":"Inspect a net on the open PCB. Returns one net summary: net, found, pads (net membership), layer, length (sum of line and arc lengths), vias (count), width (min/max, or null without tracks), segments (line and arc count), optional bbox of tracks/vias, polygons (source outlines), and drc (violation_count, truncated, violations). MULTI denotes through vias. Read connection failures in native drc.vio","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_checkpoints","description":"List saved checkpoints with names, newest first. Defaults to 16; use limit to include older checkpoints.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_easyeda_instances","description":"List connected EasyEDA instances. Use when more than one window or project may be open.","write_action":false,"price_micros":0,"input_schema":null},{"name":"make_pcb_layout","description":"Create PCB component placement from a JavaScript DSL file. Open the target PCB first so its outline and component positions are supplied as existingPlacement. Long work returns an operation_id for wait_operation. This tool does not assemble or route the board. For PCB layout docs, read: …","write_action":true,"price_micros":0,"input_schema":null},{"name":"modify_name","description":"Modify the name of an EasyEDA Schematic, Schematic page, PCB","write_action":false,"price_micros":0,"input_schema":null},{"name":"open_document","description":"Open either a project or a document by UUID. Before switching projects, every open EasyEDA schematic, PCB, and panel tab is saved; the switch is aborted if any save fails.","write_action":false,"price_micros":0,"input_schema":null},{"name":"preview_pcb","description":"Render a PNG preview of the currently opened PCB document from PCB primitives using the Copilot renderer. Requires EasyEDA 3+. Supports layer filtering and custom highlight colors. Returns image_path and notes. This preview does not verify actual filled copper. Open the target PCB document first.","write_action":false,"price_micros":0,"input_schema":null},{"name":"restore_checkpoint_for_current_page","description":"Restore one checkpoint by id in EasyEDA.","write_action":false,"price_micros":0,"input_schema":null},{"name":"run_pcb_router_dsl","description":"Apply DRC, copper-only, or routing intent from an eda-copilot-router DSL file to the currently opened EasyEDA PCB. Long work returns an operation_id for wait_operation. PCB instructions: …. Authoritative router DSL declarations: …","write_action":true,"price_micros":0,"input_schema":null},{"name":"save_checkpoint_for_current_page","description":"Save a checkpoint for the current EasyEDA document. Give it a short descriptive name for recovery; only describe checks as passed after verification. Restore by the returned ID, even when names match.","write_action":false,"price_micros":0,"input_schema":null},{"name":"save_doc","description":"Save the currently active EasyEDA schematic, PCB, or panel document.","write_action":false,"price_micros":0,"input_schema":null},{"name":"select_easyeda_instance","description":"Select which connected EasyEDA project this MCP process should use when multiple EasyEDA instances are connected.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sync_current_document","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wait_operation","description":"Wait for any running PCB layout or PCB router DSL operation. Running router responses include up to 10 recent log lines and their update time when available.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":85,"grade":"A","scanned_at":"2026-09-19T20:40:43.138Z","report":{"scannerVersion":"0.1.7","scannedAt":"2026-09-19T20:40:43.105Z","components":{"code":{"score":20,"max":25,"notes":["30 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"dist/index.js: …ode, sch); const makeValidate = new Function(`${names_1.default.self}`, `${names_1.de…"}],"inputs":{"packages":[{"registryType":"npm","identifier":"easyeda-copilot-mcp","version":"1.2.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":7,"publishedAt":"2026-09-19T20:31:13.904Z","repositoryUrl":"git+https://github.com/biosshot/easyeda-copilot.git","weeklyDownloads":242}],"repo":{"found":true,"owner":"biosshot","repo":"easyeda-copilot","archived":false,"pushedAt":"2026-09-19T20:25:24Z","stars":147,"forks":21,"openIssues":3,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/109673344?v=4","ownerCreatedAt":"2022-07-20T13:10:36Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/109673344?v=4&s=128","source":"github"},"presence":{"stars":147,"forks":21,"downloadsWeek":242,"license":"MIT","lastPushAt":"2026-09-19T20:25:24.000Z","score":48}}}},"grade_history":[],"reviews":[]}