はてなブログを見ればMCPMCPと盛り上がっているよう?なので管轄外ではありますが、興味を持った今日この頃。
久しぶりに時間もあるので時代に取り残されないように調べてみました。
MCPってなんぞ?
ModelContextProtocol直訳したらモデルの文脈に関する手順って意味になりますが、全くその通りっぽくて
AIアシスタントが、外部データやツールにアクセスするための共通ルールのことを指している
MCPを使用することでAI <-> データ・ツールの接続方式を標準化することができるっぽい
共通ルールについて知る
MCPについて軽く理解をする上で以下のルールは知っておかないといけない
-
共通言語はJSON-RPC
例えば多国籍な人らと会議することになったら必要となるルールが共通言語。英語で話そう!というようにMCPではJSON-RPCでやり取りしよう!ってなっている -
initializeの役割
クライアントがサーバーに呼びかけを行う際には必ずInitializeというメソッドを送る
状況としては「自分の持っている機能を持っているよ!!」と「どんな機能を持っている??」というような自己紹介をしているみたいです -
1.2.のフローが終わった後
初期化が終わると、登録された関数の呼び出しだったり、何でもかんでも楽しめるらしい
理解すべき概念
MCPはHost/Client/Server/の三つの役割で成り立っています。
まず、ホストが複数のクライアントを作成します
次に作成されたクライアントがサーバーと1on1で通信を行い、AI機能を拡張させているという構造になっています。
適当に参考にしてきて書いた(こんな感じらしい)
Host
ホストは軸の部分で以下の役割を持っている
・クライアントの作成と管理
・AIとの連携と指示
・複数のサーバーから仕入れた情報をもとに最適化を行う
Client
クライアントは特定サーバーとセッションすることを役割としている
・1クライアントにつきサーバーは一つという制限
それぞれ、DBサーバー用のクライアント・gitやファイルについてのクライアントなど一つのクライアントには一つしか役割を与えることができない。
・JSON-RPCで通信を行う
・通知やイベントに対応する
サーバーから受け取ったログや通知はクライアント側で受付、必要に応じてホストにフィードバックを行う。
Server
サーバーはAIが活用できる機能やデータを公開する役割
- ツールなどの提供
例えば、データベースの照会・ファイルの更新など色々な機能をエンドポイントとして公開してそれぞれはクライアントによって呼び出される - ホストや他のサーバーにアクセスすることはできない
セキュリティを高い水準で保持するためにもあくまでクライアントの属人化のような役割でいる
そのため、他サーバーや内部データに触れることはできない
土日は結局暇になるんで実際に作ってみます(ハナホジ)