elicitation/create (Elicitation) în Model Context Protocol (MCP)

Arhitectură & Primitivele Protocolului Specificația MCP 2026-07-28

Cererea prin care un server MCP obține date de la utilizator, printr-un formular cu schemă sau printr-un URL deschis în afara clientului.

Specificație & cod MCP
{"method": "elicitation/create", "params": {"mode": "form" | "url", "message": "...", "requestedSchema" | "url": ...}}

Ce face elicitation/create (Elicitation)

Elicitarea permite serverului să ceară informații utilizatorului în timp ce procesează o cerere. În revizia 2026-07-28, elicitation/create vine în inputRequests al unui InputRequiredResult, iar răspunsul clientului (ElicitResult) se întoarce în inputResponses la reîncercare. Clientul declară capabilitatea elicitation cu modurile form și/sau url; un obiect gol înseamnă doar form. Serverul nu trimite cereri într-un mod nesuportat.

Modul form (implicit dacă lipsește mode) colectează date structurate prin requestedSchema, un subset restrâns de JSON Schema: un obiect plat cu proprietăți primitive (string cu formatele email, uri, date, date-time; number sau integer; boolean; enum cu selecție simplă sau multiplă). Serverele nu au voie să ceară prin form parole, chei API, tokenuri de acces sau date de plată. Modul url (introdus în 2025-11-25) trimite utilizatorul la un URL pentru interacțiuni sensibile care nu trebuie să treacă prin client: introducerea unei chei, o autorizare OAuth la un serviciu terț, o plată.

Răspunsul are action: accept, decline sau cancel; content apare doar la accept în modul form. În modul url, accept înseamnă doar consimțământul de a deschide URL-ul; la reîncercare, serverul decide din requestState sau din starea proprie dacă interacțiunea s-a terminat. Notificarea notifications/elicitation/complete și câmpul elicitationId din 2025-11-25 au fost eliminate în 2026-07-28. Modul url nu servește la autorizarea clientului la serverul MCP; pentru asta există autorizarea MCP.

Sintaxă și opțiuni

Opțiune / Parametru Descriere
mode form sau url. Fără câmp, cererea este în modul form.
message Text explicativ pentru utilizator: de ce este nevoie de interacțiune. Obligatoriu.
requestedSchema Doar în modul form: schema obiectului așteptat, cu proprietăți primitive.
url Doar în modul url: adresa pe care utilizatorul o deschide. Trebuie să fie un URL valid.
action accept (a trimis), decline (a refuzat explicit), cancel (a închis fără să aleagă).
content Datele trimise, conforme cu schema. Lipsește în modul url.
capabilitate elicitation {"form": {}, "url": {}} în clientCapabilities; {} echivalează cu doar form.

Exemple practice

Exemplul 1: Formular cu date de contact

Cererea din inputRequests; clientul afișează un formular generat din schemă.

{
  "method": "elicitation/create",
  "params": {
    "mode": "form",
    "message": "Please provide your contact information",
    "requestedSchema": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Your full name"
        },
        "email": {
          "type": "string",
          "format": "email",
          "description": "Your email address"
        },
        "age": {
          "type": "number",
          "minimum": 18,
          "description": "Your age"
        }
      },
      "required": ["name", "email"]
    }
  }
}

Exemplul 2: Răspunsul clientului la reîncercare

{
  "action": "accept",
  "content": {
    "name": "Monalisa Octocat",
    "email": "octocat@github.com",
    "age": 30
  }
}

Exemplul 3: Mod url pentru o cheie API

Clientul arată URL-ul complet, cere consimțământul și îl deschide astfel încât nici clientul, nici LLM-ul să nu vadă ce introduce utilizatorul.

{
  "method": "elicitation/create",
  "params": {
    "mode": "url",
    "url": "https://mcp.example.com/ui/set_api_key",
    "message": "Please provide your API key to continue."
  }
}

Greșeli frecvente și bune practici

  • Ceri parole sau chei API prin modul form. Specificația interzice asta; folosește modul url.
  • Tratezi accept din modul url ca pe o confirmare că utilizatorul a terminat. Este doar consimțământul de navigare; verifică finalizarea la reîncercare.
  • Deschizi automat URL-ul sau îl preîncarci. Clientul nu are voie să facă asta fără consimțământ explicit și trebuie să arate URL-ul complet înainte.

Comenzi înrudite