Keil5 MCP Server
Keil5 MCP Server
[
(LICENSE)

[
(ONRUTING.md)
English | 中文
Сервер Model Context Protocol (MCP), о которых предоставляет deepseek harness амкнутый цикл правка кода → прошивка → отладка → чтение обратной связи → исправление кода для разработки на STtim32 с помощью Keil MDK.
Вместо ручного переключений между ИDЕ, программатором и терминалом агент может:
Обирать проек Keil и наблюдать за живым програссом компиляции
Получать структурированные ошики из логого UV4 (файл / строика / ко онка / код / сообщение)
Объяснять коды ошибок с причинами и реглагаемыми устранениями
Безопасно редактировать исходные файлы (каждая правка автоматически с будуется)
Прошивать про чиamber via UV4 канап через pyOCD
Отлаживать на аппатных через pyOCD: остон reviewing, шагов, регистры, память, RTT логи
Запускать официальный канала отладки Keil (UV4
-д+-инскрипты)
Содержимое
Related MCP server: stm32-mcp
Возможности
27 инструментов MCP, зареистрированных как
mcp__<serverName>__<tool>(напр.,mc-p__keil__build_project)Прогресс сборки в рельном времени: мониторинг по «хвосту» лога с процентном / текущем файлом / фазой, ограничение чения 95% до завершения линковки
Структурированный разор логов UV4: ошибки компиляции (
main.c(25:1): error C2065: ...), ошибки линковки (L6218E), Program Size, время сборкиБаза знаний по кодам ошибок: встроенные объйснения и устранения распростраённых кодов armcc/armclang (C2065, L6218E, LMEE, ...).
Безопная редактирование исходников: создание
.keil-mcp-back-ups/перед каждым редактированием, замена диапазона строк, поиск по регулярному выважениюОфициальный путь прошивки:
UV4 -fиспоьзует алгоритм Flash, настронный в проекже; запасной вариант pyOCD принимает.axfнапрямуюАппаратная отладка: управление программатором через pyOCD (connect / halt / resume / step / breakpoint / registers / memorry / RTT)
Аренда программатора: ексклюзивный доступ к каждому программатору (asyncio io lock + file lock), чтобы UV4 and pyOCD не конфликтовали за отладодчный порт
Граньисполнений: инструменты с «только чтение» вызываются; асинхронно; меняющие инструменты выстраивается в очередь через сессионный замок; отмена безопасно через
asyncio.shieldРаботает бес устновленого Keil:
keil_doctoактивно о отсутствующих компоненом; север при этом всё равно запускается
Требования
Component | Version / Notes |
Python | 3.10+ (проверено на 3.12) |
Keil MDK |
|
pyOCD | устанавливается апри automачески через pip; нужен драйвер программатора (ST-Lick / J-Link / CMSIS-DAP) |
Программато реceptor | ST-Link V2/V3, J-Link, CMSIS-DAP, Keil ULINKplus |
Целевой пакет | напр.; |
Устаноvпа
Из PyPI
python -m venv .venv
.venv/Scripts/activate # Windows
# source .venv/bin/activate # Linux / macOS
pip install keil-mcp-serverПакет готов к публикации на PyPI (
pyprojec.toml+LICENS+server.jsonвключены). Если пакет ещё не опубликован, испо́зуйте станиковку из исходников выше.
Из исходников (GitHub)
git clone https://github.com/ZMC1011/dsh-keil-mcp.git
cd ds-keil-mcp
python -m venv .venv
.venv/Scripts/activate # Windows
# source .venv/bin/activate # Linux / macOS
pip install -e ".[dev]"Проверка установки
# Environment self-check (UV4.exe, pyocd, connected probes)
python -m keil_mcp_server --check
# List all registered tools
python -m keil_mcp_server --tools
# Run the unit tests
pytest tests -qБыстрый старт
# 1. Start the MCP server (stdio transport — the MCP client will spawn this)
python -m keil_mcp_server
# 2. In your MCP client, call e.g.:
# keil_doctor
# discover_keil_projects { directory: "D:/STM32Projects" }
# configure_keil_project { project: "D:/STM32Projects/app/app.uvprojx" }
# build_project { project: "...", target: "Target 1", stream_progress: true }
# flash_firmware { project: "...", confirm: true }Настройка MCP-клиента
DeepSeek Harness (DSH)
Согалогally уже onфициальные документы DSH MCP-https): one plugin instance = one MCP server, подключаемый через офильный платgin @deepseekee-ai/dsh-mcp-client. Добавьте это в ваш профиль в cordis.
- insert:
- id: mcp-keil
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: keil # tools appear as mcp__keil__build_project etc.
transport: stdio
command: D:/000_Environment/mcp-servers/ds-keil-mcp/.venv/Scripts/python.exe
args: ['-m', 'keil_mcp_server']
env:
KEIL_UV4_PATH: D:/002_software/Keil5/UV4/UV4.exe
KEIL_PROJECT_DIR: D:/STM32Projects
# optional: toolCallTimeoutMs: 60000, failOnStartupError: falseПоroверить:
dsh web --dump-config | grep -A3 mcp
# or check session logs for mcp__keil__* callsПрим.: serverName должен соответствие
[AZa-z0-9_-{1,32}` и быть городо уникальным среди активных екземпляров.
Claude Desktop / другие stdio MCP-клиенты
Большинство MCP-клиентов испольуют JSON-конвенцию mcpServers:
{
"mcpServers": {
"keil": {
"command": "D:/000_Environment/mcp-servers/ds-keil-mcp/.venv/Scripts/python.exe",
"args": ["-m", "keil_mcp_server"],
"env": {
"KEIL_UV4_PATH": "D:/002_software/Keil5/UV4/UV4.exe",
"KEIL_PROJECT_DIR": "D:/STM32Projects"
}
}
}
}Для исходной копии бес venv подойдёт uv:
{
"mcpServers": {
"keil": {
"command": "uv",
"args": ["--directory", "D:/path/to/ds-keil-mcp", "run", "keil_mcp_server"]
}
}
}Интрументы
Все 27 инструментов возвраят структурированный JSON. Деструктивные операции (flash / erase) требуют confirm=True.
Сборка и ошибки
Tool | Description | Key parameters → Result |
| Компилирует с помощью |
|
| Запрос прогресса текущей сборки |
|
| Отмена сборки |
|
| Разбор лога UV4 в структурированные ошибки |
|
| Объяснение кода ошибки + причины + решения |
|
Редактирование исходников
Tool | Description | Key params → Result |
| Читает исходный файл с номерами строк |
|
| Заменяет диапазон строк; сначала авто-обезопасная копия |
|
| Ищет в исходных файлах (текст или regex) |
|
Официальный канал отладки
Tool | Description | Key params → Result |
| Выполняет UV4 |
|
| Чтение выхода сессии по ид |
|
Проект и окружение
Tool | Description | Key params → Result |
| Проверка окружения: UV4.exe, pyocd, пакеты, подключённые программы | — → |
| Find |
|
| Разбор проектов: targets, device, pack, groups, source files |
|
Прошивка
Tool | Description | Key params → Result |
| Прошивает через |
|
| Стирает flash микросхемы (pyOCp |
|
| Проеряет соответствием микросхемы заднному образу (pyOCp |
|
Отладка программатором
Tool | Description | |
| Подключение / освобождение программатора | |
| Управление ядром | |
| Установка точка останова по символу или адресу, продолжение выполнения | |
| Чтение | |
| Чтение памяти по адресу (hex байты) | |
| Чтение SEGGER | RTT (если аустится) |
Архитектура
┌──────────────────────────────────────────────────────────────┐
│ MCP Client (DeepSeek Harness / Claude Desktop / ...) │
│ → tools registered as mcp__keil__* │
└──────────────────────────────┬───────────────────────────────┘
│ stdio (JSON-RPC 2.0)
┌──────────────────────────────▼───────────────────────────────┐
│ keil-mcp-server (Python, FastMCP) │
│ │
│ server.py — tool registration + Execution Boundary │
│ (read-only whitelist → concurrent; │
│ mutating tools → session lock + │
│ asyncio.to_thread + asyncio.shield) │
│ │
│ tools/ — MCP tool layer (27 tools) │
│ │
│ core/ — deliverable layer │
│ uv4_runner.py UV4 -b/-r/-c/-f/-d process runner │
│ build_progress.py realtime log tail monitor │
│ error_parser.py UV4 log → structured errors + KB │
│ source_editor.py read/edit/search + auto-backup │
│ uv4_debug.py UV4 -d + .ini script engine │
│ probe_lease.py per-probe exclusive lease │
│ project_utils.py .uvprojx parser (namespace-tolerant) │
│ │
│ models.py / config.py / config.yaml │
└───────────────┬──────────────────────────────┬───────────────┘
│ │
┌─────────▼─────────┐ ┌─────────▼─────────┐
│ Keil MDK (UV4.exe)│ │ pyOCD + probe │
│ build/flash/debug │ │ ST-Link/J-Link/ │
│ │ │ CMSIS-DAP → chip │
└───────────────────┘ └───────────────────┘Направление зависимостей: MCP зусловие → инскими → ядро → *il MDK / *pyOCD → target chip.
Ключевые проектные решения:
Границы выполнения
(по мотивации McuBuddy): инструменты только для чтения выполняются параллельها; всё осста — сериализуется с помощью asyncio.Lock (бlociroвka на сессию), runs в рабочем потоке (asyncio.to_thread) and з турно защищён от отменить (asyncio.shield).
** Аренда пробника**: UV4
-фand pyODC не могут совместно использовать отладочный порт.ProbeLease(asyncio lock +filelock) сериализует дост protect; процесс прошивки отсовоt`pyODC police.** progress в реальном ventи**: фоный пот ostталеживается UV4 log, считывает
compilinglines against number исходных files из.uvprojnx(perent limites ago to 95% ago toBuild Time Elapsedmarker).устойчивосstь к нарушent XML: old projects Keil contrast "n подтвержд.
<b498tele498>...</bUseTDR>); The parser project is ремонт before parсинга.
Конфигурация
config.yaml (в компотекте) + environmenal-files:
keil:
uv4_path: "C:/Keil_v5/UV4/UV4.exe" # or env KEIL_UV4_PATH
default_project_dir: "" # or env KEIL_PROJECT_DIR
build:
build_timeout: 300
stream_progress: true
tail_flush_wait: 3 # seconds to wait for UV4 log tail flush after exit
error:
max_errors: 200
source:
backup_dir: ".keil-mcp-backups"
probe_lease:
lock_dir: ".keil-mcp-locks"
server:
transport: "stdio"
log_level: "INFO"Сквозной пример рабочего процесса
Типичная сессия агента (имен инструментов покasаны с префиксом DSH mcp__keil__):
1. mcp__keil__keil_doctor # environment + probe OK?
2. mcp__keil__discover_keil_projects # find .uvprojx files
3. mcp__keil__configure_keil_project # parse targets/device/sources
4. mcp__keil__build_project (stream_progress) # compile; on failure:
5. mcp__keil__parse_build_errors # structured errors[]
6. mcp__keil__explain_build_error # causes + fixes
7. mcp__keil__source_edit # fix code (auto-backup)
→ back to 4 until 0 errors
8. mcp__keil__flash_firmware (confirm=true) # UV4 -f → "Verify OK"
9. mcp__keil__probe_connect + set_breakpoint # attach debugger
10. mcp__keil__probe_read_registers / _memory # observe chip state
11. mcp__keil__read_rtt_log # firmware logs
→ if logic bug found: source_edit → rebuild → reflashПравила безопаснเหล่น
Уровень | Операции | По умолчанию |
Только чтение | сопоставение чипа, чтение регистров/памяти/символов, логents | безevezттconfirmed |
Выполнение | отбовка / возобновение / шаг / сбрosc | prompt |
Запись состояния | запись паияти/регется, брейкпойнт, во почни | Поттверждения |
Необратимые destroyable operations | crе флеш — / фришивка | явноe подтверждение + план restore |
Системный процesiс | Keil build, GDB server | prompt |
Principия: сначала собери доказателъства, затем действest; decodeidentificiroвания targeted chip; before flash - confirm the destination / range / image / recovery.
Тестировanie
pytest tests -q # 11 unit tests: log parsing, source editing, progress, project parsingRучные смоук-тесты (in tests/):
python tests/raw_handshake.py # bare JSON-RPC initialize + tools/list over stdio
python tests/func_test.py # end-to-end tool calls through the MCP client SDKTroubleshooting
Symptom | Причина / исправление | |
| pyODC all edges владеет прbe. Висовit "probe disconnков" (of recurrence lease) before | |
| Задайте | |
| Redукт in venv old path — self cannot do this custom checkout: | |
"No target connected" | Проверьте подводку прbe / драйвер; | |
required | For example | DF P. |
План development
Published to PyPI and register in MCP re-gistry)
MCUBUDDY_TOODSETS-style toggles
Use ELF symbols to demonstrate for
set_bref.Support RTOS tasks (Free)
CICELIB for looks
Notes for Linux/масьOS (Keil — Tolcos Windows; pyODD — multi-platform)
Участие в разработке
Вроде asenteres welcome! Пожалуста, первым открыйте issue to обсудить измит, затем отыте PR.
Лицензия
MIT — free to use, modify, distribute with attribution.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI assistants to interact with STM32 development boards via J-Link debugger using RTT communication, supporting connection, logging, memory operations, and firmware flashing through natural language.121MIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude Code to build, flash, and communicate with STM32 hardware over SWD and serial, including multi-board management, live memory monitoring, and hardware sequences.21MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI-driven embedded development: generate, build, flash, and debug firmware using natural language commands through MCP.MIT
- FlicenseAqualityCmaintenanceEnables AI assistants to flash firmware, program memory, modify option bytes, erase chips, reset boards, and capture SWO printf traces for STM32 microcontrollers via STM32CubeCLT.12
Related MCP Connectors
Run, build, and validate firmware on virtual hardware from your AI agent. Hardware knowledge corpus.
Adaptive plan/build/review cycles for AI coding assistants, persisted across sessions.
Debug, build, and manage Power Automate cloud flows with AI agents
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ZMC1011/dsh-keil-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server