Skip to main content
Glama
propfire11

mcp-stm32-server

by propfire11

🔌 MCP STM32 Controller Server / MCP STM32 控制器服务器

Python MCP License

Управляйте микроконтроллером STM32 через MCP (Model Context Protocol). ИИ-ассистенты могут читать/записывать GPIO, управлять светодиодом, считывать данные АЦП и работать с OLED-дисплеем — всё это через естественный русский язык.

通过 MCP(Model Context Protocol) 协议控制 STM32 微控制器。AI 助手可以调用本服务提供的工具来读写 STM32 的 GPIO、控制 LED、读取 ADC、操作 OLED 屏幕等。


Архитектура

AI Assistant (Claude) ←→ MCP Server (this program) ←→ UART ←→ STM32 firmware

Для связи используется построчный JSON-протокол: каждый JSON-объект — на отдельной строке, строки завершаются символом \n.


Related MCP server: Serial MCP Server

Быстрый старт

1. Установка зависимостей

pip install -r requirements.txt

2. Подключение оборудования

  • STM32 USART1: PA9 (TX), PA10 (RX)

  • Подключите к компьютеру через USB-TTL модуль

  • Прошейте на устройстве подходящую прошивку (реализующую описанный ниже построчный JSON-протокол)

3. Запуск сервера

# auto-detect the serial port
python main.py

# specify a serial port
python main.py --port COM3

# SSE mode (HTTP service)
python main.py --sse --port COM3

Инструменты

Инструмент

Описание

Аргументы

ping

проверить, находится ли STM32 в сети

—

set_led

установить яркость светодиода

brightness: 0-100

get_led

прочитать текущую яркость светодиода

—

read_pin

прочитать уровень GPIO

pin: "газo", "PC13", ...

write_pin

установить уровень GPIO

pin + value: 0/1

read_adc

прочитать значение АЦП

channel: 0-2

oled_clear

очистить экран OLED

—

oled_print

вывести текст на OLED

x + y + text

Ресурсы

URI

Описание

stm32://status

информацию о статусе подключения, порте, времени работы


Конфигурация

Через переменные окружения или аргументы командной строки:

Аргумент

Переменная окружения

По умолчанию

Описание

--port

STM32_PORT

автоопределение

последовательный порт

--baud

—

115200

скорость передачи

--sse

—

false

режим SSE

--sse-port

—

8000

порт SSE


Интеграция с Claude Desktop

Отредактируйте claude_desktop_config.json:

{
  "mcpServers": {
    "stm32": {
      "command": "python",
      "args": ["C:/path/to/mcp-stm32-server/main.py", "--port", "COM3"],
      "env": {}
    }
  }
}

Wire-протокол (JSON-строки)

Каждая строка — независимый JSON-объект. Прошивка просто отвечает JSON-строкой с соответствующим id.

Запрос:

{"id":1,"cmd":"set_led","args":{"brightness":75}}

Ответ об успехе:

{"id":1,"status":"ok","data":{"brightness":75}}

Ответ об ошибке:

{"id":1,"status":"error","msg":"brightness must be 0-100"}

Договор для прошивки: на каждый полученный запрос отвечайте одной JSON-строкой с тем же id, содержащей status ("ok" / "error") и либо data, либо msg. Невалидные JSON-строки в журнале запуска клиент автоматически пропускает.


Лицензия

MIT License.


架构

AI 助手 (Claude) ←→ MCP Server (本程序) ←→ 串口 ←→ STM32 固件

通信使用 JSON 行协议,为一个人的对象的一个 JSON 对象,以 \n 结尾。


快速开始

1. 安装依赖

pip install -r requirements.txt

2. 连接硬件

  • STM32 的 USART1:PA9(TX),PA10(RX)

  • 通过 USB-TTL 模块连接电脑

  • 在设备端烧录实现下述 JSON 行协议的配套固件

3. 启动服务

# 自动检测串口
python main.py

# 指定串口
python main.py --port COM3

# SSE 模式(HTTP 服务)
python main.py --sse --port COM3

工具列表

工具

说明

参数

ping

检测 STM32 是否在线

无

set_led

设置 LED 亮度

brightness: 0-100

get_led

读取 LED 亮度

无

read_pin

读取 GPIO 电平

pin: "PA0", "PC13" 等

write_pin

设置 GPIO 电平

pin + value: 0/1

read_adc

读取 ADC 值

channel: 0-2

oled_clear

清空 OLED 屏幕

无

oled_print

在 OLED 上显示文字

x + y + text

资源

URI

说明

stm32://status

连接状态、串口信息、运行时间


配置

通过环境变量或命令行参数:

参数

环境变量

默认值

说明

--port

STM32_PORT

自动检测

串口号

--baud

—

115200

波特率

--sse

—

false

SSE 模式

--sse-port

—

8000

SSE 端口


与 Claude Desktop 集成

编辑 claude_desktop_config.json:

{
  "mcpServers": {
    "stm32": {
      "command": "python",
      "args": ["C:/path/to/mcp-stm32-server/main.py", "--port", "COM3"],
      "env": {}
    }
  }
}

协议格式(JSON 行)

每一行是一个独立的 JSON 对象。固件只需回一个 id 相同的 JSON 行即可。

请求:

{"id":1,"cmd":"set_led","args":{"brightness":75}}

成功响应:

{"id":1,"status":"ok","data":{"brightness":75}}

错误响应:

{"id":1,"status":"error","msg":"brightness must be 0-100"}

固件约定:收到每条请求后,回一行包含相同 id 的 JSON,含 status("right" / "error")以及 data 或 msg。启动时的非 JSON 日志行会被客户端自动跳过。


许可证

MIT License。

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants like Claude to control Arduino boards in real-time, allowing users to turn LEDs on and off through natural language commands using the Model Context Protocol and Firmata.
    12
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI tools like Claude Code and Codex CLI to read and write serial port data, facilitating embedded development workflows such as coding, flashing, and debugging.
    19 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables 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.
    12
    1
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables 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
    -