Skip to content

Configuration

mckicad can be configured through:

  1. .env file in the project root (recommended)
  2. Environment variables set directly or via your MCP client config
  3. Code constants in config.py for static values like file extensions

These settings control where the server looks for KiCad projects:

Environment VariableDescriptionDefaultExample
KICAD_USER_DIRKiCad user directory~/Documents/KiCad (macOS/Windows), ~/kicad (Linux)~/Documents/KiCadProjects
KICAD_SEARCH_PATHSAdditional project directories (comma-separated)None~/pcb,~/Electronics,~/Projects/KiCad
Environment VariableDescriptionDefaultExample
KICAD_APP_PATHPath to the KiCad installationAuto-detected per platform/Applications/KiCad/KiCad.app
KICAD_CLI_PATHExplicit path to kicad-cliAuto-detected/usr/bin/kicad-cli
FREEROUTING_JAR_PATHPath to FreeRouting JARAuto-detected in common locations~/freerouting.jar
Environment VariableDescriptionDefaultExample
LOG_LEVELLogging levelINFODEBUG

The recommended approach. Copy the example and edit:

Terminal window
cp .env.example .env

Example .env:

Terminal window
# KiCad user directory
KICAD_USER_DIR=~/Documents/KiCad
# Additional project directories (comma-separated)
KICAD_SEARCH_PATHS=~/pcb,~/Electronics,~/Projects/KiCad
# KiCad application path
# macOS:
KICAD_APP_PATH=/Applications/KiCad/KiCad.app
# Linux:
# KICAD_APP_PATH=/usr/share/kicad
# Windows:
# KICAD_APP_PATH=C:\Program Files\KiCad

The .env file is loaded by main.py before any mckicad imports, which means all config functions see the correct values at runtime.

The server automatically searches for KiCad projects in:

  1. The KiCad user directory (KICAD_USER_DIR)
  2. Any additional search paths from KICAD_SEARCH_PATHS
  3. Common project locations that are auto-detected (e.g., ~/Documents/PCB, ~/Electronics)

Projects are identified by the .kicad_pro file extension. The server searches recursively through all configured directories.

Create or edit the configuration file:

macOS:

Terminal window
mkdir -p ~/Library/Application\ Support/Claude

Edit ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: Edit %APPDATA%\Claude\claude_desktop_config.json

Add the server entry:

{
"mcpServers": {
"kicad": {
"command": "/ABSOLUTE/PATH/TO/kicad-mcp/.venv/bin/python",
"args": [
"/ABSOLUTE/PATH/TO/kicad-mcp/main.py"
]
}
}
}

For Windows, use the appropriate path format:

{
"mcpServers": {
"kicad": {
"command": "C:\\Path\\To\\kicad-mcp\\.venv\\Scripts\\python.exe",
"args": [
"C:\\Path\\To\\kicad-mcp\\main.py"
]
}
}
}

Passing environment variables via client config

Section titled “Passing environment variables via client config”
{
"mcpServers": {
"kicad": {
"command": "/ABSOLUTE/PATH/TO/kicad-mcp/.venv/bin/python",
"args": [
"/ABSOLUTE/PATH/TO/kicad-mcp/main.py"
],
"env": {
"KICAD_SEARCH_PATHS": "/custom/path1,/custom/path2",
"KICAD_APP_PATH": "/custom/path"
}
}
}
}

The recognized file extensions are defined in config.py:

KICAD_EXTENSIONS = {
"project": ".kicad_pro",
"pcb": ".kicad_pcb",
"schematic": ".kicad_sch",
}

DRC results are stored in:

  • macOS/Linux: ~/.mckicad/drc_history/
  • Windows: %APPDATA%\mckicad\drc_history\

KiCad is typically at /Applications/KiCad/KiCad.app. For non-standard installations:

KICAD_APP_PATH=/path/to/your/KiCad.app

KiCad is typically at C:\Program Files\KiCad. In .env files, use either forward slashes or escaped backslashes:

KICAD_SEARCH_PATHS=C:/Users/Username/Documents/KiCad
KICAD_SEARCH_PATHS=C:\\Users\\Username\\Documents\\KiCad

KiCad locations vary by distribution. Common paths:

  • /usr/share/kicad
  • /usr/local/share/kicad
  • /opt/kicad
  1. Start the server and check logs:

    Terminal window
    uv run python main.py

    Logs go to mckicad.log in the project root.

  2. Verify environment variables are loaded:

    Terminal window
    python -c "import os; print(os.environ.get('KICAD_SEARCH_PATHS', 'Not set'))"
  3. Use absolute paths to eliminate path resolution issues.

  4. Use the MCP Inspector for direct server testing:

    Terminal window
    npx @modelcontextprotocol/inspector uv --directory . run main.py