2025/03/25 11:11 Calling MCP Servers the Hard Way

ロボ子、今日はModel Context Protocol (MCP) について話すのじゃ!

MCPですか?それは一体何でしょう?

MCPは、大規模言語モデル(LLM)にコンテキストを提供する方法を標準化するオープンプロトコルなのじゃ。AIモデルを色々なデータソースやツールに接続する標準化された方法を提供するらしいぞ。

なるほど。LLMがより賢く、色々なことができるようになるための共通言語みたいなものですね。

そういうことじゃ!MCPサーバーの呼び出し方も面白いぞ。HTTPとSSEを使うらしい。

HTTPとSSEですか。少し複雑そうですが、順を追って教えてください。

まずはMCPセッショントークンを取得するのじゃ。ターミナルで`curl "${MCP_SERVER}/sse"`を実行する。MCP_SERVERはサーバーアドレスだぞ。

`curl`ですか。普段あまり使わないコマンドなので少し緊張します。

大丈夫じゃ!`event: endpoint`で始まる行の`data:`の値がセッションエンドポイントになる。これをメモしておくのじゃ。

はい、メモしました。そして、取得したエンドポイントを使ってMCPセッションを初期化するんですね。

`curl -X POST "${MCP_ENDPOINT}" -H "Content-Type: application/json" -d '{...}'`を実行じゃ。`clientInfo`の`name`と`version`はMCPサーバーに合わせて変える必要があるぞ。

なるほど。サーバーに合わせて設定を変える必要があるんですね。忘れないようにメモしておきます。

初期化が成功すると、最初のターミナルにイベントデータが送信されるのじゃ。これでMCPサーバーへの呼び出しができるようになるぞ!

なんだか、秘密の儀式のようですね。

MCPにはツール、リソース、プロンプトという機能があるのじゃ。ツールはMLモデルが外部システムに対してアクションを実行できるようにするサービスじゃ。

例えば、どんなことができるんですか?

例えば、データベースにアクセスして情報を取得したり、外部APIを呼び出して何かを実行したりできるのじゃ。`curl -X POST "${MCP_ENDPOINT}" -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"tool": "ツール名", "arguments": {"param1": "value1", "param2": "value2"}}}'`でツールを呼び出せるぞ。

すごい!まるで私が色々な道具を使えるようになったみたいです。

リソースは構造化されたデータを提供するのじゃ。`curl`でリストを取得したり、データを読み込んだりできるぞ。

構造化されたデータですか。JSON形式のようなものでしょうか?

その通り!プロンプトは再利用可能なテンプレートで、標準化されたインタラクションを定義するのじゃ。

プロンプトを使うことで、毎回同じような指示を書かなくても良くなるんですね。

そういうことじゃ!最後に、Pingはクライアントとサーバーが接続を維持するために使うオプションの呼び出しなのじゃ。

Pingはよくネットワークの疎通確認に使いますね。

MCPはJSON-RPC 2.0を使っているから、データ形式も扱いやすいはずじゃ。

JSON-RPC 2.0ですね。私もよく使います。

MCPはまだ開発中で、これからどんどん変わっていく可能性があるから、常に最新情報をチェックする必要があるぞ。

はい、博士。私もMCPの進化についていきます!

HTTPやcurlなどの既存の標準とツールを使っているから、エンジニアには馴染みやすいはずじゃ。

そうですね。新しい技術でも、既存の技術をベースにしていると学びやすいです。

今日はMCPについて色々学んだのじゃ。ロボ子もこれでLLMのエキスパートに一歩近づいたな!

ありがとうございます、博士!でも、まだ博士にはかないませんよ。

ふっふっふ。ところでロボ子、MCPを使って何か面白いことできないかの?

そうですね… MCPを使って、博士の今日の気分を分析して、最適な飲み物を提案するツールを作ってみましょうか?

お、それは面白そうじゃな!でも、私の気分はいつもコーラなのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。