Skip to main content
Glama
propfire11

mcp-stm32-server

by propfire11

🔌 MCP STM32 Controller Server / MCP STM32 コントローラサーバー

Python MCP License

MCP(Model Context Protocol) を介して STM32 マイクロコントローラ を制御します。AI アシスタントは、GPIO の読み書き、LED の制御、ADC の読み取り、OLED の駆動を、すべて自然言語で行うことができます。

MCP(Model Context Protocol) プロトコルを介して STM32 マイクロコントローラ を制御します。AI アシスタントは、このサービスが提供するツールを呼び出して、STM32 の GPIO の読み書き、LED の制御、ADC の読み取り、OLED 画面の操作などを行うことができます。


アーキテクチャ

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

通信には JSON-lines プロトコル を使用します。1 行に 1 つの JSON オブジェクトを置き、\n で終了します。


Related MCP server: Serial MCP Server

クイックスタート

1. 依存関係のインストール

pip install -r requirements.txt

2. ハードウェアの接続

  • STM32 の USART1: PA9 (TX)、PA10 (RX)

  • USB-TTL モジュールを介して PC に接続する

  • デバイスに、後述の JSON-lines プロトコルを実装した対応ファームウェアを書き込む

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

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 と一致する応答をファームウェアが返すだけで構いません。

リクエスト:

{"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 行を 1 行返し、status("ok" / "error")と、data または msg のいずれかを付け加えます。JSON として無効なブートログの行は、クライアントが自動的にスキップします。


ライセンス

MIT License.


アーキテクチャ

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

通信は JSON 行プロトコル を使用します。1 行ごとに 1 つの JSON オブジェクトを配置し、\n で終了します。


クイックスタート

1. 依存関係のインストール

pip install -r requirements.txt

2. ハードウェアの接続

  • STM32 の USART1:PA9(TX)、PA10(RX)

  • USB-TTL モジュールを介して PC に接続する

  • デバイスに、下記の 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 Cursor / 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 行を 1 行返し、status("ok" / "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
    -