Comprehensive documentation of Phase 2 achievements including power symbol support, wire graph analysis for net connectivity, critical bug fixes (template mapping, special character handling), and 100% passing integration tests. Removes emoji per style guidelines. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
11 KiB
11 KiB
Changelog
All notable changes to the KiCAD MCP Server project are documented here.
[2.1.0-alpha] - 2026-01-10
Phase 1: Intelligent Schematic Wiring System - Core Infrastructure
Major Features:
- Automatic pin location discovery with rotation support
- Smart wire routing (direct, orthogonal horizontal/vertical)
- Net label management (local, global, hierarchical)
- S-expression-based wire creation
- Professional right-angle routing
New Components:
python/commands/wire_manager.py- S-expression wire creation enginepython/commands/pin_locator.py- Intelligent pin discovery with rotation- Updated
python/commands/connection_schematic.py- High-level connection API docs/SCHEMATIC_WIRING_PLAN.md- Implementation roadmap
MCP Tools Enhanced:
add_schematic_wire- Create wires with stroke customizationadd_schematic_connection- Auto-connect pins with routing options (NEW)add_schematic_net_label- Add labels with type and orientation control (NEW)connect_to_net- Connect pins to named nets (ENHANCED)
Technical Implementation:
- Rotation transformation matrix for pin coordinates
- S-expression injection for guaranteed format compliance
- Pin definition caching for performance
- Orthogonal path generation for professional schematics
Testing:
- End-to-end integration test: 100% passing
- MCP handler integration test: 100% passing
- Pin discovery with rotation: Verified working
- KiCad-skip verification: All wires/labels correctly formed
Phase 2: Power Nets & Wire Connectivity - COMPLETE
Major Features:
- Power symbol support (VCC, GND, +3V3, +5V, etc.) via dynamic loading
- Wire graph analysis for net connectivity tracking
- Geometric wire tracing with tolerance-based point matching
- Accurate netlist generation with component/pin connections
- Critical template mapping bug fixes
Updates:
connect_to_net()- Migrated to WireManager + PinLocatorget_net_connections()- Complete rewrite with geometric wire tracinggenerate_netlist()- Now uses wire graph analysis for connectivityget_or_create_template()- Fixed special character handling, auto-reload after dynamic loadingadd_component()- Fixed template lookup with symbol iteration
Bug Fixes:
- CRITICAL: Template mapping after dynamic symbol loading
- Special character handling in symbol names (+ prefix in +3V3, +5V)
- Schematic reload synchronization after S-expression injection
- Multi-format template reference detection
Wire Graph Analysis Algorithm:
- Find all labels matching target net name
- Trace wires connected to label positions (point coincidence)
- Collect all wire endpoints and polyline segments
- Match component pins at wire connection points using PinLocator
- Return accurate component/pin connection pairs
Technical Implementation:
- Tolerance-based point matching (0.5mm for grid alignment)
- Multi-segment wire (polyline) support
- Rotation-aware pin location matching via PinLocator
- Fallback proximity detection (10mm threshold)
- Template existence checking via symbol iteration (handles special characters)
Testing:
- Power symbols: 4/4 loaded (VCC, GND, +3V3, +5V)
- Components: 4/4 placed
- Connections: 8/8 created successfully
- Net connectivity: 100% accurate (VCC: 2, GND: 4, +3V3: 1, +5V: 1)
- Netlist generation: 4 nets with accurate connections
- Comprehensive integration test: 100% PASSING
Commits:
c67f400- Updated connect_to_net to use WireManagerb77f008- Fixed template mapping bug (critical)a5a542b- Implemented wire graph analysis
Addresses:
- Issue #26 - Schematic workflow wiring functionality (Phase 2)
Phase 2: JLCPCB Integration Complete
Major Features:
- ✅ Complete JLCPCB parts integration via JLCSearch public API
- ✅ Access to ~100k JLCPCB parts catalog
- ✅ Real-time stock and pricing data
- ✅ Parametric component search
- ✅ Cost optimization (Basic vs Extended library)
- ✅ KiCad footprint mapping
- ✅ Alternative part suggestions
New Components:
python/commands/jlcsearch.py- JLCSearch API client (no auth required)python/commands/jlcpcb_parts.py- Enhanced withimport_jlcsearch_parts()docs/JLCPCB_INTEGRATION.md- Comprehensive integration guide
MCP Tools Available:
download_jlcpcb_database- Download full parts catalogsearch_jlcpcb_parts- Parametric search with filtersget_jlcpcb_part- Part details + footprint suggestionsget_jlcpcb_database_stats- Database statisticssuggest_jlcpcb_alternatives- Find similar/cheaper parts
Technical Improvements:
- SQLite database with full-text search (FTS5)
- Package-to-footprint mapping for standard SMD packages
- Price comparison and cost optimization algorithms
- HMAC-SHA256 authentication support (for official JLCPCB API)
Testing:
- All integration tests passing
- Database operations validated
- Live API connectivity confirmed
- End-to-end MCP tool testing complete
Documentation:
- Complete API reference with examples
- Package mapping tables (0402, 0603, 0805, SOT-23, etc.)
- Best practices guide
- Troubleshooting section
[2.1.0-alpha] - 2025-11-30
Phase 1: Schematic Workflow Fix
Critical Bug Fix:
- ✅ Fixed completely broken schematic workflow (Issue #26)
- Created template-based symbol cloning approach
- All schematic tests now passing
Root Cause:
- kicad-skip library limitation: cannot create symbols from scratch, only clone existing ones
Solution:
- Template schematic with cloneable R, C, LED symbols
- Updated
create_projectto create both PCB and schematic - Rewrote
add_schematic_componentto useclone()API - Proper UUID generation and position setting
Files Modified:
python/commands/project.py- Now creates schematic filespython/commands/schematic.py- Uses template approachpython/commands/component_schematic.py- Complete rewrite
Files Created:
python/templates/template_with_symbols.kicad_schpython/templates/empty.kicad_schdocs/SCHEMATIC_WORKFLOW_FIX.md
Testing:
- Created comprehensive test suite
- All 7 tests passing
- KiCad CLI validation successful
[2.0.0-alpha] - 2025-11-05
Router Pattern & Tool Organization
Major Architecture Change:
- Implemented tool router pattern (70% context reduction)
- 12 direct tools, 47 routed tools in 7 categories
- Smart tool discovery system
New Router Tools:
list_tool_categories- Browse available categoriesget_category_tools- View tools in categorysearch_tools- Find tools by keywordexecute_tool- Run any routed tool
Benefits:
- Dramatically reduced AI context usage
- Maintained full functionality (64 tools)
- Improved tool discoverability
- Better organization for users
[2.0.0-alpha] - 2025-11-01
IPC Backend Integration
Experimental Feature:
- KiCad 9.0 IPC API integration for real-time UI sync
- Changes appear immediately in KiCad (no manual reload)
- Hybrid backend: IPC + SWIG fallback
- 20+ commands with IPC support
Implementation:
- Routing operations (interactive push-and-shove)
- Component placement and modification
- Zone operations and fills
- DRC and verification
Status:
- Under active development
- Enable via KiCad: Preferences > Plugins > Enable IPC API Server
- Automatic fallback to SWIG when IPC unavailable
[2.0.0-alpha] - 2025-10-26
Initial JLCPCB Integration (Local Libraries)
Features:
- Local JLCPCB symbol library search
- Integration with KiCad Plugin and Content Manager
- Search by LCSC part number, manufacturer, description
Credit:
- Contributed by @l3wi
Components:
python/commands/symbol_library.py- Basic library search functionality
[1.0.0] - 2025-10-01
Initial Release
Core Features:
- 64 fully-documented MCP tools
- JSON Schema validation for all tools
- 8 dynamic resources for project state
- Cross-platform support (Linux, Windows, macOS)
- Comprehensive error handling
- Detailed logging
Tool Categories:
- Project Management (4 tools)
- Board Operations (9 tools)
- Component Management (8 tools)
- Routing (6 tools)
- Export & Manufacturing (5 tools)
- Design Rule Checking (4 tools)
- Schematic Operations (6 tools)
- Symbol Library (3 tools)
- JLCPCB Integration (5 tools)
Platform Support:
- Linux (KiCad 7.x, 8.x, 9.x)
- Windows (KiCad 9.x)
- macOS (KiCad 9.x)
Documentation:
- Complete README with setup instructions
- Platform-specific guides
- Tool reference documentation
- Contributing guidelines
Version Numbering
- 2.1.0-alpha: Current development version with JLCPCB integration
- 2.0.0-alpha: Router pattern and IPC backend
- 1.0.0: Initial stable release
Breaking Changes
2.1.0-alpha
- None (additive changes only)
2.0.0-alpha
- Tool execution now requires router for 47 tools
- Direct tool access limited to 12 high-frequency tools
- Schema validation stricter (catches errors earlier)
Deprecations
2.1.0-alpha
docs/JLCPCB_USAGE_GUIDE.md- Superseded bydocs/JLCPCB_INTEGRATION.mddocs/JLCPCB_INTEGRATION_PLAN.md- Implementation complete
Migration Guide
Upgrading to 2.1.0-alpha from 2.0.0-alpha
New Dependencies:
- No new system dependencies
- Python packages:
requests(already in requirements.txt)
Database Setup:
- Run
download_jlcpcb_databasetool (one-time, ~5-10 minutes) - Database created at
data/jlcpcb_parts.db - Subsequent searches use local database (instant)
API Changes:
- All existing tools remain compatible
- 5 new JLCPCB tools available
- No breaking changes to existing functionality
Upgrading to 2.0.0-alpha from 1.0.0
Router Pattern:
- Some tools now accessed via
execute_toolinstead of direct calls - Use
list_tool_categoriesto discover available tools - Search with
search_toolsto find specific functionality
IPC Backend (Optional):
- Enable in KiCad: Preferences > Plugins > Enable IPC API Server
- Set
KICAD_BACKEND=ipcenvironment variable - Falls back to SWIG if unavailable
Credits
- JLCSearch API: @tscircuit
- JLCParts Database: @yaqwsx
- Local JLCPCB Search: @l3wi
- KiCad: KiCad Development Team
- MCP Protocol: Anthropic
License
See LICENSE file for details.