- Add JLCPCB Parts Integration section to What's New
- Update tool count from 59 to 64 tools
- Add JLCPCB Integration category (5 tools) to Available Tools
- Add detailed setup instructions for both local libraries and API modes
- Add usage examples for component selection and cost optimization
- Update architecture section with JLCPCB command modules
- Move JLCPCB from Planned to Working Features
- Add acknowledgment for @l3wi's local library search contribution
- Professional formatting without emojis as requested
This documents the dual-mode JLCPCB integration that provides users with
both local symbol library search (from PR #25) and complete API access to
100k+ parts with real-time pricing and cost optimization.
Co-Authored-By: l3wi <l3wi@users.noreply.github.com>
Properly credits @l3wi for the local symbol library search implementation
from PR #25, which provides the foundation for our dual-mode JLCPCB integration.
Co-Authored-By: l3wi <l3wi@users.noreply.github.com>
Implements full JLCPCB parts catalog integration alongside existing local library search,
giving users two complementary approaches for component selection:
1. Local Symbol Libraries (PR #25)
- Search JLCPCB libraries installed via KiCad PCM
- Pre-configured symbols with footprints
- Works offline, no API needed
2. JLCPCB API Integration (NEW)
- Complete 100k+ parts catalog access
- Real-time pricing and stock information
- Basic/Extended library type identification
- Cost optimization and alternative suggestions
- Package-to-footprint mapping
New Features:
- download_jlcpcb_database: Download complete parts catalog to local SQLite DB
- search_jlcpcb_parts: Parametric search with pricing, stock, library type filters
- get_jlcpcb_part: Detailed part info with price breaks and footprint suggestions
- get_jlcpcb_database_stats: Database statistics and status
- suggest_jlcpcb_alternatives: Find cheaper/available alternatives
Implementation:
- Python API client (commands/jlcpcb.py) - JLCPCB API authentication and data fetching
- Parts database manager (commands/jlcpcb_parts.py) - SQLite storage and search
- TypeScript MCP tools (tools/jlcpcb-api.ts) - User-facing tool definitions
- Comprehensive documentation (docs/JLCPCB_USAGE_GUIDE.md)
Database Features:
- ~100k parts with descriptions, pricing, stock levels
- Full-text search on descriptions and part numbers
- Parametric filtering (category, package, manufacturer, library type)
- Package-to-footprint mapping for KiCad
- Intelligent alternative suggestions
Setup Requirements:
- JLCPCB_API_KEY and JLCPCB_API_SECRET environment variables
- One-time database download (~5-10 minutes, 42MB)
- requests library (already in requirements.txt)
Benefits:
- Cost optimization (identify Basic parts = free assembly)
- Real-time stock checking
- Complete catalog access
- Works offline after initial download
- Complements local library search
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Adds comprehensive local KiCad symbol library search functionality and fixes KICAD9_3RD_PARTY environment variable resolution.
Features:
- Symbol library search by name, LCSC ID, description, manufacturer, MPN
- Support for 3rd party libraries installed via Plugin and Content Manager
- New MCP tools: search_symbols, list_symbol_libraries, get_symbol_info
- Enhanced library path resolution for KiCad 8 and 9
This enables users with locally installed JLCPCB libraries to search and use components directly.
Co-authored-by: l3wi <l3wi@users.noreply.github.com>
Adds macOS-specific detection for KiCad's bundled Python, eliminating manual
PYTHONPATH configuration for macOS users.
Changes:
- Detects KiCad bundled Python at standard macOS install path (Python 3.9-3.12)
- Makes KICAD_PYTHON environment variable cross-platform (not just Windows)
- Adds logging for Python detection to aid debugging
- Updates documentation with simplified macOS setup (no PYTHONPATH needed)
Fixes server startup on macOS where existsSync('python3') was failing validation
because it doesn't check PATH.
Based on PR #18 by @hexatriene - applied manually due to merge conflict with
router implementation. Full credit to hexatriene for the solution design and
implementation.
Co-authored-by: hexatriene <106840313+hexatriene@users.noreply.github.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Replaces unreliable tasklist subprocess calls with proper Windows Toolhelp32 API.
- Uses CreateToolhelp32Snapshot/Process32FirstW/Process32NextW for process enumeration
- Adds pointer-size fallback for wintypes.ULONG_PTR missing in KiCad's embedded Python
- Fixes check_kicad_ui intermittent timeouts and false negatives on Windows
- Adds encoding/timeout fixes for 'where' command calls
Fixes#20
Co-authored-by: jbjardine <167578676+jbjardine@users.noreply.github.com>
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>
Major improvements to schematic editing capabilities:
## Python Implementation (connection_schematic.py)
- Implemented pin-to-pin connection logic using kicad-skip
- Added get_pin_location() to find absolute pin positions
- Implemented add_connection() for wire connections between component pins
- Added add_net_label() for creating net labels
- Added connect_to_net() to connect pins to named nets
- Implemented get_net_connections() to query net connectivity
- Added generate_netlist() for schematic netlist extraction
## MCP Handlers (kicad_interface.py)
- Added 5 new command handlers:
- add_schematic_connection - Pin-to-pin wiring
- add_schematic_net_label - Net label placement
- connect_to_net - Connect pin to named net
- get_net_connections - Query net connectivity
- generate_netlist - Export netlist data
## TypeScript Tools (schematic.ts)
- Added 5 new MCP tools with proper schemas and validation
- Enhanced user feedback with descriptive messages
- Total schematic tools increased from 3 to 8
## Features
- Pin location calculation with symbol rotation support
- Automatic wire stub creation for net labels
- Comprehensive netlist generation with component and net info
- Full logging for debugging connection issues
This resolves the schematic editing limitations and enables users to:
- Wire component pins together directly
- Use net labels for cleaner schematics
- Query schematic connectivity
- Generate netlists for manufacturing
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Added missing schematic tools registration (fixes#12)
- Created library tools TypeScript implementation
- Added 4 library management tools (list_libraries, search_footprints, list_library_footprints, get_footprint_info)
- Now properly exports and registers all 10 tool categories
- Total of 54 TypeScript tools now properly registered
This resolves the issue where schematic and library tools were defined in Python but not visible to MCP clients.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
This commit fixes two critical issues for MCP STDIO transport:
1. Logger fix (src/logger.ts) - CRITICAL MCP protocol compliance
- Change all log levels to use console.error() (stderr) exclusively
- Previous code sent info/debug logs to stdout via console.log()
- MCP protocol uses stdout for JSON-RPC messages
- Logging to stdout corrupts protocol communication
- Impact: Prevents intermittent MCP failures from log pollution
2. Windows compatibility fix (src/index.ts)
- Remove import.meta.url conditional check that fails on Windows
- Path separator differences (forward slash vs backslash) cause
the file:// URL comparison to fail
- Server now runs main() unconditionally as intended
- Impact: Reliable server startup on Windows
Changes:
- src/logger.ts: Use console.error() for all log levels
- src/index.ts: Remove 'if (import.meta.url === ...)' check
- src/index.ts: Add explanatory comment about Windows issue
Tested on Windows 11 with KiCAD 9.0.6.
Integration tests confirm 36KB logs to stderr, 0 bytes to stdout.
Fixes: MCP protocol corruption, Windows startup failures
Resolves issue #6 - PowerShell encoding errors on Windows
Changes:
- Replaced checkmark (✓) with [OK]
- Replaced cross (✗) with [ERROR]
- Replaced warning (⚠) with [WARN]
- Replaced arrow (→) with [INFO]
- Replaced Unicode box-drawing characters with simple equals signs
This ensures the script works reliably across all Windows configurations
regardless of PowerShell encoding settings or console code pages.
Generated with Claude Code - https://claude.com/claude-code
Co-Authored-By: Claude <noreply@anthropic.com>
- Document all 52 tools with JSON Schema validation
- Add Resources capability section (8 resources)
- Include MCP SDK 1.21.0 and protocol compliance details
- Professional tone throughout, no emoji
- Comprehensive installation instructions for all platforms
- Usage examples covering major workflows
- Architecture documentation and troubleshooting guide
Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
This commit fixes Windows Claude Desktop compatibility by implementing
proper MCP JSON-RPC 2.0 protocol handling in the Python interface.
Changes:
- Added JSON-RPC 2.0 message detection and handling
- Implemented MCP protocol methods: initialize, tools/list, tools/call
- Maintained backwards compatibility with legacy custom format
- Removed accidentally included typescript-sdk directory
Fixes#5 - Claude Desktop not working on Windows
Credit to @spplecxer for identifying the issue and providing the fix.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Major improvements:
- Added "What is MCP?" explanation for newcomers
- Created prominent "Prerequisites" section emphasizing KiCAD setup
- Listed all Python requirements inline with descriptions
- Fixed GitHub URL from placeholder to actual repo
- Removed duplicate test/ directory (keeping tests/ for pytest)
- Made KiCAD installation steps more visible and clear
- Added verification command for KiCAD Python module
- Updated all config example paths to match actual repo name
This makes it much clearer for new users how to install and configure
the MCP server, with special emphasis on the critical KiCAD requirement.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
The venv/ folder should not be tracked in version control.
It's now properly excluded via .gitignore.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added comprehensive documentation (BUILD_AND_TEST, CLIENT_CONFIG, KNOWN_ISSUES, ROADMAP, etc.)
- Updated core functionality for board outline, size, and utilities
- Added new tools for project, routing, schematic, and UI management
- Included TypeScript SDK with full MCP implementation
- Updated configuration examples for all platforms
- Added changelog and status tracking
- Improved Python utilities with KiCAD process management
- Enhanced resource helpers and server capabilities
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>