wara
by Hercast
README.md
# β‘ wara: talk to your Altium schematic
**Ask an AI agent to review your design, find what's missing, and fix it, while Altium stays in your hands.**
  
**wara** connects Altium Designer to AI agents such as Claude through the [Model Context Protocol](https://modelcontextprotocol.io). Open a project, then just ask.
> *"Which parts on the power sheet have no MPN?"*
> *"Do any designators clash?"*
> *"Fill in these MPNs, but show me first."*
> **Alpha.** Unofficial and not affiliated with Altium. The server and its safety rules are tested; the Altium-side script is still being validated on real Altium installs, so expect rough edges. No support commitment.
---
## What you can do
### π Review
- Get an **overview** of a project: parts by type, footprints, sheets.
- **Search** parts in plain language: "all 0603 caps", "everything from sheet Power".
- Build a **BOM** summary, copy it as CSV.
- **Audit** parameters: missing MPNs, same part with conflicting MPNs.
- Catch **duplicate or unannotated designators** and numbering gaps.
- See which **nets** a part touches, and read the project's **compile errors**.
### βοΈ Edit, safely
- Set, rename or delete **parameters**, one part or hundreds at once (even from a CSV).
- **Move and rotate** parts on the PCB.
- Optionally **save** the project, only if you allow it.
### π‘οΈ Built to be trusted with a real design
| | |
|---|---|
| **Read-only by default** | Nothing can change until you switch on edit mode yourself. The AI can't flip that switch. |
| **Preview first** | Every edit shows old and new values before anything is written. |
| **Checked afterwards** | After an edit, the value is read back from Altium and reported as verified. |
| **Unsaved and undoable** | Changes stay in memory. Review them in Altium, then save, or press **Ctrl+Z**. |
| **Local only** | Runs on your machine. No cloud service, no telemetry. |
---
## See it in action
An example session (on the built-in demo design):
> **You:** Is Altium connected? Which project is open?
> **Agent:** Connected. Project **Demo.PrjPcb** is open. The server is in **read-only** mode.
>
> **You:** Which components have no MPN?
> **Agent:** Five: **R1, R2, R3, C2, D1**. R2 has the parameter but it's empty. I also noticed **C1 and C3** are both 100nF 0603 but have different MPNs. That may be intentional, or a mistake worth checking.
>
> **You:** Set the MPN on R1 to R3 to `DEMO-0001`.
> **Agent:** I can't, because the server is read-only. Enable edit mode in the server settings and restart it.
>
> *(you switch to edit mode)*
>
> **You:** Set the MPN on R1 to R3 to `DEMO-0001`. Create the parameter where it's missing, and preview first.
> **Agent:** Preview, nothing changed yet:
> | Part | Old | New |
> |---|---|---|
> | R1 | *(none, will be created)* | DEMO-0001 |
> | R2 | *(empty)* | DEMO-0001 |
> | R3 | *(none, will be created)* | DEMO-0001 |
>
> **You:** Apply it.
> **Agent:** Done and **verified**. The three values were read back from Altium. The sheet is modified but **not saved**; press Ctrl+Z in Altium to undo.
---
## Get started
### What you need
- **For real use:** a Windows PC with Altium Designer and [Python 3.12+](https://www.python.org/downloads/), plus Claude Desktop or Claude Code.
- **To just try it:** any Mac, Linux or Windows machine with Python 3.12+ and Claude Desktop. See [Try it without Altium](#try-it-without-altium).
### 1. Install
```bash
git clone https://github.com/Hercast/wara-MCP.git
cd wara-MCP
python -m venv .venv
.venv\Scripts\activate
pip install .
```
On Mac/Linux, activate with `source .venv/bin/activate` instead. Use `pip install .` (not `-e`) and keep the environment **outside protected folders** such as `Documents` on macOS, or Claude Desktop won't be allowed to start it.
### 2. Connect it to Claude
**Claude Desktop:** open **Settings β Developer β Edit Config** and add this next to any servers you already have, using the real path to your install:
```json
{
"mcpServers": {
"wara": {
"command": "C:\\path\\to\\wara-MCP\\.venv\\Scripts\\wara-mcp.exe",
"env": { "ALTIUM_LITE_MODE": "read_only" }
}
}
}
```
Quit and reopen Claude Desktop. The Altium tools appear in the tools menu.
**Claude Code:**
```bash
claude mcp add wara -- C:\path\to\wara-MCP\.venv\Scripts\wara-mcp.exe
```
### 3. Ask away
Open a project in Altium Designer and ask: *"Is Altium connected? Which project is open?"*
### 4. Turn on editing (when you're ready)
The server starts **read-only**. To let the agent make changes, set `ALTIUM_LITE_MODE` to `read_write` in the `env` block above and restart Claude Desktop. Use `read_write_save` if you also want the agent to be able to save, which still needs your confirmation each time.
---
## Try it without Altium
No Altium? The server includes a small **demo design** (10 parts, some with missing MPNs) so you can try the whole flow, including the safe-edit steps. Add `"ALTIUM_LITE_BRIDGE": "fake"` to the `env` block:
```json
"env": { "ALTIUM_LITE_BRIDGE": "fake", "ALTIUM_LITE_MODE": "read_write" }
```
Then try the prompts from the session above. Everything is simulated, so nothing real is touched.
---
## Good prompts to start with
| Goal | Ask |
|---|---|
| Orientation | "Give me an overview of this project." |
| Find gaps | "Check MPN, Manufacturer and Value across the project. What's missing or inconsistent?" |
| Housekeeping | "Check designators for duplicates, unannotated parts or gaps." |
| Search | "Find all capacitors with a 0603 footprint." |
| BOM | "Summarise the BOM by value and footprint, and give me the CSV." |
| Wiring | "What nets are connected to U1?" |
| Full audit | Use the `audit_bom` prompt from your agent's prompt menu. |
| Fix with care | Use the `fill_missing_mpns` prompt, give it your list, and approve the preview. |
---
## Good to know
- **Windows only for real Altium**, one running Altium instance.
- Sheets you want to edit must be **open** in Altium.
- Your design data is sent to your AI agent like any tool output. Avoid confidential designs unless that's acceptable to you.
- The server never starts Altium; open it yourself first.
- Stuck? See [troubleshooting](docs/TROUBLESHOOTING.md).
More detail: [technical reference](docs/TECHNICAL.md) (all tools, settings, safety model, limits), [acceptance checklist](docs/ACCEPTANCE.md).
## License
Apache-2.0, see [LICENSE](LICENSE). Third-party attributions: [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues