Koppar

by koppar.ai · ai.koppar/koppar

Design a KiCad PCB from a prompt: parts, schematic checks, routing, KiCad DRC and Gerbers.

OnlineRemote
Category
Images, video and audio
Connection
Remote (HTTP)
Tools
60 reported
Status
Online

Connect it to your AI

Claude Code

claude mcp add --transport http koppar https://app.koppar.ai/mcp

Claude, ChatGPT, Cursor and other apps

Add it as a custom connector with this URL (Streamable HTTP):

https://app.koppar.ai/mcp

This server expects extra headers, usually an API key from its maker.

Cursor, VS Code and other apps (mcp.json)

{
  "mcpServers": {
    "koppar": {
      "url": "https://app.koppar.ai/mcp"
    }
  }
}

Tools it offers

60 tools, as the server itself reported during our check on Oct 31, 2026.

  • get_workflow_guideHow to drive Koppar end to end, and the instructions for each stage you do yourself: "research" (part research and the dossier), "synthesis" (writing the SKiDL schematic), "review" (design review), "board" (the board pla
  • create_designStart a new design from the user's brief (what the board must do, its interfaces, power, size and constraints). Returns the design_id every other tool takes and the web_url where the user follows the design. Uses no gene
  • list_designsThe user's designs, newest first, including ones made in the web app (an agent can continue those too) and board workspaces (kind "board workspace"). With trashed, the designs in the trash instead (deleted, restorable fo
  • delete_designMove a design (or a board workspace) to the trash: it leaves list_designs and the web app, and restore_design brings it back for 7 days, after which it is removed for good. permanent removes it, its files and its session
  • restore_designPut a deleted design back from the trash (within 7 days of delete_design).
  • get_designWhere a design stands: the brief, the schematic (accepted or the last blocking error, ERC, part and net counts, submissions), the board run, the readable files, and the next step.
  • search_kicad_symbolSearch KiCad's standard symbol libraries for parts whose name contains a substring. Use this whenever you are not 100% sure the (library, name) pair you're about to pass to Part(...) exists. Always prefer the package-suf
  • get_kicad_symbolReturn the full pin list (number, name, electrical type) and description for a specific KiCad symbol. For some high-risk power parts it also returns curated topology_constraints from datasheet-style application notes and
  • search_kicad_footprintSearch KiCad's standard footprint libraries. Returns 'Library:Footprint' strings suitable for the footprint= argument of Part(...). Query with the package family and pin count ('LGA-14', 'QFN-24', 'SOIC-8'), optionally a
  • create_custom_symbolRegister a connectable schematic symbol for a part that is NOT in KiCad's libraries (search_kicad_symbol returned nothing). Use this for specialty ICs — LED-matrix drivers, niche sensors, etc. — INSTEAD of telling the sy
  • add_custom_footprintGive the design a footprint of your own: a KiCad .kicad_mod (the file's text) for a package KiCad's libraries lack. It joins the design's "custom" footprint library and is used as "custom:<name>": pass that to create_cus
  • save_dossierStore the research dossier (markdown with ## Parts list, ## Power rails, ## Topology constraints, ## Notes, as the research guide describes). The verified pin tables from your lookups on this design are appended, and ver
  • submit_circuitCompile and check a complete SKiDL script: the symbol and footprint pre-flight (unambiguous typos are corrected and listed), SKiDL, the ERC score, KiCad ERC, floating subsystems, parts without a footprint, and supplier s
  • edit_circuitApply SEARCH/REPLACE patches to your latest script and re-run every check, as submit_circuit does. The latest script is your last submission when it was sent back (attempt_N_circuit.py), otherwise the design's circuit.py
  • read_design_fileRead a text file of the design: prompt.txt (brief), dossier.md, circuit.py, circuit.net, result.json, circuit.erc.json (KiCad ERC violations), attempt_N_circuit.py / attempt_N_error.txt, board_plan.json, pcb_result.json,
  • get_review_packetEverything a design review needs in one text: the brief, the dossier, circuit.py and the compiled connectivity (every net with every pin and its function), with the reviewer instructions. Review it yourself and fix block
  • get_board_contextWhat the board plan is decided from: the computed minimum board, BOARD STATS (pad density, fine-pitch parts, fanout), the parts and nets, board instructions the user gave, and the plan schema with its rules. Needs an acc
  • start_boardStart place and route with your board plan (the JSON object from the board guide: board, stated, edge, chain, groups, near, side, fixed, keepouts, netClasses). The plan is clamped and returned as applied. Runs for minute
  • get_board_statusThe board run: stage, size, layers, placement, routing completion, open nets, DRC counts; once finished, DRC violations by type, whether the fab files are released and, when not, the diagnosed causes (first = fix first:
  • get_bomThe live-priced BOM: each line with references, value, footprint, the chosen offer (seller, part number, MPN, price, stock, match quality), alternatives and totals. refresh asks the sellers again (tens of seconds).
  • choose_bom_partPick which offer a BOM line uses: the line's references and a seller part number or MPN from its offer or alternatives in get_bom; null goes back to the automatic pick. Sourcing only: a different component is a circuit c
  • consolidate_bom_basicMove every resistor, capacitor and inductor bought outside JLCPCB's basic library onto an in-stock basic-library part of the same value, package and (capacitors) at least the same voltage rating. Each part outside that l
  • get_fab_statusWhether the board has earned its fab files (zero serious DRC errors, nothing unconnected), and if not, why not.
  • list_order_providersThe PCB and assembly providers, whether each can quote and take this kind of board today, and what a handoff sends them.
  • get_order_priceOne price for a quantity: parts from the sellers, the board and assembly from the chosen provider's quote, setup fees, and what the total does not include.
  • send_order_to_providerUpload the released board (Gerbers, BOM, placement) to a manufacturer and return the page where the user pays. This publishes the design to a third party: call it only when the user has explicitly asked to order from tha
  • upload_boardReplace the design's board with a .kicad_pcb you routed or edited yourself (the file, base64). The board must carry the design's circuit: every schematic part by reference, every pad on the net the netlist gives it; a fo
  • get_downloadsDownload URLs for the design (KiCad project, schematic, netlist, BOM CSV, board file, 3D model, Gerbers, order bundle) and which are available now. They take the same Authorization: Bearer API key; the CLI fetches them w
  • import_kicad_projectBring an existing KiCad project in as a board workspace: the project folder as a ZIP (the .kicad_pcb, .kicad_pro, schematics, footprint and 3D-model folders), base64-encoded, up to about 18 MB zipped. The CLI does this w
  • get_board_infoThe board as it stands: copper layers, outline, design rules and net classes, counts (footprints, nets, tracks, vias, zones, keepouts, KiCad unconnected items), zones and keepouts, and every footprint with reference, val
  • place_footprintsPut footprints exactly where given: KiCad board coordinates of the footprint origin in mm (y grows downward), rotation in degrees as KiCad shows it, side F or B (changing side flips the footprint, as KiCad does), locked.
  • auto_placePack footprints inside the board outline with Koppar's heuristic placer (ratsnest-driven, courtyard-legal). By default every unlocked footprint moves and locked ones stay; refs names exactly which move (all others stay).
  • anneal_placeDense placement by simulated annealing: wirelength inside the outline with courtyard gaps, edge connectors held on their edge, fixed and locked parts held, keepout rectangles kept clear (routing corridors), and a per-pad
  • set_board_outlineReplace everything on Edge.Cuts with a new outline: rect (optionally with corner_radius_mm), a polygon of points, or fit_to_parts (the rectangle around every footprint courtyard plus margin_mm). Give exactly one.
  • set_design_rulesSet the project design rules (.kicad_pro) and copper layer count. Works on a board workspace and on a generated design (create_design → start_board). On a generated design the rules go into circuit.kicad_pro/.kicad_dru i
  • set_keepoutsAdd or remove keepout rule areas. Each keepout is a rect or polygon on the given copper layers (default all) and forbids what it names: no_tracks, no_vias, no_zone_fills (all three default true), no_pads, no_footprints.
  • check_net_rulesCheck the copper against the project's net classes and differential pairs, which KiCad's DRC does not: every class or pair net's narrowest track and the length below its class width, and every pair (X_P/X_N, X+/X-, CAN X
  • check_physicsJudge the copper by physics, which KiCad's DRC does not: impedance from the stackup on controlled nets, IR drop and heating on rails with a stated current, pair and lane skew, a ground via beside every high-speed layer c
  • set_zonesAdd or remove copper zones (pours). Each zone pours its net on the given copper layers over rect or polygon, by default the whole board outline. priority orders overlapping zones (higher fills first); clearance_mm and mi
  • add_copperLay exact copper by hand where the routers leave a gap: tracks as polylines on one copper layer, and through vias. width_mm, diameter_mm and drill_mm default to the board's current track and via sizes. Nets must exist on

Questions

What is the Koppar MCP server?

Design a KiCad PCB from a prompt: parts, schematic checks, routing, KiCad DRC and Gerbers. It is made by koppar.ai and listed in the official MCP Registry as ai.koppar/koppar. MCP (Model Context Protocol) is the open standard that lets AI apps like Claude, ChatGPT and Cursor use outside tools.

How do I add Koppar to Claude?

In the Claude app or claude.ai, open Settings, then Connectors, choose "Add custom connector" and paste https://app.koppar.ai/mcp. In Claude Code, run: claude mcp add --transport http koppar https://app.koppar.ai/mcp

How do I add Koppar to ChatGPT?

ChatGPT can use remote MCP servers as connectors. In ChatGPT settings, under Apps and Connectors, turn on developer mode if asked, create a new connector and paste https://app.koppar.ai/mcp.

How do I add Koppar to Cursor?

Open Cursor settings, go to MCP, choose "Add new MCP server" (or edit ~/.cursor/mcp.json) and add: { "mcpServers": { "koppar": { "url": "https://app.koppar.ai/mcp" } } }

Does Koppar work right now?

Yes. It responded when we last checked on 31 Oct 2026. We check remote MCP servers every day.

What can Koppar do?

It gives your AI 60 tools, including get_workflow_guide, create_design, list_designs, delete_design, restore_design. The full list is on this page.

Is this your server? Get the badge for your README
chen.media/mcp badge

Markdown (GitHub README)

[![Listed on chen.media/mcp](https://chen.media/mcp/badge/ai-koppar-koppar.svg)](https://chen.media/mcp/ai-koppar-koppar)

HTML (switches to dark mode on its own)

<a href="https://chen.media/mcp/ai-koppar-koppar"><picture><source media="(prefers-color-scheme: dark)" srcset="https://chen.media/mcp/badge/ai-koppar-koppar.svg?theme=dark"><img src="https://chen.media/mcp/badge/ai-koppar-koppar.svg" alt="Listed on chen.media/mcp" height="40"></picture></a>

More in Images, video and audio

See all