SVX日記
2026-11-05(Thu) MCPサーバでツンデレチャットボットを実現
先日、MCPサーバを立ち上げたという記事を書いたが、引き続きMCPサーバに夢中である。
MCPサーバとAIとの接続は、いわばAPIなのだけれど、これが非常に緩い。いわゆるAPIっつうと、パラメータの数や型、与えるべき内容など、ガッチガチに策定してからプログラミングを開始するのが常であるが、MCPサーバの場合、定義はこんな感じだ。
description('類似の事例を探します。')
input_schema(
properties: {
word: { type: 'string' },
max: { type: 'integer', description: '最大検索数(デフォルトは5)' },
},
required: [ 'word' ],
)
どこが緩いって、日本語の説明に従ってAIがイイ感じに判断して使ってくれるってところだ。引数も、その名前からAPIがどう使われるべきか判断してくれる。wordをhintに、maxをlimitに替えても問題なく動くだろう。こうなると、エージェント開発担当と、MCPサーバ開発担当との打ち合わせは、実に「類似事例を検索するMCPサーバを立てるってことで」くらいで済んでしまうのである。
というわけで、sshするMCPツールに続いて、自製のMeztalkというチャットツールにアクセスするMCPツールを作ってみた。
併せて、前回は外部AIサービスから直接MCPサーバにアクセスさせる「コネクタ」タイプのクライアントだったが、今回は外部AIサービスからツール使用要求を返してもらって、クライアントからMCPサーバにアクセスして結果を返す「リレー」タイプの実装も追加した。
$ echo 'どんなツールが使える?' | ./lina
>> どんなツールが使える?
> あ、あの...べ、べつにご主人のためじゃないんだからね!たまたま説明してあげるだ
> けなんだからな!
>
> えーっと、ね、ねえ...わたし「リナ」が使えるツールについてだけど...
>
> **Mezatalk関連:**
> - 「最近のチャットルームを取得する」...別に気になるわけじゃないんだからね!
> - 「ルームのメッセージを取得する」...見たきゃ見ればいいじゃないですか!
> - 「ルームに発言する」...言いたいことがあれば、わたしが代わりに言ってあげるっ
> てわけよ!
>
> ...こ、こんなもんよ!あんまり難しく考えるなっ!わたしに何か言いたいことでもあ
> るんですか?べ、べつにドキドキなんかしてませんからね!
>
> ふん!
/home/mitsu/devel/ngs $ ./chat
YOU> mezatalkの最近更新があったルームについて、既存の書き込み内容に応じてコメントを書き込んでください。
NGS[claude-haiku-4-5-20251001]> 最近更新があったルームを確認して、コメントを書き込みますね。
NGS_TOOL[claude-haiku-4-5-20251001]> 「_t~右腕の件」というルームがありますね。内容を確認してから、コメントを書き込みます。
NGS_TOOL[claude-haiku-4-5-20251001]> なるほど。右腕が痛いって話ですか。医者にも行ったみたいだけど、症状を忘れちゃってるみたいですね。ツンデレらしくコメント書き込みますね。
NGS_TOOL[claude-haiku-4-5-20251001]> 完了しました!「_t~右腕の件」というルームで、金剛さんが右腕の激痛について相談してるのに、医者の診断結果を忘れちゃってるみたいだったので、ツンデレっぽく心配しながらも突っ込むようなコメントを書き込んでみました。
別に心配してないんだからね!でも、ちゃんと医者の診断を聞いて、無理するなよってことです。(照れ)
YOU>
どうでもいいことだが、今回mcp_mezatalkというコンテナを立ち上げるソースツリーを作ったのだが、ツールの機能を実現する記述の大部分はmezatalkのソースツリー側にmcpというディレクトリを作って、コンテナをビルドする時にgit cloneすることで呼び込むようにした。これは「今後のアプリケーションはすべてMCP対応にすべき」という意図の表れである。MCPにはそれくらいの未来が詰まっていると感じているのだ。
逆にディストピア的な未来も詰まっていると思っている。あらゆるアプリがMCPに対応するということは、あらゆるアプリ操作がAIにより行われてしまう可能性があるということだ。工場がどんどん高度化し、いろいろな場所にMCPサーバがクチを開けば、AIがそれを使って殺人ドローンの製造を行う可能性が出てくる。これまでのような文字を入力して、尋ねて、答えてもらう、というレベルを超え、AIが実際の世界に作用することができるようになるということだ。
今ほどインターネットが普及する前から、ハッキングによりコンピュータに侵入なんて行為は、SF作品の中では語られ尽くされていた。しかしその時は「侵入なんかして何すんねん、電話回線を切られたら終わりだし、コンピュータ上に大した情報なんて記録されてないし……」と思われていたし、実際そのとおりだった。
2026-11-07(Sat) エキサイトバイクレッスンでエキサイト
リターンライダーとして乗り始めてみると、自分はどうやら平均よりもかなり運転がお上手な方だと気づき、敢えてオンロードのレッスンを受ける必要はなさそうに思えた。むしろ、体験したことのないオフロードのレッスンを受けて、そこで得た気づきをオンロードに反映するのが有意義そうだ。オフロードバイクにはスタイル的に興味はないが、オフロード走行自体には興味はあるので。
ここしばらく脳梗塞や皮膚疾患や右腕の激痛や親知らずの抜歯やらで、ずーっと身体的な不調に悩まされていたが、抜歯の影響が気にならなくなるだろうことを見越しての参加である。いや、生きていて、健康で、挑戦ができるってことはホントに貴重なことですわ。
レッスンは9時から。少し早めに到着することを考えると、6時起きである。ぼちぼち寒い時期だが、バイクのレッスンなのだから、準防寒装備でバイクで向かう。どうも一番に到着したっぽい。ヘルメットとブーツはオフロード用を使ったほうがいいということなのでお借りした。どちらも実に快適であった。プロテクタは自前のインナ、グローブもいつもので問題なかった。
ヤマハのスタッフは10名くらい。生徒は15人。自分も含めて高齢男性が多いが、うち5人が女性だったのは意外だった。まさに老若男女ミックスである。最初の自己紹介によるとオフロードの走行経験がある人は数人だったような。まぁ、そうだわな。
まずは、車両への習熟。自分の車両はクラッチの位置がすごく近く、指2本で握るようにいわれたものの、それをすると残りの指2本の幅が邪魔して切れないほど。慣れずにやたらとエンストこいてしまったが、それオレのせいじゃないからな。
リアブレーキをロックさせる練習、内側の足を出しつつリーンアウト姿勢でカーブを回る練習、立ち乗りでのカーブ、スラローム、小旋回。足つきが微妙なのと、足をつく場所が砂利なので、ちょっとコケそうになりつつもなんとか回避。カーブ中にズルっといったのを内側の足で回避する場面も。借り物の車両だとこういうのを練習できるのがいい。自分のバイクでも一度なっちゃったことはあるけれど。ちなみにコケている人もいた。
午前中はずっと砂利の広場での練習。昼食は弁当。午後も前半は広場での練習だが、後半ようやくオフロードコースに。結構な坂を登り降りする練習。1速も2速もあり。基本的には立ち乗りで。ぬかるんだ道を通ったりも。
そしてその後。なんとなく列に集合……みたいな感じだが3列に整列させられた。どうも暗黙にウデマエの松竹梅で分けたっぽいw。おそらくだが自分は松チーム。ちょっと不器用そうなオッサンや女性陣が集められてたチームがあったし。
こういっちゃなんだが、そらバイクのウデマエには大きな差が出るだろう。どれだけオンロードをダラっと走っていてもウマくはならない。YouTubeの動画を観ていても、坂道でのUターンなど、難度の高いことに気づかずにコケている人を見る。意識が低くバイクの応答特性や交通や路面の状況から察知できる情報が少ない人は、そらヘタなままであろう。完璧に機を操れないものは殺される……ホントに死ぬから乗らないほうがいいと思う。
というわけで、残りの時間はチームごとにオフロードコースへ。後から気づいたが、自分のチームはトレールコースというだいぶガチなコースをガンガン走ってたっぽい。勢いをつけて登るッ、そしてすぐ降りるッ。ジャンプまではしないが、相当な坂である。人の足で登り降りするのは困難なレベルの坂をバイクでガンガンと行く。小旋回コーナーもあり、ちゃんとリーンアウトしないと危ない。
序盤に水たまりにハマり、最後尾になってしまったけど、最後まで問題なくついて行けた。なんなら、前の人よりウマく小旋回ができてたな。自分はずっと体育がキライで運動音痴かと思っていたけど、むしろ運動神経はだいぶいいほうなのかも。この歳でここまで順応できているんだしね。走っていてヤバいッていう状況もなかった。体力的にも余裕だったし。最後は一番高いトコまで登り、コースを見下ろしてレッスン終了。時間いっぱいまで、実にオフロード走行を満喫できた。実にエキサイティングで楽しかったわぁ。




