導入
今回は、MCPを学びたいと思い学んでみたため、その記録的な感じで残しました!もし時間が許すようであれば読んでいってください!また、この記事自体は自分の理解したことをアウトプットしたりこういう勉強したってことをアピールするためのものなので、もしかすると間違っているところなどがあるかもしれませんのであくまで参考程度に読み、本当に正しい情報なのか?は確認することをお勧めします。
なぜMCPサーバーを学ぼうと思ったのか?
自分が、MCPを学ぼうと思ったきっかけは、シンプルにMCPをYoutubeで聴きまくっていたりして、なんとなくわかっているんだけど実装したこともないため、ちゃんと理解したいと日々思っていたのがきっかけでした。生きてるなかで自然と意識しちゃってたみたいな感じですね。なんかMCPってロマンあるなと笑(何言ってるか自分でもよくわかりません。)
自分の解釈としてのMCPサーバーとは?
自分の解釈としてはMCPサーバーとは、AIがAPIを叩ける仕組みだと思いました。正確には、無駄なくAPIを叩ける仕組みなのかなと思いました。例えば、私たちがAIにスラックに連絡しておいてといった時スラックへの書き込みをできるAPIをAI自身がMCPサーバーを通して間接的に叩けるという感じです。そして、無駄なくと言った理由は、AI自体がAPIを叩けないわけではないということです。しかし、APIをAIが叩く場合、いたずらにコンテキストウィンドウを圧迫してしまい、トークンの使用率が上がったり、速度や性能が早く低下したりしてしまうことが考えられるためです。それが起こってしまう理由は、膨大な説明書を読み込むためです。例えば、とあるAPIの仕様書をWebで見るとしましょう、そこには一つの機能ではなくたくさんの機能の説明が書かれています。スラックを例に挙げると、スラックに書き込む、読み込む、削除するなどの機能についての説明を全て読み込むイメージです。確かにこの程度なら問題はありませんが実際はものすごい膨大な量の説明書になります。従って、MCPサーバーを使うことで、必要に応じて必要なツールのみを読み込めるようにします。
MVPサーバー周辺の関係のイメージ
MCPサーバーの新たな問題
MCPサーバーが出てから各社がMCPを用意するようになりました。例えば、Notion,Gmail,Slack...といった感じです。こうなると、AIは常にたくさんのMCPに繋がっている状態になり結局コンテキストウィンドウが圧迫されるような状況になってしまいました。そこで、Tool Searchというものが出てきました。これは、ユーザーがやりたいことを伝え、それに合うMCPをまず検索して、そこからそのMCPに問い合わせをするという方法です。これにより常に全てのMCPと繋がっていなくとも必要に応じて使えるMCPを使うため、コンテキストウィンドウが圧迫されないというように、解決されました。
実際のやり取りの流れ
1.UserがAIにプロンプトを投げる。
2.AIがMCPサーバーの中にあるtoolのDocstringを参照し、そのツールが何をできるのかを見てユーザーの依頼を達成できるツールを選ぶ
3.選んだツールを実行してMCPを経由でAPIの特定のエンドポイントに対してリクエストを投げる。
4.リクエストを受け取ったAPIが処理を実行し、MCPにレスポンスを返す
5.MCPは受け取ったレスポンスをAIに返す
6.レスポンスを受け取ったAIはユーザーにチャットで最終結果を加工して返す。
7.ユーザーがそのレスポンス内容を確認する
今回作ってみたもの
今回はサプーさんの自作MCPを作成する動画( https://youtu.be/FpIKZvCMZNk )を参考にして在庫管理システムをAIから触れるものを作ってみました。
学習方法
1.自然と興味を持ちyoutubeでいろんなMCP動画を見る。(自然にやっていました。)
2.サプーさんの動画を見てできる限り自分で言語化しながら作ってみる
3.サプーさんの動画と自分で1週目で書いたコードを参考にどうやって作るのかのプロセスをコマンドメモ付きでまとめる
4.そのプロセスに従ってつまらずにプロセス見ながらスラスラ説明しながら作れるようになるまで、追加で2周してある程度すらすら作れるようになったため終了
5.4までの内容をこのブログでまとめて最終アウトプット
やって思ったこと
- 普段触るような有名なサービスはたいていMCPがあるので、実装してみたいと思いつつも必要になることがなくて実際にMCPを使って作る経験をしたいなーと思ってます。
- MCPってめっちゃシンプルな仕組みでした。もっと複雑で難しいものとずっと思ってました笑!
