はじめに
まだ完成していませんが、これまで細々と実装してきたC言語用のMCPライブラリ。
ゴールがなんとなく見えてきたので、ここまで理解できてであろうまとめを。
MCPについて
今更すぎる内容ですが、改めてMCPについて簡単に整理してみます。
そもそもMCPは、どのように使われるもの?
最初の勘違いは、MCPサーバーはLLMから使われるものという理解。
必ずしも間違いではないとは思いますが、実際は、以下のような感じ。
LLMがMCPサーバーを直接呼び出すのではなく、アプリが仲介を行っている。
この辺りを良く理解しておらず、私は、LLMが対応してないんだなとか勘違いしておりました。
MCPクライアントとは?
アプリ側がMCPサーバーと通信するために使用するもの。
先ほどのシーケンスをもう少し丁寧に書くと...
アプリに組み込まれるライブラリと考えれば良いかと。
LLMについて
LLMを上手く動作させるためのポイント?
これも今更すぎる内容ですが。
ローカルのLLMだとMCPサーバーがどうにも上手く動作しないなぁ。このLLMは使えないのかな?
と勘違いしていたわけですが...
重要なのは、Context Length。
ChatGPTを使っているだけだと、まるでLLMがそれまでの話の内容を記憶して、チャットに付き合ってくれているように錯覚してしまいます。
ですが、LLMが私の事を覚えてくれているわけではなく、実際は毎回それまでの内容を全部送る。
LLMからの応答も含めて全部送る。
なんとも寂しい限りですが、当たり前といえば当たり前かもです。
で、話は戻りますが、という事は、メッセージが雪だるま的に大きくなってしまうわけで、Context Lengthが小さいと、会話が続きません。
私が、LLMがMCPサーバーに対応できてないと勘違いしていたのは、Context Lengthが原因だったかと思います。
なので、Context Lengthを増やすことで、ある程度動作するようになったりします。
ローカルLLMには限界があるとは思いますが、適度に会話の内容をリセットしてあげる。
以下のように、使用するMCPのツールの数を絞ってあげるなどすれば、動作させることができたりします。
LLMに現在時刻を教えてもらう
LLMに聞くと、何でも教えてくれるのですが、それは過去のことであり、現在や未来の事は分かりません。
なので、現在時刻を聞くと、ご丁寧にPCで時間を調べる方法や、ブラウザで調べる方法を教えてくれます。
MCPを使うことで、その限界を超えるわけです。
果てしない道のりです。
果てしない電気の無駄遣いです。
MCPクライアント、MCPサーバー、OpenAI API
MCPサーバーを作るということだけではなく、これらの要素を自分のアプリに組み込むことで、自分のアプリをAIに操作させることが可能になるのだと思います。
(※が、実際の所、それが目的なら、OpenAI APIのみで実現できるような気がしなくもありません。)
その結果、業務アプリ達は、これまでのような設定画面風なものではなく、たった一つの入力欄と、実行内容を確認する画面になるのでしょうか?
そして、いかに上手く命令すれば、自分の求める結果が得られるか、文章力や思考力が問われるような、そんな時代になるのでしょうか?
それはそれで、本末転倒な気もしますが...
おわりに
まだまだ作りこみは足りてませんが、先ほどの時間を調べる流れは実装し、動作確認することができました。
クライアント側の実装は、サーバー側に比べて非常に多く、先は長いですが、細々と実装は続けていけたら良いなと思います。
