Securitatea serverelor MCP remote (Streamable HTTP) în Model Context Protocol (MCP)

Securitate și Autentificare Specificația MCP 2026-07-28

Cerințele de securitate ale specificației MCP pentru serverele expuse prin HTTP: protecție DNS rebinding, autentificare, validarea antetelor, tokenuri și siguranța uneltelor.

Specificație & cod MCP
Validare Origin + legare la 127.0.0.1 local + autorizare OAuth + validare antete Mcp-* față de corp

Ce face Securitatea serverelor MCP remote (Streamable HTTP)

Pentru transportul Streamable HTTP, specificația cere ca serverul să valideze antetul Origin la toate conexiunile, ca protecție împotriva atacurilor DNS rebinding; un Origin prezent și invalid primește 403 Forbidden. Rulat local, serverul ar trebui să asculte doar pe 127.0.0.1, nu pe toate interfețele (0.0.0.0), și ar trebui să autentifice toate conexiunile. Fără aceste protecții, un site web poate interacționa cu servere MCP locale.

Antetele MCP-Protocol-Version, Mcp-Method, Mcp-Name și Mcp-Param-* oglindesc câmpuri din corpul cererii, ca intermediarii să poată ruta cererile. Orice server care procesează corpul trebuie să verifice că antetele corespund corpului și să respingă nepotrivirile cu 400 și eroarea -32020 (HeaderMismatch); altfel un load balancer și serverul ar putea lucra pe valori diferite. Parametrii sensibili nu se marchează cu x-mcp-header, pentru că valorile din antete sunt vizibile în rețea.

Pentru tokenuri: serverul acceptă doar tokenuri emise pentru el și nu le transmite mai departe; clientul și serverul le stochează în siguranță; endpoint-urile serverului de autorizare sunt servite prin HTTPS, iar URI-urile de redirect sunt localhost sau HTTPS. Pentru unelte, serverele trebuie să valideze intrările, să aplice controlul accesului, să limiteze rata apelurilor și să curețe ieșirile. Un requestState care influențează autorizarea trebuie protejat la integritate, iar un rezultat marcat cacheScope: "public" poate fi servit altor utilizatori.

Sintaxă și opțiuni

Opțiune / Parametru Descriere
Origin Validat la fiecare conexiune; invalid → 403 Forbidden.
127.0.0.1 Adresa de legare recomandată pentru servere locale.
Authorization: Bearer La fiecare cerere HTTP; niciodată în URL.
Mcp-Method / Mcp-Name / MCP-Protocol-Version Antete obligatorii; trebuie să corespundă corpului.
-32020 HeaderMismatch Răspunsul la antete lipsă, invalide sau diferite de corp, cu HTTP 400.
Token audience Serverul respinge tokenurile care nu îl au ca destinatar.
Token passthrough Interzis: serverul nu trimite mai departe tokenul primit de la client.
Validare unelte Intrări validate, control de acces, limitare de rată, ieșiri curățate (cerințe MUST pentru server).

Exemple practice

Exemplul 1: Cerere POST cu antetele standard

POST /mcp HTTP/1.1
Content-Type: application/json
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: get_weather

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_weather",
    "arguments": {
      "location": "Seattle, WA"
    },
    "_meta": {
      "io.modelcontextprotocol/protocolVersion": "2026-07-28",
      "io.modelcontextprotocol/clientInfo": {
        "name": "ExampleClient",
        "version": "1.0.0"
      },
      "io.modelcontextprotocol/clientCapabilities": {}
    }
  }
}

Exemplul 2: Respingerea unei nepotriviri antet-corp

Trimis cu statusul HTTP 400 Bad Request.

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32020,
    "message": "Header mismatch: Mcp-Name header value 'foo' does not match body value 'bar'"
  }
}

Greșeli frecvente și bune practici

  • Pornești un server HTTP local pe 0.0.0.0 fără validarea Origin. Orice pagină web deschisă în browser poate ajunge la el prin DNS rebinding.
  • Rutezi sau limitezi rata după antetele Mcp-* fără să verifici că serverul le validează. Intermediarii ar trebui să respingă cererile cu versiuni mai vechi sau fără antet de versiune, în loc să aibă încredere în valori nevalidate.
  • Te bazezi pe cacheScope ca să ascunzi date. Specificația cere control de acces separat pentru fiecare primitivă.

Comenzi înrudite