- 最近XIAO ESP32 S3なるものを買って使い始めた。そしてMCPなるものが流行り始めた。
- LLMのインターフェースでハードウェアを操作できたら未来だよなぁと思っていたところだったので早速下記のような構成で仕組みを作れないか試してみた。

- センサーは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"
]
}
}
}