Add KiCAD IPC API backend using kicad-python library for real-time communication with KiCAD 9.0+. Changes now appear instantly in KiCAD UI without manual reload. Key changes: - Implement IPCBackend and IPCBoardAPI classes for IPC communication - Auto-detect IPC availability and fall back to SWIG when unavailable - Route existing commands (route_trace, add_via, place_component, etc.) through IPC automatically when available - Add transaction support for proper undo/redo - Add socket path auto-detection for Linux (/tmp/kicad/api.sock) New commands: - get_backend_info: Check which backend is active Supported IPC operations: - Board: set_size, get_board_info, save - Routing: route_trace, add_via, add_net - Components: place, move, delete, list - Text: add_text, add_board_text SWIG backend is now deprecated and will be removed when KiCAD 10.0 drops SWIG support. Requires: kicad-python>=0.5.0, KiCAD 9.0+ with IPC enabled 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
3.2 KiB
3.2 KiB
Changelog - 2025-11-30
IPC Backend Implementation - Real-time UI Synchronization
This release implements the KiCAD IPC API backend, enabling real-time UI synchronization between the MCP server and KiCAD. Changes made through MCP tools now appear instantly in the KiCAD UI without requiring manual reload.
Major Features
Real-time UI Sync via IPC API
- Instant updates: Tracks, vias, components, and text appear immediately in KiCAD
- No reload required: Eliminates the manual File > Reload workflow
- Transaction support: Operations can be grouped for single undo/redo steps
- Auto-detection: Server automatically uses IPC when KiCAD is running with IPC enabled
Automatic Backend Selection
- IPC backend is now the default when available
- Transparent fallback to SWIG when IPC unavailable
- Environment variable
KICAD_BACKENDfor explicit control:auto(default): Try IPC first, fall back to SWIGipc: Force IPC onlyswig: Force SWIG only (deprecated)
Commands with IPC Support
The following commands now automatically use IPC for real-time updates:
| Command | Description |
|---|---|
route_trace |
Add traces with instant UI update |
add_via |
Add vias with instant UI update |
add_text / add_board_text |
Add text with instant UI update |
set_board_size |
Set board size with instant outline update |
get_board_info |
Read live board data |
place_component |
Place components with instant UI update |
move_component |
Move components with instant UI update |
delete_component |
Delete components with instant UI update |
get_component_list |
Read live component list |
save_project |
Save via IPC |
New Files
python/kicad_api/ipc_backend.py- Complete IPC backend implementation (~870 lines)python/test_ipc_backend.py- Test script for IPC functionalitydocs/IPC_BACKEND_STATUS.md- Implementation status documentation
Modified Files
python/kicad_interface.py- Added IPC integration and automatic command routingpython/kicad_api/base.py- Added routing and transaction methods to base classpython/kicad_api/factory.py- Fixed kipy module detectiondocs/ROADMAP.md- Updated Week 3 status to complete
Dependencies
- Added
kicad-python>=0.5.0- Official KiCAD IPC API Python library
Requirements
To use real-time mode:
- KiCAD 9.0+ must be running
- Enable IPC API:
Preferences > Plugins > Enable IPC API Server - Have a board open in PCB editor
Deprecation Notice
The SWIG backend is now deprecated:
- Will continue to work as fallback
- No new features will be added to SWIG path
- Will be removed when KiCAD 10.0 drops SWIG support
Testing
Run the IPC test script:
./venv/bin/python python/test_ipc_backend.py
Or test individual commands:
echo '{"command": "get_backend_info", "params": {}}' | \
PYTHONPATH=python ./venv/bin/python python/kicad_interface.py
Breaking Changes
None. All existing commands continue to work. IPC is used transparently when available.
Version: 2.1.0-alpha Date: 2025-11-30