zap-mcp
Integrates with the Zap! hosted auto-router service to route KiCad PCB boards, perform pre-flight checks, submit and monitor routing jobs, retrieve routed boards and manufacturability reports (DRC, shorts, JLCPCB violations, copper heat).
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@zap-mcpRoute ~/boards/myboard.kicad_pcb with Zap!"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
zap-mcp
KiCad PCB autorouter for AI agents: MCP server, HTTP API and CLI, with a JSON manufacturability report (DRC, shorts, JLCPCB capability, copper heat).
zap-mcp is the stdio MCP server for Zap!, a hosted auto-router by mutual. You give it a
placed .kicad_pcb (with its .kicad_pro); it returns the same board with tracks, vias and copper pours added, plus a
report of what is still wrong and where. Node 18 or newer. The board is routed on the Zap! service, not on your machine.
Early access: every routed board must be reviewed by an engineer, and KiCad's DRC run, before fabrication.
Quick start
Claude Code
claude mcp add zap -e ZAP_API_KEY_FILE=$HOME/zap-key.txt -- npx -y zap-mcpRestart the agent session: the tools appear only after the restart.
Claude Desktop, Cursor and other MCP clients
{
"mcpServers": {
"zap": {
"command": "npx",
"args": ["-y", "zap-mcp"],
"env": { "ZAP_API_KEY_FILE": "/absolute/path/to/zap-key.txt" }
}
}
}Claude Desktop: claude_desktop_config.json. Cursor: ~/.cursor/mcp.json or .cursor/mcp.json in the project.
The API key
Sign in at https://zap.mutual.solutions/auth/login and create an API key on your account page. Save it as ~/zap-key.txt
and run chmod 600 ~/zap-key.txt. The server reads the key from the environment only, in this order:
variable | meaning |
| the key itself |
| path to a file holding the key (default |
| service address, default |
The key is never taken from tool arguments and never written to tool output or logs. The server warns when the key
file is readable by other users. Redirects are never followed, so the key is only sent to ZAP_URL.
No key: the free trial
Without a key, the try_route_board tool routes one small board with no sign-up: at most 300 pads, 2 or 4 copper
layers, 2 trial jobs per network address per UTC day, stable router only. Every tool that needs a key answers, when
none is set, with how to get one and that the trial exists.
claude mcp add zap -- npx -y zap-mcpThen ask your agent to route a board, for example: "Route ~/boards/myboard.kicad_pcb with Zap!".
Related MCP server: worldbrain-mcp
Tools
The names, arguments and answers match the single-file Python server zap_mcp.py, so the guides at https://zap.mutual.solutions/agents.md apply to both.
tool | key | what it does |
| yes | Pre-flight check (seconds, no routing, no job quota): every problem that would stop the job (blockers) and what would weaken it (warnings), with references, positions and the KiCad fix. |
| yes | Check, submit, wait, then save |
| no | The same as |
| yes* | Every missing connection, design-rule error, JLC violation, hot spot and leftover copper, with position (mm), layer, net and what to do in KiCad. |
| yes* | Status and result numbers of a job; |
| yes | The key's last 50 jobs. |
| yes | Cancel a queued or running job, or delete a finished job's files. |
| yes | Send the user's opinion to the Zap! team, only after the user approved the exact text ( |
| yes | PNG of one square area (at most 40 mm) of a routed board with issues marked, returned as an image. |
| yes | Delete a picture the user does not want attached. |
| no | Service and router version, jobs waiting, typical routing time. |
| no | Every error code with its HTTP status, whether retrying helps and the fix. |
* For a trial job, get_job and get_report work without a key in the same server session; after a restart pass the
try_token that try_route_board returned.
check_board, route_board and try_route_board take every upload option of the API with the same name and default:
project_path, rules_path, currents_path or currents, router (not on the trial), keep_existing,
strip_existing, fab_floor, signal_width_mm, via_diameter_mm, via_drill_mm, vias_in_pads, ground_pour,
size_rails_from_current, effort, minutes, consent_training. Boards are sent gzip-compressed.
HTTP API
Base URL https://zap.mutual.solutions, header Authorization: Bearer <key>. The key goes to curl as a header file,
so it never appears in a command line:
URL=https://zap.mutual.solutions
zcurl() { curl -s -H @<(printf 'Authorization: Bearer %s\n' "$(cat "$ZAP_API_KEY_FILE")") "$@"; }
zcurl -F board=@myboard.kicad_pcb -F project=@myboard.kicad_pro $URL/v1/check # check
zcurl -F board=@myboard.kicad_pcb -F project=@myboard.kicad_pro $URL/v1/jobs # submit: {"id", "status": "queued"}
zcurl $URL/v1/jobs/$ID # poll every 5 s until succeeded / failed / cancelled
zcurl -o myboard.routed.kicad_pcb $URL/v1/jobs/$ID/result # download (report: $URL/v1/jobs/$ID/report.json)The trial without a key: curl -s -H 'X-Zap-Try: 1' -F board=@myboard.kicad_pcb -F project=@myboard.kicad_pro $URL/v1/try/jobs answers with an id and a token (shown once); read the job at /v1/try/jobs/$ID with the header
X-Zap-Try-Token: <token>. Fetch report.json before result: the first download of the board deletes the job's files.
Every endpoint, field and error: openapi.json, llms.txt, error catalog, agent guide.
CLI
zap.py, Python 3.8 or newer, standard library only:
python3 zap.py run myboard.kicad_pcb checks, submits, waits and saves the routed board and report, like
route_board. python3 zap.py login signs in with OAuth instead of a key.
The report
All numbers count problems or temperatures: lower is better, 0 is best.
field | meaning |
| connections still missing (0 = fully routed) |
| of those, on supply, ground, clock, reset, boot or debug nets; must be 0 before ordering boards |
| KiCad design-rule errors under the uploaded rules (some come from the placement) |
| copper of two nets touching; Zap! never returns a board with a short it routed, so any here were already in the uploaded board ( |
| features JLCPCB's standard process cannot make, with positions in |
| hottest copper in °C above ambient, and copper sections over the limit ( |
| whether currents were |
A result is ready for human review when the job succeeded, critical_unconnected is 0 and shorts is 0. It is
clean when unconnected, drc_errors, jlc_violations and sections_over_limit are 0 as well. The saved
BOARD.routed.zap-report.json lists every finding with at_mm (x, y in mm as KiCad shows them), layer, net and
what_to_do.
Limits
Free trial (no key): at most 300 pads, 2 or 4 copper layers, 2 jobs per network address per UTC day.
With a key: up to 10,000 pads, 4,000 footprints, 2 to 16 copper layers, 20 MiB per upload (boards are sent compressed), 60 minutes per job, 2 jobs at a time and 30 requests a minute per key, daily jobs as issued with the key (default 50).
A board too large for the self-serve service is refused with
board_too_large; email hello@mutual.solutions to arrange a business (B2B) job.Early access: every routed board must be reviewed by an engineer, and KiCad's DRC run, before fabrication.
Benchmark
https://zap.mutual.solutions/compare
Privacy
What Zap! keeps from board files, why and for how long: https://zap.mutual.solutions/privacy. route_board deletes
the server copy after download by default; trial jobs are deleted after the first download of the routed board.
Contact
Licence
MIT, Copyright (c) 2026 Mutual Solutions, Inc. (see LICENSE). The licence covers this package, not the Zap! service; using the service is governed by https://zap.mutual.solutions/terms.
This server cannot be deployed
Maintenance
Related MCP Connectors
EasyGerber brings AI printed circuit board (PCB) design, layout, and routing to MCP-compatible assistants. Describe a circuit or start from firmware pin assignments, search published electronic components, and build schematics using catalog parts with their footprints and available 3D models. Create and revise boards, generate layouts with automatic component placement and routing, inspect previews, and check saved layouts for blocking design issues. Export manufacturing ZIPs containing Gerber and drill files, a bill of materials, and component placement data, or download an editable EasyGerber (.egb) file. Start without signing up. Your agent creates a private guest session for one board, including catalog access, edits, layout, checks, previews, and exports. Sign in through OAuth to work with saved account boards, access permitted organization boards, or save the guest design to your account. Guest support depends on your MCP client and installed integration.
Verified KiCad footprints, symbols & 3D models for AI agents. No signup, CC-BY-4.0, quality-gated.
AI model routing on your own vendor keys: pick the best model per prompt, or route and run it.
AI electronics blueprint generator — BOM, wiring, firmware, renders for Arduino/ESP32/RPi.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI agents to discover models, pricing, and chat completions through RouterBase, an API gateway for 200+ AI models.55 npm1MIT
- AlicenseNot gradedqualityFmaintenanceEnables AI agents to perform auditable A* reasoning, import world graphs, incorporate physical carrier constraints, and maintain a learning knowledge base through a zero-dependency local MCP stdio service.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to discover and call thousands of public APIs through one MCP server, with live-verified blueprints for safe, key-free requests.3MIT

Zambo MCPofficial
AlicenseNot gradedqualityBmaintenanceHosted remote MCP server that gives AI assistants live tools to run jobs on demand and returns a receipt URL for each observed call. Connects via a single URL with no account required on the free tier, supporting optional paid access.MIT