
This commit introduces a new circuit pattern recognition system that can automatically identify common circuit patterns in KiCad schematics, including: - Power supply circuits (linear regulators, switching converters) - Amplifier circuits (op-amps, transistor amplifiers) - Filter circuits (passive and active) - Oscillator circuits (crystal, RC, IC-based) - Digital interfaces (I2C, SPI, UART, USB) - Microcontroller circuits - Sensor interfaces The implementation includes: - Pattern recognition algorithms for common components - Component value extraction and normalization utilities - MCP tools for running pattern analysis - MCP resources for displaying formatted results - Comprehensive documentation Users can easily extend the pattern recognition by adding new component patterns or circuit recognition functions.
84 lines
2.9 KiB
Python
84 lines
2.9 KiB
Python
"""
|
|
MCP server creation and configuration.
|
|
"""
|
|
from mcp.server.fastmcp import FastMCP
|
|
|
|
# Import resource handlers
|
|
from kicad_mcp.resources.projects import register_project_resources
|
|
from kicad_mcp.resources.files import register_file_resources
|
|
from kicad_mcp.resources.drc_resources import register_drc_resources
|
|
from kicad_mcp.resources.bom_resources import register_bom_resources
|
|
from kicad_mcp.resources.netlist_resources import register_netlist_resources
|
|
from kicad_mcp.resources.pattern_resources import register_pattern_resources
|
|
|
|
|
|
# Import tool handlers
|
|
from kicad_mcp.tools.project_tools import register_project_tools
|
|
from kicad_mcp.tools.analysis_tools import register_analysis_tools
|
|
from kicad_mcp.tools.export_tools import register_export_tools
|
|
from kicad_mcp.tools.drc_tools import register_drc_tools
|
|
from kicad_mcp.tools.bom_tools import register_bom_tools
|
|
from kicad_mcp.tools.netlist_tools import register_netlist_tools
|
|
from kicad_mcp.tools.pattern_tools import register_pattern_tools
|
|
|
|
# Import prompt handlers
|
|
from kicad_mcp.prompts.templates import register_prompts
|
|
from kicad_mcp.prompts.drc_prompt import register_drc_prompts
|
|
from kicad_mcp.prompts.bom_prompts import register_bom_prompts
|
|
from kicad_mcp.prompts.pattern_prompts import register_pattern_prompts
|
|
|
|
# Import utils
|
|
from kicad_mcp.utils.logger import Logger
|
|
from kicad_mcp.utils.python_path import setup_kicad_python_path
|
|
|
|
# Import context management
|
|
from kicad_mcp.context import kicad_lifespan
|
|
|
|
# Create logger for this module
|
|
logger = Logger()
|
|
|
|
def create_server() -> FastMCP:
|
|
"""Create and configure the KiCad MCP server."""
|
|
logger.info("Initializing KiCad MCP server")
|
|
|
|
# Try to set up KiCad Python path
|
|
kicad_modules_available = setup_kicad_python_path()
|
|
|
|
if kicad_modules_available:
|
|
logger.info("KiCad Python modules successfully configured")
|
|
else:
|
|
logger.warning("KiCad Python modules not available - some features will be disabled")
|
|
|
|
# Initialize FastMCP server
|
|
mcp = FastMCP("KiCad", lifespan=kicad_lifespan)
|
|
logger.info("Created FastMCP server instance with lifespan management")
|
|
|
|
# Register resources
|
|
logger.debug("Registering resources...")
|
|
register_project_resources(mcp)
|
|
register_file_resources(mcp)
|
|
register_drc_resources(mcp)
|
|
register_bom_resources(mcp)
|
|
register_netlist_resources(mcp)
|
|
register_pattern_resources(mcp)
|
|
|
|
# Register tools
|
|
logger.debug("Registering tools...")
|
|
register_project_tools(mcp)
|
|
register_analysis_tools(mcp)
|
|
register_export_tools(mcp)
|
|
register_drc_tools(mcp)
|
|
register_bom_tools(mcp)
|
|
register_netlist_tools(mcp)
|
|
register_pattern_tools(mcp)
|
|
|
|
# Register prompts
|
|
logger.debug("Registering prompts...")
|
|
register_prompts(mcp)
|
|
register_drc_prompts(mcp)
|
|
register_bom_prompts(mcp)
|
|
register_pattern_prompts(mcp)
|
|
|
|
logger.info("Server initialization complete")
|
|
return mcp
|