珂遺永の児云議な碧怏み

n-ozawan

峻さん、こんにちは。晦永蝕kグル`プの稼-看噛温敬温稼です。
イラン猟晒では敢蛍の晩をノウル`ズと冱い、イラン靴淋晩に乎輝します。

云籾です。
MCP (Model Context Protocol) は、伏撹AI (LLM) と翌何リソ`スやツ`ルを俊Aするための片ク顳┘廛蹈肇灰襭です。その碧Mみはどうなっているのでしょうか申饂悗浪儖箟覆諒没蕕澆砲弔い討里です。

珂遺永の碧怏み

サ`バ`とクライアント

珂遺永はクライアント?サ`バ`侏で強恬します。畜に冱うならば、珂遺永ホスト、珂遺永クライアント、珂遺永サ`バ`の3つの更夛となっています。

MCPホストは伏撹AIが嘛するh廠┘▲廛蝪であり、VS CodeやClaude Desktopなどが輝します。MCPホストはユ`ザ`からの峺幣を鞭け函り、MCPクライアントを宥じて、MCPサ`バ`が戻工する光Nサ`ビスをg佩させます。宥佚する珂遺永サ`バ`は}方あり、MCPホストはMCPサ`バ`ごとにMCPクライアントを恬撹し、それらを砿尖します。

珂遺永クライアントは珂遺永ホストと珂遺永サ`バ`を播局しするコンポ`ネントです。伏撹粥鴛からの凋綜を鞭けて、珂遺永サ`バ`を宥して翌何粥永鴛やロ`カルファイルへアクセスし、潤惚を粥鴛へ卦します。

珂遺永サ`バ`は伏撹粥鴛にリソ`スや字嬬を戻工するコンポ`ネントです。珂遺永サ`バ`は鬉垢詬皺織轡好謄爐瓦箸帽講します。箭えば赫庄岳堰顎恢へのアクセスや荷恬を辛嬬するための珂遺永サ`バ`、などです。また、仝サ`バ`々と療くとクラウド貧に更廏されたものと誅颪靴泙垢、g縞の謹くはロ`カル桟廠で珂遺永サ`バ`を強恬させます。念指、糸姻温敬.庄看の珂遺永を聞ってみましたが、あれはロ`カル桟廠に糸姻温敬.庄看喘の珂遺永サ`バ`が強恬しています。

JSON-RPC

MCPクライアントと珂遺永サ`バ`はJSON-RPCというク颪罵佚を佩います。RPCとは、Remote Procedure Call の待で、ネットワ`ク貧のeのコンピュ`タで嘛するプログラムv方やメソッドを、返圷のプログラムから岷俊柵び竃してg佩させるプロトコルです。JSON-PRCとは、そんなRPCをJSONで宥佚するプロトコルです。

箭えば、珂遺永クライアントは參和のような干皆或鰻を、珂遺永サ`バ`へ僕佚します。

{
  "jsonrpc": "2.0",         // JSONRPC のバ`ジョン
  "Id": 1,                  // Re徨
  "method": "tools/call",   // ツ`ルのg佩
  "params": {               // 哈方
    "name": "example",
    "arguments": {
      "query": "hello world!"
    }
  }
}

珂遺永サ`バ`は鞭け函った干皆或鰻の坪否を圷にI尖をg佩します。そしてそのI尖が撹孔した魁栽、參和のようなレスポンスを珂遺永クライアントへ卦抜します。

{
  "jsonrpc": "2.0",         // JSON-RPC のバ`ジョン
  "id": 1,                  // Re徨┘螢エストと揖じ桑催がO協される
  "result": {               // I尖が撹孔した栽のY惚
    "content": [
      {
        "type": "text", 
        "text": "hello world!", 
      }
    ]
  }
}

珂遺永サ`バ`の児云字嬬

珂遺永サ`バ`にはプリミティブと柵ばれる3つの児云字嬬があります。

ツ`ル

ツ`ルは、伏撹粥鴛が翌何システムと銭亊して、採かしらのI尖をg佩するための字嬬です。

珂遺永クライアントは、珂遺永サ`バ`がどんなツ`ルを戻工しているのかを諒い栽わせます。その縞は、"method": "tools/list"のリクエストを僕佚します。

{
  "jsonrpc": "2.0",         // JSONRPC のバ`ジョン
  "id": 1,                  // Re徨
  "method": "tools/list",   // MCPサ`バ`が戻工するツ`ルの匯Eを函誼
  "params": {}              // 哈方
}

珂遺永サ`バ`は"method": "tools/list"のリクエストにして、旋喘辛嬬なツ`ルの秤烏をレスポンスします。參和のレスポンスでは、fetch_pageというツ`ルが戻工されていることが蛍かります。

{
  "jsonrpc": "2.0",         // JSON-RPC のバ`ジョン
  "id": 1,                  // Re徨
  "result": {               // ツ`ルの匯Eを卦抜する
    "tools": [
      {
        "name": "fetch_page",  // ツ`ル兆
        "inputSchema": { 
          "type": "object",
          "required": ["url"] 
        }
      }
    ]
  }
}

そのレスポンスから、伏撹粥鴛は聞喘するツ`ルを登僅して、珂遺永クライアントがそのツ`ルをg佩するリクエストを僕佚します。

{
  "jsonrpc": "2.0",         // JSONRPC のバ`ジョン
  "id": 1,                  // Re徨
  "method": "tools/call",   // MCPサ`バ`が戻工するツ`ルをg佩
  "params": {               // 哈方
    "name": "fetch_page",   // g佩したいツ`ル兆
    "arguments": {
      "url": ""
    }
  }
}

リソ`ス

リソ`スは、伏撹粥鴛が翌何システムが隔つリソ`スを函誼するための字嬬です。

珂遺永クライアントは、珂遺永サ`バ`からどのようなリソ`スを函誼できるのかを諒い栽わせます。その縞は、"method": "resources/list"のリクエストを僕佚します。

{
  "jsonrpc": "2.0",             // JSONRPC のバ`ジョン
  "id": 1,                      // Re徨
  "method": "resources/list",   // リソ`スの匯Eを函誼
  "params": {}                  // 哈方
}

珂遺永サ`バ`は"method": "resources/list"のリクエストにして、函誼辛嬬なリソ`スをレスポンスします。參和のレスポンスでは、file:///example/README.mdというリソ`スが函誼辛嬬であることがわかります。

{
  "jsonrpc": "2.0",         // JSON-RPC のバ`ジョン
  "id": 1,                  // Re徨
  "result": {               // リソ`スの匯Eを卦抜する
    "resources": [
      {
        "uri": "file:///example/README.md",
        "mimeType": "text/markdown"
      }
    ]
  }
}

そのレスポンスから、伏撹粥鴛は珂遺永クライアントを宥して、翌何システムのリソ`スを函誼するリクエストを僕佚します。

{
  "jsonrpc": "2.0",             // JSONRPC のバ`ジョン
  "id": 1,                      // Re徨
  "method": "resources/read",   // リソ`スの函誼
  "params": {                   // 哈方
    "uri": "file:///example/README.md"
  }
}

プロンプト

プロンプトは、よく聞う峺幣や嵎諒┘廛蹈鵐廛硲の侘塀を嚠め喘吭しておく仝テンプレ`ト々です。I尖した潤惚や函誼したリソ`スを伏撹粥鴛が嗤浸醵辰垢襪燭瓩砲蓮△修譴吠覆靴織廛蹈鵐廛箸駅勣です。そのようなプロンプトを珂遺永サ`バ`から函誼することができます。プロンプトのありなしや、その坪否によっては伏撹粥鴛の娼業が寄きく笋錣辰討ますので、珂遺永サ`バ`からプロンプトを戻工することで、芦協した娼業を鳩隠します。

珂遺永クライアントとの宥佚はツ`ルやリソ`スとほぼ揖じで、"method": "prompts/list"でプロンプトの匯Eを函誼し、"method": "prompts/get"でプロンプトを函誼します。

おわりに

珂遺永は粥鴛にvSするプロトコルですので、鹸jで佃しい咫鵑鯤椶韻討い泙靴燭、吭翌とシンプルな碧でした。

書指は珂遺永クライアントから珂遺永サ`バ`への宥佚をあげましたが、その剃で、珂遺永サ`バ`から珂遺永クライアントへの宥佚もあります。ファイルの茅など、云輝にその荷恬をしても措いのか燭肇罘`ザ`に鳩範するために、珂遺永サ`バ`から珂遺永クライアントへ諒い栽わせます。

ではまた。


Recommendおすすめブログ