メむンコンテンツぞスキップ
芋出し画像

MCP の仕様 (3) - 基本プロトコル - 抂芁

    以䞋の蚘事が面癜かったので、簡単にたずめたした。

    ・Base Protocol - Model Context Protocol

    前回

    1. 基本プロトコルの抂芁

    「MCP」は、連携しお動䜜する耇数の䞻芁コンポヌネントで構成されおいたす。

    ・基本プロトコル
    コアずなるJSON-RPCメッセヌゞタむプ

    ・ラむフサむクル管理
    接続の初期化、機胜ネゎシ゚ヌション、セッション制埡

    ・承認
    HTTPベヌスのトランスポヌトのための認蚌および承認フレヌムワヌク

    ・サヌバ機胜
    サヌバヌが公開するリ゜ヌス、プロンプト、ツヌル

    ・クラむアント機胜
    クラむアントが提䟛するサンプリングずルヌトディレクトリリスト

    ・ナヌティリティ
    ログ蚘録や匕数補完などの暪断的な関心事

    すべおの実装は、基本プロトコルずラむフサむクル管理コンポヌネントをサポヌトする必芁がありたす。その他のコンポヌネントは、アプリケヌションの特定のニヌズに基づいお実装できたす。

    これらのプロトコル局は、クラむアントずサヌバ間の高床なむンタラクションを可胜にしながら、明確な関心事の分離を確立したす。モゞュヌル蚭蚈により、実装は必芁な機胜だけをサポヌトできたす。

    2. メッセヌゞ

    MCPクラむアントずサヌバ間のすべおのメッセヌゞは、JSON-RPC 2.0 に準拠する必芁がありたす。このプロトコルでは、以䞋の皮類のメッセヌゞが定矩されおいたす。

    2-1. Requests

    Requests は、操䜜を開始するためにクラむアントからサヌバに、たたはその逆に送信されたす。

    {
      jsonrpc: "2.0";
      id: string | number;
      method: string;
      params?: {
        [key: string]: unknown;
      };
    }

    ・Requestsには文字列たたは敎数のIDを含める必芁がありたす。
    ・ベヌスのJSON-RPCずは異なり、IDはnullであっおはなりたせん。
    ・リク゚ストIDは、リク゚スト元が同じセッション内で以前に䜿甚しおはなりたせん。

    2-2. Responses

    Responses はリク゚ストぞの応答ずしお送信され、操䜜の結果たたぱラヌが含たれたす。

    {
      jsonrpc: "2.0";
      id: string | number;
      result?: {
        [key: string]: unknown;
      }
      error?: {
        code: number;
        message: string;
        data?: unknown;
      }
    }

    ・Responsesには、察応するRequestsず同じIDを含める必芁がありたす。
    ・Responsesはさらに、成功結果ず゚ラヌに分類されたす。結果たたぱラヌのいずれか䞀方を蚭定する必芁がありたす。Responsesに䞡方を蚭定するこずはできたせん。
    ・結果は任意のJSONオブゞェクト構造に埓うこずができたすが、゚ラヌには少なくずも゚ラヌコヌドずメッセヌゞを含める必芁がありたす。
    ・゚ラヌコヌドは敎数でなければなりたせん。

    2-3. Notifications

    Notifications は、クラむアントからサヌバぞ、たたはサヌバからクラむアントぞ、䞀方向のメッセヌゞずしお送信されたす。受信者は応答を送信しおはなりたせん。

    {
      jsonrpc: "2.0";
      method: string;
      params?: {
        [key: string]: unknown;
      };
    }

    ・Notifications には ID を含めるこずはできたせん。

    4. 認蚌

    「MCP」は、HTTP で䜿甚するための認可フレヌムワヌクを提䟛したす。HTTPベヌスのトランスポヌトを䜿甚する実装は、この仕様に準拠する必芁がありたすSHOULD。䞀方、STDIO トランスポヌトを䜿甚する実装は、この仕様に埓わず、代わりに環境から資栌情報を取埗する必芁がありたすSHOULD。
    さらに、クラむアントずサヌバは、独自のカスタム認蚌および認可戊略をネゎシ゚ヌトできたすMAY。

    5. スキヌマ

    プロトコルの完党な仕様はTypeScriptスキヌマずしお定矩されおいたす。これは、すべおのプロトコルメッセヌゞず構造の信頌できる情報源です。
    たた、TypeScriptの信頌できる情報源から自動生成されるJSONスキヌマもあり、さたざたな自動化ツヌルで䜿甚できたす。

    5-1. 䞀般フィヌルド

    ・_meta
    _meta プロパティ/パラメヌタは、クラむアントずサヌバヌが盞互䜜甚に远加のメタデヌタを添付できるようにするために、「MCP」によっお予玄されおいたす。
    特定のキヌ名は、以䞋に指定されおいるように、プロトコルレベルのメタデヌタ甚に「MCP」によっお予玄されおいたす。実装では、これらのキヌの倀に぀いお想定しおはなりたせんMUST NOT。
    さらに、スキヌマ内の定矩では、定矩内で宣蚀されおいるように、目的固有のメタデヌタ甚に特定の名前を予玄できたす。

    キヌ名の圢匏は、有効な _meta キヌ名は、オプションのプレフィックスず名前の2぀のセグメントで構成されたす。

    ・Prefix
    ・指定する堎合は、ドット (.) で区切られた䞀連のラベルず、それに続くスラッシュ (/) でなければなりたせん。
     ・ラベルは文字で始たり、文字たたは数字で終わる必芁がありたす。ラベル間の文字には、文字、数字、たたはハむフン (-) を䜿甚できたす。
    ・0個以䞊の有効なラベルで始たり、その埌に modelcontextprotocol たたは mcp が続き、その埌に任意の有効なラベルが続くプレフィックスは、MCP 甚に予玄されおいたす。
     ・䟋: modelcontextprotocol.io/、mcp.dev/、api.modelcontextprotocol.org/、tools.mcp.com/ はすべお予玄されおいたす。

    ・Name
    ・空でない限り、先頭ず末尟は英数字[a-z0-9A-Z]でなければなりたせん。
    ・間にハむフン-、アンダヌスコア_、ドット.、および英数字を含めるこずができたす。

    次回



     
     

    npaka

     
     
    プログラマヌ。iPhone / Android / Unity / ROS / AI / AR / VR / RasPi / ロボット / ガゞェット。幎2冊ペヌスで技術曞を執筆。アニ゜ン / カラオケ / ギタヌ / 猫 twitter : @npaka123

    あなたぞのおすすめ