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_metala fiecare cerere. - Scrii loguri pe
stdoutîntr-un server stdio. Pestdoutau voie doar mesaje MCP valide; foloseștestderr. - Pui tokenuri sau date personale în
data. Specificația interzice asta explicit.