notifications/message și logLevel (Logging, depreciat) în Model Context Protocol (MCP)

Protocol și Arhitectură Specificația MCP 2026-07-28 (funcție depreciată)

Mesajele de log structurate trimise de server pentru o cerere care a cerut un nivel de log; funcție depreciată din 2026-07-28.

Specificație & cod MCP
_meta: {"io.modelcontextprotocol/logLevel": "<nivel>"}  →  notifications/message {level, logger, data}

Ce face notifications/message și logLevel (Logging, depreciat)

Logging este depreciat din revizia 2026-07-28 (SEP-2577). Rămâne în specificație cel puțin 12 luni (eliminare posibilă începând cu prima revizie lansată la sau după 2027-07-28), dar implementările noi nu ar trebui să-l adopte. Migrarea recomandată: log pe stderr pentru transportul stdio și OpenTelemetry pentru observabilitate.

Metoda logging/setLevel a fost eliminată. Clientul cere loguri per cerere, punând io.modelcontextprotocol/logLevel în _meta. Serverul nu are voie să trimită notifications/message pentru o cerere fără acest câmp; când câmpul există, poate trimite mesaje de nivel egal sau mai mare pe stream-ul răspunsului la acea cerere, înaintea răspunsului final, niciodată pe un stream subscriptions/listen. Serverele care emit loguri declară capabilitatea logging.

Nivelurile urmează severitățile syslog din RFC 5424. Un nivel nerecunoscut duce la eroarea -32602. Mesajele de log nu trebuie să conțină credențiale, date personale sau detalii interne care ar ajuta un atac; serverele ar trebui să limiteze rata mesajelor.

Sintaxă și opțiuni

Opțiune / Parametru Descriere
debug, info, notice, warning Detalii de depanare, informații generale, evenimente semnificative, avertismente.
error, critical, alert, emergency Erori, defecte critice, acțiune imediată necesară, sistem inutilizabil.
level Severitatea mesajului.
logger Opțional: numele componentei care scrie logul.
data Orice date serializabile JSON.

Exemple practice

Exemplul 1: Mesaj de log trimis de server

{
  "jsonrpc": "2.0",
  "method": "notifications/message",
  "params": {
    "level": "error",
    "logger": "database",
    "data": {
      "error": "Connection failed",
      "details": {
        "host": "localhost",
        "port": 5432
      }
    }
  }
}

Greșeli frecvente și bune practici

  • Apelezi logging/setLevel. Metoda nu mai există; nivelul se trimite în _meta la fiecare cerere.
  • Scrii loguri pe stdout într-un server stdio. Pe stdout au voie doar mesaje MCP valide; folosește stderr.
  • Pui tokenuri sau date personale în data. Specificația interzice asta explicit.

Comenzi înrudite