docs: comprehensive documentation overhaul for v2.2.3
Major documentation update bringing all docs current with the 122-tool, 16-category state of the project (previously frozen at v2.1.0-alpha/59 tools). New documentation (9 files): - FREEROUTING_GUIDE.md - autorouter setup, Docker/Podman, all 4 tools - SCHEMATIC_TOOLS_REFERENCE.md - all 27 schematic tools with parameters - ROUTING_TOOLS_REFERENCE.md - all 13 routing tools with examples - FOOTPRINT_SYMBOL_CREATOR_GUIDE.md - 8 creator tools with examples - SVG_IMPORT_GUIDE.md - SVG logo import tool - DATASHEET_TOOLS_GUIDE.md - datasheet enrichment tools - PCB_DESIGN_WORKFLOW.md - end-to-end design guide - ARCHITECTURE.md - system architecture for contributors - INDEX.md - documentation table of contents Updated documentation (12 files): - README.md - tool count 64->122, feature list, contributor credits - TOOL_INVENTORY.md - complete rebuild with all 122 tools - STATUS_SUMMARY.md - updated to v2.2.3 feature matrix - ROADMAP.md - marked completed milestones, added v2.3+ vision - KNOWN_ISSUES.md - removed resolved issues, added v2.2.x fixes - CLIENT_CONFIGURATION.md - added KICAD_MCP_DEV, FREEROUTING_JAR env vars - LIBRARY_INTEGRATION.md - added symbol and project-local library support - ROUTER_ARCHITECTURE.md, ROUTER_QUICK_START.md - updated tool counts - IPC_BACKEND_STATUS.md - updated dates - JLCPCB_USAGE_GUIDE.md - added cross-reference note - CONTRIBUTING.md - added ARCHITECTURE.md reference, updated tool count Archived 10 completed planning docs to docs/archive/. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,115 +1,343 @@
|
||||
# KiCAD MCP Server - Tool Inventory
|
||||
|
||||
**Total Tools: 59**
|
||||
**Token Impact: ~40K+ tokens before any user interaction**
|
||||
|
||||
## Current Tool Categories
|
||||
|
||||
### Project Management (4 tools)
|
||||
- `create_project` - Create a new KiCAD project
|
||||
- `open_project` - Open an existing KiCAD project
|
||||
- `save_project` - Save the current KiCAD project
|
||||
- `get_project_info` - Get information about the current project
|
||||
|
||||
### Board Management (12 tools)
|
||||
- `set_board_size` - Set the board dimensions
|
||||
- `add_layer` - Add a new layer to the board
|
||||
- `set_active_layer` - Set the active working layer
|
||||
- `get_board_info` - Get board information
|
||||
- `get_layer_list` - Get list of all layers
|
||||
- `add_board_outline` - Add board outline shape (rectangle/circle/polygon)
|
||||
- `add_mounting_hole` - Add mounting hole to the board
|
||||
- `add_board_text` - Add text to the board
|
||||
- `add_zone` - Add copper zone/pour
|
||||
- `get_board_extents` - Get board bounding box
|
||||
- `get_board_2d_view` - Get 2D visualization of board
|
||||
|
||||
### Component Management (10 tools)
|
||||
- `place_component` - Place a component on the board
|
||||
- `move_component` - Move a component to new position
|
||||
- `rotate_component` - Rotate a component
|
||||
- `delete_component` - Delete a component
|
||||
- `edit_component` - Edit component properties
|
||||
- `find_component` - Find component by reference or value
|
||||
- `get_component_properties` - Get component properties
|
||||
- `add_component_annotation` - Add annotation to component
|
||||
- `group_components` - Group multiple components
|
||||
- `replace_component` - Replace component with another
|
||||
|
||||
### Routing (4 tools)
|
||||
- `add_net` - Create a new net
|
||||
- `route_trace` - Route a trace between two points
|
||||
- `add_via` - Add a via
|
||||
- `add_copper_pour` - Add copper pour (ground/power plane)
|
||||
|
||||
### Design Rules & DRC (9 tools)
|
||||
- `set_design_rules` - Configure design rules
|
||||
- `get_design_rules` - Get current design rules
|
||||
- `run_drc` - Run design rule check
|
||||
- `add_net_class` - Add a net class with specific rules
|
||||
- `assign_net_to_class` - Assign net to a net class
|
||||
- `set_layer_constraints` - Set layer-specific constraints
|
||||
- `check_clearance` - Check clearance between items
|
||||
- `get_drc_violations` - Get DRC violation list
|
||||
|
||||
### Export (8 tools)
|
||||
- `export_gerber` - Export Gerber files for fabrication
|
||||
- `export_pdf` - Export PDF documentation
|
||||
- `export_svg` - Export SVG graphics
|
||||
- `export_3d` - Export 3D model (STEP/STL/VRML/OBJ)
|
||||
- `export_bom` - Export bill of materials
|
||||
- `export_netlist` - Export netlist
|
||||
- `export_position_file` - Export component position file
|
||||
- `export_vrml` - Export VRML 3D model
|
||||
|
||||
### Library (4 tools)
|
||||
- `list_libraries` - List available footprint libraries
|
||||
- `search_footprints` - Search for footprints across libraries
|
||||
- `list_library_footprints` - List footprints in specific library
|
||||
- `get_footprint_info` - Get detailed footprint information
|
||||
|
||||
### Schematic (9 tools)
|
||||
- `create_schematic` - Create a new schematic
|
||||
- `add_schematic_component` - Add component to schematic
|
||||
- `add_wire` - Add wire connection in schematic
|
||||
- `add_schematic_connection` - Connect component pins
|
||||
- `add_schematic_net_label` - Add net label
|
||||
- `connect_to_net` - Connect pin to named net
|
||||
- `get_net_connections` - Get all connections for a net
|
||||
- `generate_netlist` - Generate netlist from schematic
|
||||
|
||||
### UI Management (2 tools)
|
||||
- `check_kicad_ui` - Check if KiCAD UI is running
|
||||
- `launch_kicad_ui` - Launch KiCAD UI
|
||||
|
||||
## Router Implementation Plan
|
||||
|
||||
### Direct Tools (Always Visible) - 12 tools
|
||||
High-frequency operations used in 80%+ of sessions:
|
||||
- `create_project`
|
||||
- `open_project`
|
||||
- `save_project`
|
||||
- `get_project_info`
|
||||
- `place_component`
|
||||
- `move_component`
|
||||
- `add_net`
|
||||
- `route_trace`
|
||||
- `get_board_info`
|
||||
- `set_board_size`
|
||||
- `add_board_outline`
|
||||
- `check_kicad_ui`
|
||||
|
||||
### Router Tools - 4 tools
|
||||
Discovery and execution:
|
||||
- `list_tool_categories`
|
||||
- `get_category_tools`
|
||||
- `execute_tool`
|
||||
- `search_tools`
|
||||
|
||||
### Routed Tools (Hidden) - 47 tools
|
||||
Organized into categories for discovery.
|
||||
|
||||
## Expected Impact
|
||||
**Before Router**: 59 tools = ~40K+ tokens
|
||||
**After Router**: 16 tools (12 direct + 4 router) = ~12K tokens
|
||||
**Savings**: ~28K tokens (70% reduction)
|
||||
# KiCAD MCP Server - Complete Tool Inventory
|
||||
|
||||
**Version:** 2.2.3
|
||||
**Total Tools:** 122 (18 direct + 65 routed + 4 router + 35 additional)
|
||||
**Last Updated:** 2026-03-21
|
||||
|
||||
## How Tools Are Organized
|
||||
|
||||
The server uses a **router pattern** to reduce AI context usage. Tools fall into three groups:
|
||||
|
||||
- **Direct tools** - Always visible to the AI. High-frequency operations used in most sessions.
|
||||
- **Routed tools** - Organized into categories. Discovered via the router tools (`list_tool_categories`, `get_category_tools`, `search_tools`) and invoked via `execute_tool`.
|
||||
- **Additional tools** - Registered directly (always visible) but not part of the router categories.
|
||||
|
||||
---
|
||||
|
||||
## Project Management (5 tools)
|
||||
|
||||
*Source: `src/tools/project.ts`*
|
||||
|
||||
| Tool | Description | Access |
|
||||
|------|-------------|--------|
|
||||
| `create_project` | Create a new KiCAD project (.kicad_pro, .kicad_pcb, .kicad_sch) | Direct |
|
||||
| `open_project` | Open an existing KiCAD project | Direct |
|
||||
| `save_project` | Save the current project | Direct |
|
||||
| `get_project_info` | Get project metadata and information | Direct |
|
||||
| `snapshot_project` | Save a named checkpoint snapshot (renders PDF, saves step label) | Direct |
|
||||
|
||||
---
|
||||
|
||||
## Board Management (12 tools)
|
||||
|
||||
*Source: `src/tools/board.ts`*
|
||||
|
||||
| Tool | Description | Access |
|
||||
|------|-------------|--------|
|
||||
| `set_board_size` | Set PCB dimensions (width, height, unit) | Direct |
|
||||
| `add_board_outline` | Add board outline (rectangle, circle, polygon, rounded_rectangle) | Direct |
|
||||
| `get_board_info` | Get board metadata and properties | Direct |
|
||||
| `add_layer` | Add copper/technical/signal layer | Routed (board) |
|
||||
| `set_active_layer` | Change the active working layer | Routed (board) |
|
||||
| `get_layer_list` | List all layers on the board | Routed (board) |
|
||||
| `add_mounting_hole` | Add mounting hole with optional pad | Routed (board) |
|
||||
| `add_board_text` | Add text annotation to board | Routed (board) |
|
||||
| `add_zone` | Add copper zone/pour with clearance settings | Routed (board) |
|
||||
| `get_board_extents` | Get bounding box of board | Routed (board) |
|
||||
| `get_board_2d_view` | Render 2D board view (PNG/JPG/SVG) | Routed (board) |
|
||||
| `import_svg_logo` | Import SVG file as polygons on silkscreen layer | Additional |
|
||||
|
||||
---
|
||||
|
||||
## Component Management (16 tools)
|
||||
|
||||
*Source: `src/tools/component.ts`*
|
||||
|
||||
| Tool | Description | Access |
|
||||
|------|-------------|--------|
|
||||
| `place_component` | Place footprint on PCB (position, rotation, reference, value) | Direct |
|
||||
| `move_component` | Move component to new position | Direct |
|
||||
| `rotate_component` | Rotate component (absolute angle) | Routed (component) |
|
||||
| `delete_component` | Remove component from board | Routed (component) |
|
||||
| `edit_component` | Edit component properties (reference, value, footprint) | Routed (component) |
|
||||
| `find_component` | Search components by reference or value | Routed (component) |
|
||||
| `get_component_properties` | Get all properties of a component | Routed (component) |
|
||||
| `add_component_annotation` | Add annotation/comment to component | Routed (component) |
|
||||
| `group_components` | Group multiple components together | Routed (component) |
|
||||
| `replace_component` | Replace component with different footprint | Routed (component) |
|
||||
| `get_component_pads` | Get all pad information for a component | Additional |
|
||||
| `get_component_list` | List all components with optional filters | Additional |
|
||||
| `get_pad_position` | Get precise position of a specific pad | Additional |
|
||||
| `place_component_array` | Place array of components (rows x columns) | Additional |
|
||||
| `align_components` | Align components (horizontal, vertical, grid) | Additional |
|
||||
| `duplicate_component` | Duplicate component with offset | Additional |
|
||||
|
||||
---
|
||||
|
||||
## Routing (13 tools)
|
||||
|
||||
*Source: `src/tools/routing.ts`*
|
||||
|
||||
| Tool | Description | Access |
|
||||
|------|-------------|--------|
|
||||
| `add_net` | Create a new net on the PCB | Direct |
|
||||
| `route_trace` | Route trace segment between XY points (single layer) | Direct |
|
||||
| `add_via` | Add via (through/blind/buried) | Routed (routing) |
|
||||
| `add_copper_pour` | Add copper pour / ground plane | Routed (routing) |
|
||||
| `delete_trace` | Delete traces by UUID, position, or bulk by net | Additional |
|
||||
| `query_traces` | Query/filter traces by net, layer, or bounding box | Additional |
|
||||
| `get_nets_list` | List all nets with statistics | Additional |
|
||||
| `modify_trace` | Modify existing trace (width, layer, net) | Additional |
|
||||
| `create_netclass` | Create net class with design rules | Additional |
|
||||
| `route_differential_pair` | Route differential pair traces | Additional |
|
||||
| `refill_zones` | Refill all copper zones | Additional |
|
||||
| `route_pad_to_pad` | Route trace between two pads with auto-via insertion | Additional |
|
||||
| `copy_routing_pattern` | Copy routing from source to target component groups | Additional |
|
||||
|
||||
---
|
||||
|
||||
## Design Rules and DRC (8 tools)
|
||||
|
||||
*Source: `src/tools/design-rules.ts`*
|
||||
|
||||
| Tool | Description | Access |
|
||||
|------|-------------|--------|
|
||||
| `set_design_rules` | Set global design rules (clearance, track width, via sizes) | Routed (drc) |
|
||||
| `get_design_rules` | Get current design rules | Routed (drc) |
|
||||
| `run_drc` | Run design rule check | Routed (drc) |
|
||||
| `add_net_class` | Add net class with custom rules | Routed (drc) |
|
||||
| `assign_net_to_class` | Assign net to a net class | Routed (drc) |
|
||||
| `set_layer_constraints` | Set layer-specific constraints | Routed (drc) |
|
||||
| `check_clearance` | Check clearance between two items | Routed (drc) |
|
||||
| `get_drc_violations` | Get DRC violation list (filter by severity) | Routed (drc) |
|
||||
|
||||
---
|
||||
|
||||
## Export (8 tools)
|
||||
|
||||
*Source: `src/tools/export.ts`*
|
||||
|
||||
| Tool | Description | Access |
|
||||
|------|-------------|--------|
|
||||
| `export_gerber` | Export Gerber files for fabrication | Routed (export) |
|
||||
| `export_pdf` | Export PDF with layer selection and page size | Routed (export) |
|
||||
| `export_svg` | Export SVG vector graphics | Routed (export) |
|
||||
| `export_3d` | Export 3D model (STEP, STL, VRML, OBJ) | Routed (export) |
|
||||
| `export_bom` | Export Bill of Materials (CSV, XML, HTML, JSON) | Routed (export) |
|
||||
| `export_netlist` | Export netlist (KiCad, Spice, Cadstar, OrcadPCB2) | Routed (export) |
|
||||
| `export_position_file` | Export component position file for pick and place | Routed (export) |
|
||||
| `export_vrml` | Export VRML 3D model | Routed (export) |
|
||||
|
||||
---
|
||||
|
||||
## Schematic (27 tools)
|
||||
|
||||
*Source: `src/tools/schematic.ts`*
|
||||
|
||||
### Component Operations
|
||||
|
||||
| Tool | Description | Access |
|
||||
|------|-------------|--------|
|
||||
| `add_schematic_component` | Add component to schematic (symbol from library) | Direct |
|
||||
| `delete_schematic_component` | Remove component from schematic | Additional |
|
||||
| `edit_schematic_component` | Edit component properties (footprint, value, reference) | Additional |
|
||||
| `get_schematic_component` | Get component info with field positions | Additional |
|
||||
| `list_schematic_components` | List all components in schematic | Direct |
|
||||
| `move_schematic_component` | Move component to new position | Routed (schematic) |
|
||||
| `rotate_schematic_component` | Rotate component | Routed (schematic) |
|
||||
| `annotate_schematic` | Auto-annotate reference designators | Direct |
|
||||
|
||||
### Wiring and Connections
|
||||
|
||||
| Tool | Description | Access |
|
||||
|------|-------------|--------|
|
||||
| `add_wire` | Add wire connection between two points | Routed (schematic) |
|
||||
| `delete_schematic_wire` | Delete wire segment | Routed (schematic) |
|
||||
| `add_schematic_connection` | Connect two component pins with wire | Routed (schematic) |
|
||||
| `add_schematic_net_label` | Add net label to schematic | Direct |
|
||||
| `delete_schematic_net_label` | Delete net label | Routed (schematic) |
|
||||
| `connect_to_net` | Connect component pin to named net | Direct |
|
||||
| `connect_passthrough` | Connect all matching pins between two connectors | Direct |
|
||||
| `get_schematic_pin_locations` | Get pin locations for a component | Additional |
|
||||
|
||||
### Net Analysis
|
||||
|
||||
| Tool | Description | Access |
|
||||
|------|-------------|--------|
|
||||
| `get_net_connections` | Get all connections for a net | Routed (schematic) |
|
||||
| `list_schematic_nets` | List all nets in schematic | Routed (schematic) |
|
||||
| `list_schematic_wires` | List all wires in schematic | Routed (schematic) |
|
||||
| `list_schematic_labels` | List all net labels | Routed (schematic) |
|
||||
|
||||
### Schematic Creation and Export
|
||||
|
||||
| Tool | Description | Access |
|
||||
|------|-------------|--------|
|
||||
| `create_schematic` | Create a new schematic file | Routed (schematic) |
|
||||
| `get_schematic_view` | Get schematic as image (PNG/SVG) | Routed (schematic) |
|
||||
| `export_schematic_svg` | Export schematic to SVG | Routed (schematic) |
|
||||
| `export_schematic_pdf` | Export schematic to PDF | Routed (schematic) |
|
||||
|
||||
### Validation and Synchronization
|
||||
|
||||
| Tool | Description | Access |
|
||||
|------|-------------|--------|
|
||||
| `run_erc` | Run electrical rule check | Additional |
|
||||
| `generate_netlist` | Generate netlist from schematic | Routed (schematic) |
|
||||
| `sync_schematic_to_board` | Sync schematic components/nets to PCB (F8 equivalent) | Direct |
|
||||
|
||||
---
|
||||
|
||||
## Footprint Libraries (4 tools)
|
||||
|
||||
*Source: `src/tools/library.ts`*
|
||||
|
||||
| Tool | Description | Access |
|
||||
|------|-------------|--------|
|
||||
| `list_libraries` | List all footprint libraries | Routed (library) |
|
||||
| `search_footprints` | Search footprints across libraries | Routed (library) |
|
||||
| `list_library_footprints` | List footprints in a specific library | Routed (library) |
|
||||
| `get_footprint_info` | Get detailed footprint information | Routed (library) |
|
||||
|
||||
---
|
||||
|
||||
## Symbol Libraries (4 tools)
|
||||
|
||||
*Source: `src/tools/library-symbol.ts`*
|
||||
|
||||
| Tool | Description | Access |
|
||||
|------|-------------|--------|
|
||||
| `list_symbol_libraries` | List all symbol libraries from sym-lib-table | Additional |
|
||||
| `search_symbols` | Search symbols by name, LCSC ID, or description | Additional |
|
||||
| `list_library_symbols` | List symbols in a specific library | Additional |
|
||||
| `get_symbol_info` | Get detailed symbol information | Additional |
|
||||
|
||||
---
|
||||
|
||||
## Footprint Creator (4 tools)
|
||||
|
||||
*Source: `src/tools/footprint.ts`*
|
||||
|
||||
| Tool | Description | Access |
|
||||
|------|-------------|--------|
|
||||
| `create_footprint` | Create custom .kicad_mod footprint (SMD/THT pads, courtyard, silkscreen) | Additional |
|
||||
| `edit_footprint_pad` | Edit pad in existing footprint (size, position, drill, shape) | Additional |
|
||||
| `register_footprint_library` | Register .pretty library in fp-lib-table | Additional |
|
||||
| `list_footprint_libraries` | List available .pretty libraries | Additional |
|
||||
|
||||
---
|
||||
|
||||
## Symbol Creator (4 tools)
|
||||
|
||||
*Source: `src/tools/symbol-creator.ts`*
|
||||
|
||||
| Tool | Description | Access |
|
||||
|------|-------------|--------|
|
||||
| `create_symbol` | Create custom .kicad_sym symbol (pins, rectangles, polylines) | Additional |
|
||||
| `delete_symbol` | Remove symbol from library | Additional |
|
||||
| `list_symbols_in_library` | List all symbols in a .kicad_sym file | Additional |
|
||||
| `register_symbol_library` | Register library in sym-lib-table | Additional |
|
||||
|
||||
---
|
||||
|
||||
## Datasheet Tools (2 tools)
|
||||
|
||||
*Source: `src/tools/datasheet.ts`*
|
||||
|
||||
| Tool | Description | Access |
|
||||
|------|-------------|--------|
|
||||
| `enrich_datasheets` | Fill missing datasheet URLs using LCSC part numbers | Additional |
|
||||
| `get_datasheet_url` | Get LCSC datasheet URL for a component | Additional |
|
||||
|
||||
---
|
||||
|
||||
## JLCPCB Integration (5 tools)
|
||||
|
||||
*Source: `src/tools/jlcpcb-api.ts`*
|
||||
|
||||
| Tool | Description | Access |
|
||||
|------|-------------|--------|
|
||||
| `download_jlcpcb_database` | Download 2.5M+ parts catalog to local SQLite database | Additional |
|
||||
| `search_jlcpcb_parts` | Search parts by specs (category, package, library type) | Additional |
|
||||
| `get_jlcpcb_part` | Get detailed part info with pricing | Additional |
|
||||
| `get_jlcpcb_database_stats` | Get database statistics | Additional |
|
||||
| `suggest_jlcpcb_alternatives` | Find cheaper or in-stock alternatives | Additional |
|
||||
|
||||
---
|
||||
|
||||
## Freerouting Autorouter (4 tools)
|
||||
|
||||
*Source: `src/tools/freerouting.ts`*
|
||||
|
||||
| Tool | Description | Access |
|
||||
|------|-------------|--------|
|
||||
| `autoroute` | Run Freerouting autorouter (export DSN, route, import SES) | Routed (autoroute) |
|
||||
| `export_dsn` | Export Specctra DSN file for manual routing | Routed (autoroute) |
|
||||
| `import_ses` | Import routed SES file back into PCB | Routed (autoroute) |
|
||||
| `check_freerouting` | Check Java and Freerouting JAR availability | Routed (autoroute) |
|
||||
|
||||
---
|
||||
|
||||
## UI Management (2 tools)
|
||||
|
||||
*Source: `src/tools/ui.ts`*
|
||||
|
||||
| Tool | Description | Access |
|
||||
|------|-------------|--------|
|
||||
| `check_kicad_ui` | Check if KiCAD UI is running | Direct |
|
||||
| `launch_kicad_ui` | Launch KiCAD UI (optionally with project) | Routed (board) |
|
||||
|
||||
---
|
||||
|
||||
## Router Tools (4 tools)
|
||||
|
||||
*Source: `src/tools/router.ts`*
|
||||
|
||||
These meta-tools provide discovery and execution of routed tools:
|
||||
|
||||
| Tool | Description |
|
||||
|------|-------------|
|
||||
| `list_tool_categories` | Browse all available tool categories |
|
||||
| `get_category_tools` | View tools in a specific category |
|
||||
| `search_tools` | Find tools by keyword |
|
||||
| `execute_tool` | Run any routed tool with parameters |
|
||||
|
||||
---
|
||||
|
||||
## Summary by Access Type
|
||||
|
||||
| Access Type | Count | Description |
|
||||
|-------------|-------|-------------|
|
||||
| Direct | 18 | Always visible, no router needed |
|
||||
| Routed | 65 | Discovered via router, invoked via `execute_tool` |
|
||||
| Router | 4 | Meta-tools for discovering and running routed tools |
|
||||
| Additional | 35 | Always visible, registered directly |
|
||||
| **Total** | **122** | |
|
||||
|
||||
## Summary by Category
|
||||
|
||||
| Category | Tool Count |
|
||||
|----------|------------|
|
||||
| Project Management | 5 |
|
||||
| Board Management | 12 |
|
||||
| Component Management | 16 |
|
||||
| Routing | 13 |
|
||||
| Design Rules / DRC | 8 |
|
||||
| Export | 8 |
|
||||
| Schematic | 27 |
|
||||
| Footprint Libraries | 4 |
|
||||
| Symbol Libraries | 4 |
|
||||
| Footprint Creator | 4 |
|
||||
| Symbol Creator | 4 |
|
||||
| Datasheet | 2 |
|
||||
| JLCPCB Integration | 5 |
|
||||
| Freerouting | 4 |
|
||||
| UI Management | 2 |
|
||||
| Router | 4 |
|
||||
| **Total** | **122** |
|
||||
|
||||
## Token Impact
|
||||
|
||||
**Before Router Pattern:** All 122 tools in context = ~80K+ tokens
|
||||
**With Router Pattern:** 18 direct + 35 additional + 4 router = 57 always-visible tools
|
||||
**On-Demand:** 65 routed tools loaded only when their category is requested
|
||||
|
||||
Reference in New Issue
Block a user