- Add IPC handlers for zone operations (add_copper_pour, refill_zones) - Add IPC handlers for board operations (add_board_outline, add_mounting_hole, get_layer_list) - Add IPC handlers for component operations (rotate_component, get_component_properties) - Add IPC handlers for net operations (delete_trace, get_nets_list) - Implement hybrid footprint placement (SWIG library loading + IPC placement) - Extend create_schematic to handle filename, title, projectName params - Update documentation for IPC backend status and known issues 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
9.3 KiB
9.3 KiB
KiCAD MCP - Current Status Summary
Date: 2025-12-02 Version: 2.1.0-alpha Phase: IPC Backend Implementation and Testing
Quick Stats
| Metric | Value | Status |
|---|---|---|
| Core Features Working | 18/20 | 90% |
| KiCAD 9.0 Compatible | Yes | Verified |
| UI Auto-launch | Working | Verified |
| Component Placement | Working | Verified |
| Component Libraries | 153 libraries | Verified |
| Routing Operations | Working | Verified |
| IPC Backend | Under Testing | Experimental |
| Tests Passing | 18/20 | 90% |
What's Working (Verified 2025-12-02)
Project Management
create_project- Create new KiCAD projectsopen_project- Load existing PCB filessave_project- Save changes to diskget_project_info- Retrieve project metadata
Board Design
set_board_size- Set dimensions (KiCAD 9.0 fixed)add_board_outline- Rectangle, circle, polygon outlinesadd_mounting_hole- Mounting holes with padsadd_board_text- Text annotations (KiCAD 9.0 fixed)add_layer- Custom layer creationset_active_layer- Layer switchingget_layer_list- List all layers
Component Operations
place_component- Place components with library footprints (KiCAD 9.0 fixed)move_component- Move componentsrotate_component- Rotate components (EDA_ANGLE fixed)delete_component- Remove componentslist_components- Get all components on board
Footprint Library Integration:
- Auto-discovered 153 KiCAD footprint libraries
- Search footprints by pattern (
search_footprints) - List library contents (
list_library_footprints) - Get footprint info (
get_footprint_info) - Support for both
Library:FootprintandFootprintformats
KiCAD 9.0 API Fixes:
SetOrientation()usesEDA_ANGLE(degrees, DEGREES_T)GetOrientation()returnsEDA_ANGLE, call.AsDegrees()GetFootprintName()nowGetFPIDAsString()
Routing Operations
add_net- Create electrical netsroute_trace- Add copper traces (KiCAD 9.0 fixed)add_via- Add vias between layers (KiCAD 9.0 fixed)add_copper_pour- Add copper zones/pours (KiCAD 9.0 fixed)route_differential_pair- Differential pair routing
KiCAD 9.0 API Fixes:
netinfo.FindNet()nownetinfo.NetsByName()[name]zone.SetPriority()nowzone.SetAssignedPriority()ZONE_FILL_MODE_POLYGONnowZONE_FILL_MODE_POLYGONS- Zone outline requires
outline.NewOutline()first
UI Management
check_kicad_ui- Detect running KiCADlaunch_kicad_ui- Auto-launch with project
Export
export_gerber- Manufacturing filesexport_pdf- Documentationexport_svg- Vector graphicsexport_3d- STEP/VRML modelsexport_bom- Bill of materials
Design Rules
set_design_rules- DRC configurationget_design_rules- Rule inspectionrun_drc- Design rule check
IPC Backend (Under Development)
We are currently implementing and testing the KiCAD 9.0 IPC API for real-time UI synchronization. This is experimental and may not work perfectly in all scenarios.
IPC-Capable Commands (21 total)
The following commands have IPC handlers implemented:
| Command | IPC Handler | Notes |
|---|---|---|
route_trace |
_ipc_route_trace |
Implemented |
add_via |
_ipc_add_via |
Implemented |
add_net |
_ipc_add_net |
Implemented |
delete_trace |
_ipc_delete_trace |
Falls back to SWIG |
get_nets_list |
_ipc_get_nets_list |
Implemented |
add_copper_pour |
_ipc_add_copper_pour |
Implemented |
refill_zones |
_ipc_refill_zones |
Implemented |
add_text |
_ipc_add_text |
Implemented |
add_board_text |
_ipc_add_text |
Implemented |
set_board_size |
_ipc_set_board_size |
Implemented |
get_board_info |
_ipc_get_board_info |
Implemented |
add_board_outline |
_ipc_add_board_outline |
Implemented |
add_mounting_hole |
_ipc_add_mounting_hole |
Implemented |
get_layer_list |
_ipc_get_layer_list |
Implemented |
place_component |
_ipc_place_component |
Hybrid (SWIG+IPC) |
move_component |
_ipc_move_component |
Implemented |
rotate_component |
_ipc_rotate_component |
Implemented |
delete_component |
_ipc_delete_component |
Implemented |
get_component_list |
_ipc_get_component_list |
Implemented |
get_component_properties |
_ipc_get_component_properties |
Implemented |
save_project |
_ipc_save_project |
Implemented |
How IPC Works
When KiCAD is running with IPC enabled:
- Commands check if IPC is connected
- If connected, use IPC handler for real-time UI updates
- If not connected, fall back to SWIG API
To enable IPC:
- KiCAD 9.0+ must be running
- Enable IPC API:
Preferences > Plugins > Enable IPC API Server - Have a board open in the PCB editor
Known Limitations
- KiCAD must be running for IPC to work
- Some commands may not work as expected (still testing)
- Footprint loading uses hybrid approach (SWIG for library, IPC for placement)
- Delete trace falls back to SWIG (IPC API limitation)
What Needs Work
Minor Issues (NON-BLOCKING)
1. get_board_info layer constants
- Error:
AttributeError: 'BOARD' object has no attribute 'LT_USER' - Impact: Low (informational command only)
- Workaround: Use
get_project_infoor read components directly
2. Zone filling via SWIG
- Copper pours created but not filled automatically via SWIG
- Cause: SWIG API segfault when calling
ZONE_FILLER - Workaround: Use IPC backend or zones are filled when opened in KiCAD UI
3. UI manual reload (SWIG mode)
- User must manually reload to see MCP changes when using SWIG
- Impact: Workflow friction
- Workaround: Use IPC backend for automatic updates
Architecture Status
SWIG Backend (File-based)
- Status: Stable and functional
- Pros: No KiCAD process required, works offline, reliable
- Cons: Requires manual file reload for UI updates, no zone filling
- Use Case: Offline work, automated pipelines, batch operations
IPC Backend (Real-time)
- Status: Under active development and testing
- Pros: Real-time UI updates, no file I/O for many operations, zone filling works
- Cons: Requires KiCAD running, experimental
- Use Case: Interactive design sessions, paired programming with AI
Hybrid Approach
The server automatically selects the best backend:
- IPC when KiCAD is running with IPC enabled
- SWIG fallback when IPC is unavailable
Feature Completion Matrix
| Feature Category | Status | Details |
|---|---|---|
| Project Management | 100% | Create, open, save, info |
| Board Setup | 100% | Size, outline, mounting holes |
| Component Placement | 100% | Place, move, rotate, delete + 153 libraries |
| Routing | 90% | Traces, vias, copper (zone filling via IPC) |
| Design Rules | 100% | Set, get, run DRC |
| Export | 100% | Gerber, PDF, SVG, 3D, BOM |
| UI Integration | 85% | Launch, check, IPC auto-updates |
| IPC Backend | 60% | Under testing, 21 commands implemented |
| JLCPCB Integration | 0% | Planned |
Developer Setup Status
Linux - Primary Platform
- KiCAD 9.0 detection: Working
- Process management: Working
- venv support: Working
- Library discovery: Working (153 libraries)
- Testing: Working
- IPC backend: Under testing
Windows - Supported
- Automated setup script (
setup-windows.ps1) - Process detection implemented
- Library paths auto-detected
- Comprehensive error diagnostics
- Startup validation with helpful errors
- Troubleshooting guide (WINDOWS_TROUBLESHOOTING.md)
macOS - Untested
- Configuration provided
- Process detection implemented
- Library paths configured
- Needs community testing
Documentation Status
Complete
- README.md
- ROADMAP.md
- IPC_BACKEND_STATUS.md
- IPC_API_MIGRATION_PLAN.md
- REALTIME_WORKFLOW.md
- LIBRARY_INTEGRATION.md
- KNOWN_ISSUES.md
- UI_AUTO_LAUNCH.md
- VISUAL_FEEDBACK.md
- CLIENT_CONFIGURATION.md
- BUILD_AND_TEST_SESSION.md
- STATUS_SUMMARY.md (this document)
- WINDOWS_SETUP.md
- WINDOWS_TROUBLESHOOTING.md
Needed
- EXAMPLE_PROJECTS.md
- CONTRIBUTING.md
- API_REFERENCE.md
What's Next?
Immediate Priorities
- Complete IPC Testing - Verify all 21 IPC handlers work correctly
- Fix Edge Cases - Address any issues found during testing
- Improve Error Handling - Better fallback behavior
Planned Features
- JLCPCB parts integration
- Digikey API integration
- Advanced routing algorithms
- Smart BOM management
- Design pattern library (Arduino shields, RPi HATs)
Getting Help
For Users:
- Check README.md for installation
- Review KNOWN_ISSUES.md for common problems
- Check logs:
~/.kicad-mcp/logs/kicad_interface.log
For Developers:
- Read BUILD_AND_TEST_SESSION.md
- Check ROADMAP.md for priorities
- Review IPC_BACKEND_STATUS.md for IPC details
Issues:
- Open an issue on GitHub with OS, KiCAD version, and error details
Last Updated: 2025-12-02 Maintained by: KiCAD MCP Team