MCP-сервер для KiCad EDA: AI-агент управляет PCB-проектами, анализирует схемы, извлекает нетлисты, генерирует BOM и запускает DRC-проверку. AI-ассистент для проектирования электронных плат.
# Требуется: KiCad 8.x
# Установка:
pip install kicad-mcp
# или: uvx kicad-mcp
# Claude Desktop — claude_desktop_config.json:
{ "mcpServers": { "kicad": { "command": "uvx", "args": ["kicad-mcp"] } } }
# Claude Code (CLI):
claude mcp add kicad -- uvx kicad-mcp
# OpenCode — ~/.config/opencode/opencode.json:
{ "mcp": { "kicad": { "type": "local", "command": ["uvx", "kicad-mcp"] } } }
Это руководство поможет вам настроить сервер Model Context Protocol (MCP) для KiCad. Хотя примеры в этом руководстве часто ссылаются на Claude Desktop, сервер совместим с любым MCP-совместимым клиентом. Вы можете использовать его с Claude Desktop, вашими собственными пользовательскими MCP-клиентами или любым другим приложением, реализующим Model Context Protocol.
Сначала установим зависимости и настроим наше окружение:
# Клонировать репозиторий
git clone https://github.com/lamaalrajih/kicad-mcp.git
cd kicad-mcp
# Установить зависимости – `uv` автоматически создаст папку `.venv/`
# (Сначала установите `uv`: `brew install uv` в macOS или `pipx install uv`)
make install
# Необязательно: активировать среду для ручных команд
source .venv/bin/activate
Создайте файл .env, чтобы настроить, где сервер будет искать ваши проекты KiCad:
# Скопировать пример файла окружения
cp .env.example .env
# Редактировать файл .env
vim .env
В файле .env добавьте ваши пользовательские каталоги проектов:
# Добавьте пути к вашим проектам KiCad (через запятую)
KICAD_SEARCH_PATHS=~/pcb,~/Electronics,~/Projects/KiCad
После настройки окружения вы можете запустить сервер:
python main.py
Теперь настроим Claude Desktop для использования нашего MCP-сервера:
# Создайте каталог, если он не существует
mkdir -p ~/Library/Application\ Support/Claude
# Отредактируйте файл конфигурации
vim ~/Library/Application\ Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"kicad": {
"command": "/АБСОЛЮТНЫЙ/ПУТЬ/К/ВАШЕМУ/ПРОЕКТУ/kicad-mcp/.venv/bin/python",
"args": [
"/АБСОЛЮТНЫЙ/ПУТЬ/К/ВАШЕМУ/ПРОЕКТУ/kicad-mcp/main.py"
]
}
}
}
Замените /АБСОЛЮТНЫЙ/ПУТЬ/К/ВАШЕМУ/ПРОЕКТУ/kicad-mcp на реальный путь к каталогу вашего проекта.
Закройте и снова откройте ваш MCP-клиент, чтобы загрузить новую конфигурацию.
Model Context Protocol (MCP) определяет три основных способа предоставления возможностей:
Ресурсы — это доступные только для чтения источники данных, на которые могут ссылаться LLM:
- Аналогичны GET-эндпоинтам в REST API
- Предоставляют данные без выполнения значительных вычислений
- Используются, когда LLM нужно прочитать информацию
- Обычно доступны программно через клиентское приложение
- Пример: kicad://projects возвращает список всех проектов KiCad
Инструменты — это функции, выполняющие действия или вычисления:
- Аналогичны POST/PUT-эндпоинтам в REST API
- Могут иметь побочные эффекты (например, открывать приложения или генерировать файлы)
- Используются, когда LLM нужно выполнять действия в мире
- Обычно вызываются напрямую LLM (с одобрения пользователя)
- Пример: open_project() запускает KiCad с определенным проектом
Промпты — это повторно используемые шаблоны для распространенных взаимодействий:
- Предопределенные темы для начала разговора или инструкции
- Помогают пользователям формулировать распространенные вопросы или задачи
- Вызываются по выбору пользователя (обычно из меню)
- Пример: Промпт debug_pcb_issues помогает пользователям устранять проблемы с печатными платами
Дополнительную информацию о ресурсах vs инструментах vs промптах читайте в документации MCP.
Сервер KiCad MCP предоставляет несколько ключевых возможностей, каждая из которых имеет подробную документацию:
Пример: «Покажи мне все мои последние проекты KiCad» → Выводит список всех проектов, отсортированных по дате изменения
Анализ проекта печатной платы: Получение информации о ваших проектах печатных плат и схемах
Пример: «Проанализируй плотность компонентов на плате моего датчика температуры» → Предоставляет анализ расстояний между компонентами
Извлечение списка соединений: Извлечение и анализ соединений компонентов из схем
Пример: «Какие компоненты подключены к МК в моем щите Arduino?» → Показывает все соединения с микроконтроллером
Управление ведомостью материалов (BOM): Анализ и экспорт спецификаций
Пример: «Сгенерируй BOM для проекта моих умных часов» → Создает детальную ведомость материалов
Проверка правил проектирования: Запуск проверок DRC с использованием CLI KiCad и отслеживание прогресса во времени
Пример: «Запусти DRC на плате моего источника питания и сравни с прошлой неделей» → Показывает прогресс в исправлении нарушений
Визуализация печатной платы: Генерация визуальных представлений ваших макетов печатных плат
Пример: «Покажи мне миниатюру моей печатной платы аудиоусилителя» → Отображает визуальную визуализацию платы
Распознавание электрических схем: Автоматическая идентификация распространенных схемных решений в ваших схемах
Больше примеров и подробностей о каждой возможности см. в специальных руководствах в документации. Вы также можете спросить у LLM, какие инструменты у него есть в распоряжении!
Хотя наша документация часто показывает такие примеры:
Покажи мне отчет DRC по пути /Users/username/Documents/KiCad/my_project/my_project.kicad_pro
Вам не нужно вводить полный путь к файлам! LLM понимает более естественные запросы на языке.
Например, вместо формальной команды выше вы можете просто спросить:
Можешь проверить, нет ли нарушений правил проектирования в проекте моего щита Arduino?
Или:
Я работаю над схемой датчика температуры. Можешь определить, какие схемные решения в ней используются?
LLM поймет ваш запрос и запросит соответствующую информацию у Сервера KiCad MCP. Если ему потребуется уточнение, к какому проекту вы относитесь, он задаст вопрос.
Подробная документация по каждой возможности доступна в каталоге docs/:
Сервер KiCad MCP можно настроить с помощью переменных окружения или файла .env:
| Переменная окружения | Описание | Пример |
|---|---|---|
KICAD_SEARCH_PATHS |
Список каталогов для поиска проектов KiCad через запятую | ~/pcb,~/Electronics,~/Projects |
KICAD_USER_DIR |
Переопределение каталога пользователя KiCad по умолчанию | ~/Documents/KiCadProjects |
KICAD_APP_PATH |
Переопределение пути к приложению KiCad по умолчанию | /Applications/KiCad7/KiCad.app |
Более подробную информацию см. в Руководстве по конфигурации.
Сервер KiCad MCP организован по модульному принципу:
kicad-mcp/
├── README.md # Документация проекта
├── main.py # Точка входа для запуска сервера
├── requirements.txt # Зависимости Python
├── .env.example # Пример конфигурации среды
├── kicad_mcp/ # Основной каталог пакета
│ ├── __init__.py
│ ├── server.py # Настройка MCP-сервера
│ ├── config.py # Константы и настройки конфигурации
│ ├── context.py # Управление временем жизни и общий контекст
│ ├── resources/ # Обработчики ресурсов
│ ├── tools/ # Обработчики инструментов
│ ├── prompts/ # Шаблоны подсказок
│ └── utils/ # Вспомогательные функции
├── docs/ # Документация
└── tests/ # Модульные тесты
Чтобы добавить новые функции в сервер KiCad MCP, выполните следующие шаги:
Для получения дополнительной информации см. Руководство разработчика.
Если вы столкнулись с проблемами:
mcpПроверьте, обнаружена ли ваша установка KiCad
Ошибки сервера:
Проверьте журналы Claude по адресам:
~/Library/Logs/Claude/mcp-server-kicad.log (журналы конкретного сервера)~/Library/Logs/Claude/mcp.log (общие журналы MCP)Проблемы с рабочей директорией:
Для получения дополнительной информации см. Руководство по устранению неполадок.
Если вам всё ещё не удаётся устранить проблему, пожалуйста, создайте проблему на Github.
Хотите внести свой вклад в сервер KiCad MCP? Вот как вы можете помочь улучшить этот проект:
Ключевые области для участия: - Добавление поддержки для большего количества паттернов компонентов в системе распознавания схем - Улучшение документации и примеров - Добавление новых функций или улучшение существующих - Исправление ошибок и улучшение обработки ошибок
Для получения подробных руководств по участию см. CONTRIBUTING.md.
Интересуетесь участием? Вот некоторые идеи для будущей разработки:
Этот проект является открытым и распространяется под лицензией MIT.