> ## Documentation Index
> Fetch the complete documentation index at: https://docs.koppar.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP server

> Add Koppar to Claude Code or any MCP client with one command and design a KiCad PCB from a prompt: part lookup, schematic checks, routing, DRC, Gerbers.

Koppar is an MCP server over stateless Streamable HTTP at `https://app.koppar.ai/mcp`.

[![Koppar MCP connector: tool definition quality and endpoint health on Glama](https://glama.ai/mcp/connectors/ai.koppar.app/koppar/badges/score.svg)](https://glama.ai/mcp/connectors/ai.koppar.app/koppar)

## Connect

<Steps>
  <Step title="Mint a key">
    In the studio, open **Settings → Design from your own AI agent** and create a key. It is shown once.
  </Step>

  <Step title="Add the server">
    <Tabs>
      <Tab title="Claude Code">
        ```sh theme={null}
        claude mcp add --transport http koppar https://app.koppar.ai/mcp \
          --header "Authorization: Bearer sc_…"
        ```
      </Tab>

      <Tab title="Any HTTP MCP client">
        URL `https://app.koppar.ai/mcp`, header `Authorization: Bearer sc_…`. The transport is Streamable HTTP without sessions, so every request carries the header.
      </Tab>

      <Tab title="stdio-only clients">
        Install the [CLI](/agents/cli) and run it as a local server:

        ```json theme={null}
        { "mcpServers": { "koppar": { "command": "koppar", "args": ["mcp"] } } }
        ```

        `koppar mcp-config` prints this block with your server URL.
      </Tab>
    </Tabs>
  </Step>

  <Step title="Ask for a board">
    The server's instructions and the `design_pcb` prompt walk the model through the workflow. In Claude Code, run the `design_pcb` prompt or just describe the board.
  </Step>
</Steps>

## Tools

| Tool | Does |
| - | - |
| `get_workflow_guide` | The instructions for a stage: research, synthesis, review, board. |
| `create_design` | Start a design from a brief. Returns the design id. |
| `list_designs`, `get_design` | Your designs, newest first, including ones made in the web app. |
| `search_kicad_symbol`, `get_kicad_symbol` | Find a symbol in the KiCad libraries and read its pins. Up to 12 symbols per call. |
| `search_kicad_footprint` | Find a footprint by package. |
| `create_custom_symbol` | A symbol for a part the libraries do not have, with a real footprint. |
| `save_dossier` | Store the research dossier. Verified pin tables are appended. Parts that do not exist are reported with candidates. |
| `submit_circuit` | Compile and check a complete SKiDL script: pre-flight, SKiDL, ERC, KiCad ERC, floating subsystems, footprints, sourcing. Returns accepted or the blocking findings. |
| `edit_circuit` | Apply search-and-replace edits to the last script and re-check. |
| `read_design_file` | Read a file from the design folder. |
| `get_review_packet` | Brief, dossier, code and connectivity for review. |
| `get_board_context` | Parts, sizes, stated facts and the plan schema. |
| `start_board` | Place and route with your plan. Runs in the background. |
| `get_board_status` | Progress, then the DRC and connectivity result. |
| `get_bom`, `choose_bom_part` | The priced BOM, and a different listing for one line. |
| `get_fab_status` | Whether the board has earned its fab files, and if not, why. |
| `list_order_providers`, `get_order_price`, `send_order_to_provider` | Assembly providers, a quote, and a handoff. |
| `get_downloads` | URLs for every artifact, with availability. |
| `upload_board` | Your own `.kicad_pcb` for the design (base64): accepted when it carries the schematic's parts and nets (footprint swaps are listed), refused with the differences otherwise. KiCad DRC re-judges it, the Gerbers are released or withheld, the previous board is kept, and the session chat gets a note. The CLI: `koppar upload-board`. |

## Your own board

A KiCad project you already have is imported as a **board workspace** and worked on directly, with no description and no schematic stage. Every operation is a revision you can restore. The same tools open on a board the pipeline produced, so a design that started from a brief can be repaired the same way.

| Tool | What it does |
| - | - |
| `import_kicad_project` | The zipped project folder (`.kicad_pcb`, `.kicad_pro`, schematics, footprint and 3D-model folders), base64, up to about 18 MB. Returns the design id and a first `get_board_info`. `add_project_files` adds files later. |
| `get_board_info` | Every part's position, rotation, side, lock and courtyard; the rules; the counts. |
| `place_footprints`, `auto_place`, `anneal_place` | Exact positions, nothing nudged; the automatic placer (two-sided, edge parts, locked parts respected); a refinement pass from where the parts stand. |
| `set_board_outline`, `set_design_rules`, `set_keepouts`, `set_zones` | Outline as a rectangle, a fit or a polygon; rules by hand or the `jlcpcb` preset for 2 to 6 layers; keepouts; copper pours. |
| `route_board`, `ripup_routing`, `repair_board`, `finish_board` | Route all or selected nets, keeping the copper of nets already connected; rip up by net, layer or region; a repair scoped to the nets still open; a finishing pass. |
| `widen_nets`, `couple_pairs` | Rail widths and via sizes per net; differential-pair coupling to a target. |
| `diagnose_open_nets`, `board_census` | Why a net stays open (a cramped pad, or which nets to rip first); copper statistics: vias per net, track length, layer use. |
| `cleanup_board`, `fill_zones`, `run_drc`, `score_board` | Tidy the copper, refill the pours, KiCad DRC, and a score (bounding-box volume, vias, layers). |
| `render_board`, `export_step` | A PNG of either side, a region, with DRC markers or the ratsnest; a STEP model. |
| `list_board_revisions`, `get_board_job` | The revision history, and the state of a long-running operation. |

`get_workflow_guide(stage="board")` carries the designer's order of operations: place, look at the render, route, DRC, then diagnose what stayed open rather than repeating the repair.

## Limits

* One board run per design at a time, and two board runs per account at once.
* `submit_circuit` takes up to a couple of minutes. `start_board` runs for minutes; poll `get_board_status`.
* Downloads are served from `https://app.koppar.ai/api/result/<design id>/…` with the same bearer key.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.