Komunikacja Client - Server

Z MCP Wiki

Przebieg rozmowy między klientem a serwerem MCP

1. Klient: „Hej, zaczynamy!”

{
  "method": "initialize",
  "params": {
    "protocolVersion": "2025-06-18",
    "capabilities": {
      "roots": {}
    },
    "clientInfo": {
      "name": "claude-code",
      "version": "1.0.38"
    }
  },
  "jsonrpc": "2.0",
  "id": 0
}

Opis: Klient mówi: „Siema serwer, chcę pogadać w wersji 2025-06-18. Oto, co potrafię – dasz znać, co u Ciebie?”

2. Serwer: „No hej, oto co umiem”

{
  "jsonrpc": "2.0",
  "id": 0,
  "result": {
    "protocolVersion": "2025-06-18",
    "capabilities": {
      "experimental": {},
      "prompts": {
        "listChanged": false
      },
      "resources": {
        "subscribe": false,
        "listChanged": false
      },
      "tools": {
        "listChanged": true
      }
    },
    "serverInfo": {
      "name": "simple-server",
      "version": "1.10.1"
    }
  }
}

Opis: Serwer odpowiada: „Spoko, też działam na wersji 2025-06-18. Lista narzędzi, zasobów i promptów jest stała – nie będzie tu niespodzianek. No i nie obsługuję subskrypcji zmian w plikach. Za to jak sie toole zmienia lub dojda nowe, zostaniesz poinformowany.”

3. Klient: „Dobra, gotowy do pracy”

{
  "method": "notifications/initialized",
  "jsonrpc": "2.0"
}

Opis: Klient mówi: „Jestem gotów, lecimy z tematem.”

4. Klient: „Pokaż, co masz za narzędzia”

{
  "method": "tools/list",
  "jsonrpc": "2.0",
  "id": 1
}

Opis: Klient zagląda do skrzynki z narzędziami: „Masz jakieś młotki albo inne zabawki?”

5. Klient: „A jakie masz zasoby?”

{
  "method": "resources/list",
  "jsonrpc": "2.0",
  "id": 3
}

Opis: „Masz może jakieś pliki, URI, coś do pobrania?”

6. Klient: „A gotowe prompty też dajesz?”

{
  "method": "prompts/list",
  "jsonrpc": "2.0",
  "id": 2
}

Opis: „Może masz gotowe teksty, które mógłbym wykorzystać?”

7. Serwer: „Zasoby? Pusto.”

{
  "jsonrpc": "2.0",
  "id": 3,
  "result": {
    "resources": []
  }
}

Opis: „Sorry, nie mam żadnych zasobów na tę chwilę.”

8. Serwer: „Mam tylko jedno narzędzie – get_current_date”

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "tools": [
      {
        "name": "get_current_date",
        "description": "Get current date and time.",
        "inputSchema": {
          "properties": {},
          "title": "get_current_dateArguments",
          "type": "object"
        },
        "outputSchema": {
          "properties": {
            "result": {
              "title": "Result",
              "type": "string"
            }
          },
          "required": ["result"],
          "title": "get_current_dateOutput",
          "type": "object"
        }
      }
    ]
  }
}

Opis: „Mam tylko jedno narzędzie: takie, które mówi, która jest godzina.”

9. Serwer: „Promptów też nie mam.”

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "prompts": []
  }
}

Opis: „Niestety, żadnych gotowych tekstów na dziś nie mam.”