Xiao ESP32 S3と連携するMCPサーバーを作る


  • センサーはDHT11という温湿度センサーが手持ちであったものを使った。
  • 大まかな手順として下記を想定して取り組み始めた
  • Xiao ESP32 s3側でREST APIサーバーを実装する
  • MCPサーバーを実装する
  • Claude DesktopでMCPの設定をする

手順01.Xiao ESP32 s3側でREST APIサーバーを実装

まぁ便利なもので、Claude Sonnet3.7に使用するセンサーと要件を伝えたらほぼ一発で下記のコードを出力してくれたではないか。あとはwifiのSSIDとパスワード、ピン配置を指定してやれば実装〜起動までの所要時間5分程度。

https://github.com/kichinosukey/rest-api-xiao-esp32-s3/blob/main/main.ino

02.MCPサーバーを実装する

こちらもClaude 3.7 Sonnetを使って実装した。そのまま聞くと知識不足でうまくいかな恐れがあると思い公式サイトの情報をいくらかpdf化してナレッジとして渡してやった。

参考にしたのは下記リンク先。

Introduction – Model Context Protocol

For Server Developers – Model Context Protocol

Example Servers – Model Context Protocol

Building MCP with LLMs – Model Context Protocol

Debugging – Model Context Protocol

Inspector – Model Context Protocol

Core architecture – Model Context Protocol

Resources – Model Context Protocol

Prompts – Model Context Protocol

Tools – Model Context Protocol

Sampling – Model Context Protocol

Roots – Model Context Protocol

Transports – Model Context Protocol

そして下記のコードを生成してもらった。

https://github.com/kichinosukey/mcp-xiao-esp32-s3/blob/main/xiao_mcp_server.py

んで、このコードはこんな感じの世界を実現している。(はず)
APIの機能を追加しいたら、MCPツール群を追加するイメージかな。APIへのリクエストが共通のインターフェースなので開発の流れはシンプルかも。

Claude DesktopでMCPの設定をする

最後にclaudeのconfigは下記の通りに設定すればいけるはず。
MCPサーバーはローカルで稼働しているので、commandや実行ファイルは絶対パスで指定している。

{
  "mcpServers": {
   "xiao-esp32s3-monitor": {
        "command": "uv",
        "args": [
          "--directory",
          "/Users/USERNAME/mcp-xiao-esp32-s3",
          "run",
          "xiao_mcp_server.py"
        ]
    }
  }
}

, , ,