MCP ✖️ BLEで、どんなことでも弁論大会にできる【魔法の天秤】作ってみた!

#はじめに
#なぜ作ったか?
##1. 論理的思考を遊びながら鍛えたい
ディベートや議論の場では、主張の一貫性、根拠の有無、相手の論を理解して反論する力といったスキルが求められます。
ただ、これらを真面目に練習しようとするとハードルが高く、続かないことが多いという問題があります。
「だったら遊びの延長で楽しみながらできる仕掛けを作れないか?」というのが最初の発想でした。
どうでもいいテーマ、たとえば「醤油派 vs ソース派」のような論題なら気軽に挑戦できますし、笑いながら論理的思考を練習できます。
また、LLMの登場によって、論理性を持ち、第三者視点に立てる存在が現実的に使えるようになりました。今まででは到底実現できなかったものですが、今なら作れる。そう思ったのが大きなきっかけです。
##2. 技術的なチャレンジを試したかった
上記で触れた「LLMだからこそ実現できる仕組み」に加え、MCPとハードウェアを組み合わせることで、LLMによって制御される大型ハードウェア、すなわちロボットに挑戦してみたいと考えました。
従来、このようなロボットの挙動は、ソフトウェア側で詳細に要件を定義し、その枠組みに沿って決められた動作をさせるしかありませんでした。ところがMCPの登場により、標準化された仕組みを通じて、LLMが柔軟に制御を担うことが可能になりました。
今回のプロダクトではその特性を活かし、高レイヤーからの制御はあえて「プロンプト」のみを与えています。これにより、ゲームの進行に応じてモーターやLEDが自律的かつ動的に振る舞う仕組みを実現しました。
私自身、普段からいくつかのロボコンへの参加を通じてモーター制御等に関する知見を持っていますが、「MCPを介して大型モーターをLLMに制御させる」というのは長らくの挑戦目標でした。ただし、競技環境では勝敗がかかるため瞬時の応答性が必須であり、なかなか実現の機会は得られませんでした。
しかし今回のプロダクトでは、特性上応答にいくばくかの余裕があることと、非同期的に行うなどの工夫を凝らすことで、ユーザーが違和感を覚えない速度でMCP経由の制御を成立させることに成功しました。その結果、LLMとハードウェアの親和性を最大限に引き出したプロダクトに仕上がったと感じています。
さらに、筐体をあえて大きく設計することで、ゲームセンターにあるアーケード筐体のような没入感を演出し、ユーザーに特別な体験を提供することも狙いとしています。
##3. 「面白そうだから」
そして一番大きい理由はこれです。
「目玉焼きに何をかけるか?」 「犬派か猫派か?」
どうでもいい論争を本気で審判する装置って、想像しただけで面白いと思いませんか?
最初、冗談半分で「魔法の天秤」という名前をメモに書きましたが、「これを本当に作ったら絶対に面白い」とワクワクしてしまい、作ることになりました。
つまり理由は3つです。論理的思考を楽しく鍛えたい。技術的なチャレンジをしたかった。何より面白そうだったから。
遊び心と技術的探究心が両方あったからこそ、最後までモチベーションを維持して完成できたプロジェクトだと思います。
#つくったもの
MCP ✖️ BLEで、どんなことでも弁論大会にできる【魔法の天秤】作ってみた!
https://www.youtube.com/watch?v=IoXSTlqXFxY
遊び方 ディベートに参加する2人が、天秤の前に立ちます。
片方は「太陽」を司る器、もう片方は「月」を司る器。 それぞれの器に、自分のビーバーを置きます。 魔法使いビーバーの声に導かれながら、交互に主張を述べます。
声に乗せた言葉は天秤に届き、審判が下されます。 全3回の「審判の儀」で、それぞれの論がどれだけ説得力を持っていたかが判定されます。
論理性、根拠の有無、表現力、戦略性…様々な観点から評価。 天秤はその結果に応じて傾きます。 最終審判では、全ラウンドを総合して大きく揺れ動き、最終結果を示します。
言葉が物理的に「天秤を動かす」瞬間は、見ている側も思わず笑ってしまう体験になります。
#技術スタック
#システム設計

論題はユーザーが提示しますが、そのままでは議論しづらい場合もあるため、まずGeminiが弁論しやすい形に加工します。そのうえで、司会進行もGeminiが担当します。
ユーザーの発言はSTTでテキスト化し、弁論の要点抽出や点数付けもGeminiで行っています。評価結果はMCPを経由し、BLE制御によって物理デバイスへ反映されます。つまり、言葉の説得力がそのまま天秤の傾きとして現れる構成です。
全体構成としては、FastAPI MCP Server、Gemini API、Nest.js、Next.jsの画面表示、TTS、STT、そしてBLE経由で接続されたM5Stack系デバイスやモーター、LEDが連携しています。
コアロジックをLLM側に持たせているため、プロンプトを変更するだけで、まったく違うゲーム内容に展開できるのも特徴です。たとえば英語版や中国語版などの多言語対応も、基本的にはプロンプトの変更によって実現できます。
##ハードウェア
ハードウェア側では、BLEを用いてモーターとLEDを制御しています。
天秤は構造上かなり大きなモーメントがかかるため、芯には金属、具体的にはアルミを使用しました。そのうえで、外装や装飾部分は3Dプリンターで制作しています。強度を担保する部分と、世界観を作る部分を分けることで、見た目と実用性の両方を成立させました。

モーターには高トルクBLDCモーターを使用しています。単に左右へ傾けるだけではなく、絶妙なトルク管理と位置制御を行うことで、自然な天秤の揺れのように見える動きを表現しました。

LEDには目の細かいフルカラーLEDを使用し、光が流れるような演出を入れています。これにより、ただ判定結果を表示するだけではなく、本当に魔法が流れているような体験になることを目指しました。
制御にはM5StackS3とM5 Dialを使用しています。LLMによる判断、MCP経由の指示、BLEによる物理制御を組み合わせることで、ソフトウェア上の判定が現実の天秤の動きとして立ち上がる仕組みにしています。
#おわりに
作っていて、今回のゲームのような遊びながらタスクをこなしていく世界は、ひょっとしたらもうすぐ近くまで来ているのではないかなとも思いました。
インタラクティブ性は非常に重要な要素だと考えているのですが、LLM(大規模言語モデル)の進化が進む中で、これまでにない新しい体験の中にこそ残されているのではないかと、考えるきっかけにもなりました。
また開発者目線では、メインロジックのコーディングこそがプロジェクト開発の核心だと信じていたのが、LLMとMCPという仕組みの前では、その考えは過去のものとなりつつあると感じました。
今後はMCPに接続することのできる各要素の充実(これはソフト・ハード限らず)が進んでいくことで、いよいよLLMで全てを制御できる世界が来てしまうかもしれないと感じます・・!