
This commit implements comprehensive DRC support including: - DRC check tool integration with both pcbnew Python module and CLI fallback - Detailed DRC reports as resources with violation categorization - Historical tracking of DRC results with visual trend analysis - Comparison between current and previous DRC runs - New prompt templates for fixing violations and custom design rules - Full documentation in drc_guide.md The DRC system helps users track their progress over time, focusing on the most critical design rule violations as they improve their PCB designs.
64 lines
2.0 KiB
Python
64 lines
2.0 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
|
|
|
|
# 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
|
|
|
|
# Import prompt handlers
|
|
from kicad_mcp.prompts.templates import register_prompts
|
|
from kicad_mcp.prompts.drc_prompt import register_drc_prompts
|
|
|
|
# Import utils
|
|
from kicad_mcp.utils.logger import Logger
|
|
from kicad_mcp.utils.python_path import setup_kicad_python_path
|
|
|
|
# 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")
|
|
logger.info("Created FastMCP server instance")
|
|
|
|
# Register resources
|
|
logger.debug("Registering resources...")
|
|
register_project_resources(mcp)
|
|
register_file_resources(mcp)
|
|
register_drc_resources(mcp)
|
|
|
|
# Register tools
|
|
logger.debug("Registering tools...")
|
|
register_project_tools(mcp)
|
|
register_analysis_tools(mcp)
|
|
register_export_tools(mcp)
|
|
register_drc_tools(mcp, kicad_modules_available)
|
|
|
|
# Register prompts
|
|
logger.debug("Registering prompts...")
|
|
register_prompts(mcp)
|
|
register_drc_prompts(mcp)
|
|
|
|
logger.info("Server initialization complete")
|
|
return mcp
|